TensorFlowと事前学習済みモデルを使ってPythonでデータを可視化する方法
TensorFlowと事前学習済みモデルを組み合わせることで、matplotlibライブラリを使用してデータを簡単に可視化できます。グラフの描画には「plot」メソッドを使い、学習の進捗や精度の推移をコンソール上で確認できます。
関連記事: TensorFlowとは何か?KerasがTensorFlowと連携してニューラルネットワークを構築する仕組み
転移学習(Transfer Learning)の基本
少なくとも1つの畳み込み層(Convolutional Layer)を含むニューラルネットワークは、畳み込みニューラルネットワーク(CNN)と呼ばれ、学習モデルの構築に広く活用されています。
本記事では、事前学習済みネットワークからの転移学習を活用して、猫と犬の画像を分類する方法を解説します。画像分類における転移学習の考え方は、「大規模で汎用的なデータセットで学習されたモデルは、視覚世界における汎用モデルとして効果的に機能する」というものです。このようなモデルはすでに特徴マップ(Feature Map)を学習しているため、ユーザーが大規模なデータセットを使ってゼロから大きなモデルを訓練し直す必要がありません。
関連記事: カスタムモデルを事前学習するにはどうすればよいですか?
実行環境:Google Colaboratory
以下のコードはGoogle Colaboratoryで実行しています。Google Colab(Colaboratory)はブラウザ上でPythonコードを実行できるサービスで、面倒な設定は一切不要。GPU(グラフィックス処理装置)への無料アクセスも可能です。ColaboratoryはJupyter Notebookをベースに構築されています。
コード例
print("Visualizing the data")
plt.figure(figsize=(8, 8))
plt.subplot(2, 1, 1)
plt.plot(acc, label='Training Accuracy')
plt.plot(val_acc, label='Validation Accuracy')
plt.ylim([0.8, 1])
plt.plot([initial_epochs-1,initial_epochs-1], plt.ylim(), label='Start Fine Tuning')
plt.legend(loc='lower right')
plt.title('Training and Validation Accuracy')
plt.subplot(2, 1, 2)
plt.plot(loss, label='Training Loss')
plt.plot(val_loss, label='Validation Loss')
plt.ylim([0, 1.0])
plt.plot([initial_epochs-1,initial_epochs-1], plt.ylim(), label='Start Fine Tuning')
plt.legend(loc='upper right')
plt.title('Training and Validation Loss')
plt.xlabel('epoch')
plt.show()コード出典:https://www.tensorflow.org/tutorials/images/transfer_learning
実行結果
このコードを実行すると、学習および検証の精度(Accuracy)と損失(Loss)の学習曲線が2つのサブプロットとして描画され、ファインチューニング開始時点が縦線で示されます。
解説
トレーニングと検証の精度・損失に関する学習曲線を可視化します。
この可視化は、ファインチューニング(Fine Tuning)の実施後に行われます。
検証損失がトレーニング損失より高くなっている場合、ある程度の過学習(Overfitting)が発生している可能性があります。
この過学習は、トレーニングデータセットが比較的小規模で、元のMobileNet V2のデータセットと類似していることが一因と考えられます。
ファインチューニング完了後、モデルは検証セット上で98%の精度に到達します。
-
TensorFlowとPythonを使ってデータセットを視覚化する方法
ここでは、花のデータセットを使用します。このデータセットは、Googleが提供するAPI経由でダウンロードでき、「get_file」メソッドにAPIのURLを引数として渡すことで、データを開発環境に取得できます。 ダウンロードしたデータは「matplotlib」ライブラリを使って視覚化できます。「imshow」メソッドを使用すると、コンソール上に画像を表示することが可能です。 TensorFlowとKerasの連携 関連記事: TensorFlowとは何か?KerasはどのようにTensorFlowと連携してニューラルネットワークを構築するのか? 本記事ではKeras Sequential
-
Kerasを使ってPythonでモデルをプロットする方法をわかりやすく解説
TensorFlowとはTensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで対応しており、複雑な数値計算を高速に実行するための最適化技術が数多く組み込まれています。TensorFlowにおける「テンソル(Tensor)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ