TensorFlowとPythonで結果をプロットする方法 ― matplotlibによる画像分類結果の可視化
TensorFlowで得られた結果を可視化(プロット)するには、Pythonの定番グラフ描画ライブラリ「matplotlib」と、その imshow メソッドを使用します。本記事では、TensorFlow Hubから取得した事前学習済みモデルによる画像分類の予測結果を、matplotlibでグリッド状に一覧表示する手順をわかりやすく解説します。
畳み込みニューラルネットワーク(CNN)とは
少なくとも1つの畳み込み層(Convolutional Layer)を含むニューラルネットワークは「畳み込みニューラルネットワーク(CNN)」と呼ばれます。CNNを活用することで、画像認識タスクに強い高精度な学習モデルを構築できます。
転移学習(Transfer Learning)の基本的な考え方
画像分類における転移学習の直感的な発想は次のとおりです。大規模かつ汎用的なデータセットで学習済みのモデルは、視覚世界における「汎用モデル」として効果的に機能します。こうしたモデルはすでに特徴マップ(feature maps)を学習しているため、ユーザー側で巨大データセットを使って大規模モデルをゼロから訓練し直す必要がありません。
TensorFlow Hubとは
TensorFlow Hubは、事前学習済みのTensorFlowモデルを集めた公開リポジトリです。ここから取得したモデルをベースに、転移学習によって学習モデルをファインチューニングすることができます。
本記事では、TensorFlow Hubのモデルを tf.keras と組み合わせて利用する方法を紹介し、Hubが提供する画像分類モデルを実際に扱います。さらに、カスタム画像クラスに合わせてモデルを調整する転移学習への応用も可能です。まずは事前学習済みの分類器に入力画像を渡し、何が写っているのかを予測させます。この処理は、追加の訓練を行わずに実行できる点が大きな魅力です。
Google Colaboratoryでの実行環境
以下のコードはGoogle Colaboratory(Google Colab)上で実行しています。Colabを利用すると、ブラウザ上で直接Pythonコードを実行でき、面倒な環境構築は一切不要です。また、GPU(Graphics Processing Unit)へ無料でアクセスできる点も大きな利点です。ColaboratoryはJupyter Notebookを基盤として構築されています。
コード例
print("The results are plotted")
plt.figure(figsize=(10,9))
plt.subplots_adjust(hspace=0.5)
for n in range(30):
plt.subplot(6,5,n+1)
plt.imshow(image_batch[n])
plt.title(predicted_label_batch[n].title())
plt.axis('off')
_ = plt.suptitle("Model predictions")
コード出典:https://www.tensorflow.org/tutorials/images/transfer_learning_with_hub
出力結果


解説
- 30枚の入力画像に対する予測ラベルが、6行×5列のグリッド形式で出力画面にプロットされます。
imshowメソッドで各画像を描画し、titleメソッドで予測ラベルを画像ごとに表示しています。axis('off')を指定することで余計な軸目盛りを非表示にし、見やすいレイアウトに仕上げています。suptitleにより、全体に「Model predictions(モデルの予測結果)」というタイトルが付与されます。
-
Kerasのplot_model関数を使ってモデル構造を可視化する方法【Python】
Kerasはギリシャ語で「角(ホーン)」を意味します。ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System)というプロジェクトの研究の一環として開発された、Pythonで書かれたディープラーニングAPIです。機械学習の問題解決を効率的に行うための、生産性の高いインターフェースを備えた高水準APIとなっています。 KerasはTensorFlowフレームワークの上で動作し、素早く実験を行えるよう設計されています。機械学習ソリューションの開発とカプセル化に不可欠な抽象化機能やビルディングブロックを提供してくれる
-
Kerasを使ってPythonでモデルをプロットする方法をわかりやすく解説
TensorFlowとはTensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで対応しており、複雑な数値計算を高速に実行するための最適化技術が数多く組み込まれています。TensorFlowにおける「テンソル(Tensor)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ