Python
 Computer >> コンピューター >  >> プログラミング >> Python

TensorFlowを使って花のデータセットを訓練データと検証データに分割する方法

花のデータセットは、Kerasの前処理APIが提供する「image_dataset_from_directory」ユーティリティを使用することで、訓練データと検証データに簡単に分割できます。この関数は引数として検証データの割合(validation_split)を指定できるため、ディレクトリ内の画像を自動的に振り分けてくれます。

関連記事: TensorFlowとは何か?KerasがTensorFlowと連携してニューラルネットワークを構築する仕組み

画像分類モデルとデータセットの概要

本チュートリアルでは、keras.Sequentialモデルを用いて画像分類器を作成し、preprocessing.image_dataset_from_directoryを使ってデータを読み込みます。データはディスクから効率的にロードされ、過学習(オーバーフィッティング)の検出と対策も行います。過学習への対策としては、データ拡張(Data Augmentation)やドロップアウト(Dropout)といった手法が挙げられます。

使用するデータセットには約3,700枚の花の画像が含まれており、5つのサブディレクトリ(クラスごとに1つずつ)に分かれています。クラスは「daisy(デイジー)」「dandelion(タンポポ)」「roses(バラ)」「sunflowers(ひまわり)」「tulips(チューリップ)」の5種類です。

以下のコードはGoogle Colaboratory上で実行しています。Google Colab(Colaboratory)はブラウザ上でPythonコードを実行できる環境であり、面倒な設定は一切不要で、GPUにも無料でアクセスできます。Jupyter Notebookをベースに構築されています。

コード例:データセットの分割

batch_size = 32
img_height = 180
img_width = 180
print("The data is being split into training and validation set")
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
    data_dir,
    validation_split=0.2,
    subset="training",
    seed=123,
    image_size=(img_height, img_width),
    batch_size=batch_size)

コード出典:https://www.tensorflow.org/tutorials/images/classification

実行結果

The data is being split into training and validation set
Found 3670 files belonging to 5 classes.
Using 2936 files for training.

コードの解説

  • 画像は「image_dataset_from_directory」ユーティリティを使ってディスクから直接読み込まれます。
  • これにより、ディスク上の画像ディレクトリからtf.data.Dataset形式へと変換されます。
  • データのダウンロード後、ローダー用のパラメータ(画像サイズ、バッチサイズなど)を定義します。
  • validation_split=0.2を指定することで、データ全体の20%が検証用に確保され、残り80%が訓練用として分割されます。seedを固定することで、再現性のある分割が可能になります。
  1. TensorFlowでMNISTデータセットのモデル重みを保存・読み込みする方法

    TensorFlowはGoogleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションの実装に広く活用されています。研究用途から本番環境まで対応しており、複雑な数値計算を高速に実行するための最適化技術を備えているのが特徴です。これは内部でNumPyと多次元配列を使用しているためで、この多次元配列は「テンソル(tensor)」と呼ばれます。TensorFlowパッケージは、Windows環境では以下のコマンドでインストールできます。pip install tensorflowテンソルとはテンソルはTe

  2. TensorFlowとPythonでIMDBデータセットの学習精度・検証精度をグラフ化する方法

    TensorFlowはGoogleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、各種アルゴリズムやディープラーニングアプリケーションの実装が可能になります。研究用途から本番環境まで幅広く活用されています。TensorFlowのインストールWindows環境では、以下のコマンドを実行するだけで「tensorflow」パッケージをインストールできます。pip install tensorflowIMDBデータセットについて「IMDB」データセットには、5万件を超える映画レビューが収録されています。このデータセットは、自然言語処理