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

TensorFlowで花のデータセットをパフォーマンス向上のために構成する方法

花(flower)データセットを使ってモデルを作成すると、一定の精度が得られます。しかし、モデルのパフォーマンスをさらに最適化したい場合は、「バッファ付きプリフェッチ(prefetch)」と「Rescaling(リスケーリング)レイヤー」を組み合わせて使用します。リスケーリングレイヤーは、Kerasモデルの一部として組み込むことで、データセットに対して適用されます。

使用するデータセットについて

本記事では、数千枚の花の画像を含む「flowers データセット」を使用します。このデータセットには5つのサブディレクトリが含まれており、各クラス(花の種類)ごとに1つのサブディレクトリが割り当てられています。

以下のコードは Google Colaboratory 上で実行することを想定しています。Google Colab(Colaboratory)はブラウザ上でPythonコードを実行できる環境であり、事前設定は一切不要で、GPU(グラフィックス処理装置)にも無料でアクセスできます。Colaboratoryは Jupyter Notebook をベースに構築されています。

コード例

AUTOTUNE = tf.data.AUTOTUNE

train_ds = train_ds.cache().prefetch(buffer_size=AUTOTUNE)
val_ds = val_ds.cache().prefetch(buffer_size=AUTOTUNE)

num_classes = 5
print("A sequential model is built")
model = tf.keras.Sequential([
    layers.experimental.preprocessing.Rescaling(1./255),
    layers.Conv2D(32, 3, activation='relu'),
    layers.MaxPooling2D(),
    layers.Conv2D(32, 3, activation='relu'),
    layers.MaxPooling2D(),
    layers.Conv2D(32, 3, activation='relu'),
    layers.MaxPooling2D(),
    layers.Flatten(),
    layers.Dense(128, activation='relu'),
    layers.Dense(num_classes)
])

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

実行結果

A sequential model is built

コードの解説

  • バッファ付きプリフェッチ: ディスクからデータを読み込む際にI/O処理がブロッキングされることなく、データを供給できるようにします。これはデータ読み込みにおいて非常に重要なステップです。
  • .cache() メソッド: 最初のエポックでディスクから画像を読み込んだ後、その画像をメモリ上に保持します。これにより、モデルの学習中にデータセットがボトルネックになることを防ぎます。
  • 大規模データセットへの対応: データセットが大きすぎてメモリに収まらない場合でも、同じメソッドを使って高性能なオンディスクキャッシュを作成できます。
  • .prefetch() メソッド: 学習中に、データの前処理とモデルの実行をオーバーラップ(並行処理)させることで、全体のトレーニング時間を短縮します。

これらの最適化手法を組み合わせることで、tf.data パイプラインの効率が大幅に向上し、GPUやTPUなどのアクセラレータを最大限に活用した高速な学習が可能になります。

  1. TensorFlowとPythonを使って花のデータセットを可視化する方法

    花のデータセットは、matplotlibライブラリを使用することで簡単に可視化できます。imshowメソッドを使うと、画像をコンソール上に表示でき、データセット全体を反復処理しながら最初の数枚の画像だけを出力するといったことも可能です。使用するデータセットについて本記事では、数千枚の花の画像を含む「flowers(花)」データセットを使用します。このデータセットには5つのサブディレクトリが含まれており、各クラス(花の種類)ごとに1つのサブディレクトリが割り当てられています。なお、以下のコードはGoogle Colaboratoryで実行することを想定しています。Google Colab(Col

  2. TensorFlowを使ってMNISTデータセット用のモデルを定義する方法

    TensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、各種アルゴリズムやディープラーニングアプリケーションの実装が可能になります。複雑な数値計算を高速に処理できる最適化技術を備えているのが特徴で、これは内部でNumPyと多次元配列を利用しているためです。この多次元配列は「テンソル(Tensor)」とも呼ばれます。また、深層ニューラルネットワークの構築もサポートしています。TensorFlowのインストールWindows環境に「tensorflow」パッケージをインストールするには、以下のコマン