TensorFlowとPythonでデータをモデルに適合させる方法:fitメソッドの基本
TensorFlowでは、「fit」メソッドを使用することで、データをモデルに適合させることができます。本記事では、転移学習を活用した画像分類モデルの構築を例に、fitメソッドの基本的な使い方を解説します。
転移学習とは何か
少なくとも1つの畳み込み層(Convolutional Layer)を含むニューラルネットワークは、畳み込みニューラルネットワーク(CNN)と呼ばれ、学習モデルの構築に広く活用されています。
画像分類における転移学習(Transfer Learning)の考え方は、「大規模で汎用的なデータセットで学習済みのモデルは、視覚世界における汎用モデルとして効果的に機能する」というものです。このようなモデルはすでに特徴マップ(Feature Maps)を学習しているため、ユーザーは大規模なデータセットを使って大規模なモデルをゼロから訓練する必要がありません。
TensorFlow Hubの活用
TensorFlow Hubは、事前学習済みのTensorFlowモデルを集めたリポジトリです。TensorFlow Hubから取得したモデルは、tf.kerasと組み合わせてファインチューニング(微調整)に利用できます。
具体的には、以下のような流れになります。
- TensorFlow Hubから画像分類モデルを取得する
- 事前学習済みの分類器を使って、画像を入力し分類結果を予測する(追加の訓練は不要)
- その後、転移学習によってカスタム画像クラス向けにモデルを微調整する
実行環境について
本記事のコードはGoogle Colaboratory(Google Colab)で実行しています。Google Colabはブラウザ上でPythonコードを実行できる環境で、面倒な設定が一切不要であり、GPU(グラフィックス処理装置)にも無料でアクセスできます。ColaboratoryはJupyter Notebookをベースに構築されています。
コード例
print("Training for 2 epochs only")
class CollectBatchStats(tf.keras.callbacks.Callback):
def __init__(self):
self.batch_losses = []
self.batch_acc = []
def on_train_batch_end(self, batch, logs=None):
self.batch_losses.append(logs['loss'])
self.batch_acc.append(logs['acc'])
self.model.reset_metrics()
batch_stats_callback = CollectBatchStats()
print("The fit method is called")
history = model.fit(train_ds, epochs=2,
callbacks=[batch_stats_callback])コード出典:https://www.tensorflow.org/tutorials/images/transfer_learning_with_hub
実行結果
Training for 2 epochs only The fit method is called Epoch 1/2 92/92 [==============================] - 88s 919ms/step - loss: 0.7155 - acc: 0.7460 Epoch 2/2 92/92 [==============================] - 85s 922ms/step - loss: 0.3694 - acc: 0.8754
コードの解説
- fitメソッドによる訓練: モデルの訓練には .fit メソッドを使用します。引数として訓練用データセット(train_ds)とエポック数を指定します。
- エポック数を2に設定: 訓練時間を短く抑えるため、ここではわずか2エポックのみで訓練を行っています。
- カスタムコールバックの活用: データを可視化するために独自のコールバッククラス(CollectBatchStats)を定義し、バッチごとの損失(loss)と精度(acc)を個別に記録しています。
実行結果を見ると、エポック1では損失0.7155・精度74.60%だったのが、エポック2では損失0.3694・精度87.54%まで改善しており、fitメソッドによってモデルが効率的に学習できていることが確認できます。
-
PythonとKerasを使ってモデル全体を保存・再利用する方法を徹底解説
TensorFlowとKerasとはTensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、各種アルゴリズムやディープラーニングアプリケーションの実装が可能になります。研究用途から本番環境まで幅広く活用されています。KerasはPythonで書かれたディープラーニングAPIです。高水準APIとして設計されており、生産性の高いインターフェースによって機械学習の問題を効率的に解決できます。TensorFlowフレームワーク上で動作し、素早い実験・試行を支援するために開発されました。高いスケーラビリティと
-
Kerasを使ってPythonでモデルをプロットする方法をわかりやすく解説
TensorFlowとはTensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで対応しており、複雑な数値計算を高速に実行するための最適化技術が数多く組み込まれています。TensorFlowにおける「テンソル(Tensor)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ