Kerasでチェックポイントから重みを読み込み、Pythonでモデルを再評価する方法
TensorFlowはGoogleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションの実装など、幅広い用途に活用されています。研究用途から本番環境まで、多くの場面で採用されている実績のあるフレームワークです。
Windows環境では、以下のコマンドで「tensorflow」パッケージをインストールできます。
pip install tensorflow
テンソル(Tensor)はTensorFlowで使用される基本的なデータ構造です。データフローグラフと呼ばれるフロー図において、エッジ(辺)同士をつなぐ役割を担います。テンソルとは多次元配列またはリストのことであり、主に以下の3つの属性によって識別されます。
ランク(Rank) − テンソルの次元数を表します。テンソルの階数、すなわち定義されたテンソルが持つ次元の数と考えることができます。
型(Type) − テンソルの要素に関連付けられたデータ型を表します。1次元、2次元、あるいはn次元のテンソルが存在します。
形状(Shape) − 行数と列数を合わせたものです。
Kerasはギリシャ語で「角(つの)」を意味します。KerasはONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System:開放型神経電子知的ロボットオペレーティングシステム)プロジェクトの研究の一環として開発されました。Pythonで書かれたディープラーニングAPIであり、機械学習の問題解決を支援する生産性の高いインターフェースを持つ高水準APIです。TensorFlowフレームワーク上で動作し、迅速な実験を支援する目的で設計されています。機械学習ソリューションの開発とカプセル化に不可欠な抽象化機能と構成要素を提供します。
KerasはTensorFlowパッケージにすでに含まれているため、以下のコードで簡単に利用できます。
import tensorflow from tensorflow import keras
以下のコードはGoogle Colaboratoryで実行しています。Google Colab(Colaboratory)はブラウザ上でPythonコードを実行できるサービスで、事前の設定が一切不要であり、GPU(グラフィックス処理装置)にも無料でアクセス可能です。Jupyter Notebookをベースに構築されています。コードは以下の通りです。
実装例
print("重みをロードします")
model.load_weights(checkpoint_path)
print("モデルを再評価します")
loss, acc = model.evaluate(test_images, test_labels, verbose=2)
print("復元されたモデルの精度: {:5.3f}%".format(100 * acc))
コード出典 − https://www.tensorflow.org/tutorials/keras/save_and_load
出力結果
重みをロードしました モデルを再評価しています 32/32 - 0s - loss: 0.4066 - sparse_categorical_accuracy: 0.8740 復元されたモデルの精度: 87.400%
解説
この新しいモデルに対して、保存しておいた重みをマッピング(適用)します。
「evaluate」メソッドを使用することで、モデルが未知の新しいデータに対してどの程度正確に機能するかを確認できます。
あわせて、モデルのトレーニング時の損失(loss)とモデルの精度(accuracy)の両方が算出されます。
算出された損失と精度の値は、コンソールに出力されます。
-
Kerasを使ってPythonでモデルをプロットする方法をわかりやすく解説
TensorFlowとはTensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで対応しており、複雑な数値計算を高速に実行するための最適化技術が数多く組み込まれています。TensorFlowにおける「テンソル(Tensor)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ
-
Kerasでモデルをグラフとしてプロットし、Pythonで入出力の形状を表示する方法
TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境まで対応しており、複雑な数値計算を高速に実行するための最適化技術も備えています。TensorFlowにおける「テンソル」とは、データを扱うための基本的なデータ構造です。テンソルはフロー図の中でエッジ(辺)をつなぐ役割を果たし、このフロー図は「データフローグラフ」と呼ばれます。テンソルの正体は、多次元配列あるいはリストにほかなりません。