TensorFlowとPythonを使ってCNNモデルを評価する方法
畳み込みニューラルネットワーク(CNN)の評価は、evaluateメソッドを使用して行うことができます。このメソッドは、テストデータ(テスト画像とテストラベル)を引数として受け取り、モデルの損失(loss)と精度(accuracy)を算出します。
CNNと画像認識
畳み込みニューラルネットワークは、画像認識のような特定の種類の問題において、非常に優れた結果をもたらすことで知られています。画像の空間的な特徴を効率的に抽出できるため、コンピュータビジョンの分野で広く活用されています。
なお、本記事のコードはGoogle Colaboratory上で実行しています。Google Colab(Colaboratory)はブラウザ上でPythonコードを実行できるサービスで、環境構築が不要であり、GPU(グラフィックス処理ユニット)にも無料でアクセスできます。ColaboratoryはJupyter Notebookをベースに構築されています。
精度とエポックの関係を可視化する
モデルの評価を行う前に、matplotlibライブラリを使用して、学習過程における精度とエポックの関係をグラフとして描画します。これにより、モデルが学習とともにどのように改善しているかを視覚的に確認できます。
print("Plotting accuracy versus epoch")
plt.plot(history.history['accuracy'], label='accuracy')
plt.plot(history.history['val_accuracy'], label = 'val_accuracy')
plt.xlabel('Epoch')
plt.ylabel('Accuracy')
plt.ylim([0.5, 1])
plt.legend(loc='lower right')
print("The model is being evaluated")
test_loss, test_acc = model.evaluate(test_images,test_labels, verbose=2)
print("The accuracy of the model is:")
print(test_acc)コード出典:https://www.tensorflow.org/tutorials/images/cnn
実行結果
Plotting accuracy versus epoch The model is being evaluated 313/313 - 3s - loss: 0.8884 - accuracy: 0.7053 The accuracy of the model is: 0.705299973487854
コードの解説
- まず、エポックごとの精度(accuracy)と検証用データに対する精度(val_accuracy)の推移をmatplotlibライブラリを使って可視化します。
- 次に、
model.evaluate()メソッドにテスト画像とテストラベルを渡してモデルを評価し、損失と精度を求めます。 - verbose=2を指定することで、評価の進行状況が簡潔な形式で表示されます。
この例では、テストデータに対する最終的な精度は約70.5%という結果が得られました。評価結果を確認することで、モデルが未知のデータに対してどの程度汎化できているかを把握することができます。
-
TensorFlowとPythonで線形モデルをトレーニングする方法を解説
TensorFlowとは TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて各種アルゴリズムやディープラーニングアプリケーションなどを実装できます。研究用途だけでなく、本番環境(プロダクション)でも幅広く利用されています。 TensorFlowのインストール方法 Windows環境では、以下のコマンドを実行するだけで「tensorflow」パッケージをインストールできます。 pip install tensorflow テンソル(Tensor)とは何か テンソルはTensorFlowにおける基本的なデータ
-
Kerasを使ってPythonでモデルをプロットする方法をわかりやすく解説
TensorFlowとはTensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで対応しており、複雑な数値計算を高速に実行するための最適化技術が数多く組み込まれています。TensorFlowにおける「テンソル(Tensor)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ