Python
 Computer >> コンピューター >  >> プログラミング >> Python

PythonでKerasを使ってモデルを保存・シリアライズする方法を徹底解説

TensorFlowはGoogleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装できます。研究用途から本番環境まで幅広く利用されています。

Windowsに「tensorflow」パッケージをインストールするには、以下のコマンドを実行します。

pip install tensorflow

Tensorとは何か

テンソル(Tensor)はTensorFlowにおける基本的なデータ構造です。フロー図(データフローグラフ)内のエッジをつなぐ役割を担います。テンソルは多次元配列またはリストと考えることができ、以下の3つの主要な属性で識別されます。

  • ランク(Rank):テンソルの次元数を表します。テンソルの階数、つまり定義された次元の数として理解できます。
  • 型(Type):テンソルの各要素に関連付けられたデータ型を示します。1次元、2次元、n次元のいずれの場合もあります。
  • 形状(Shape):行数と列数の組み合わせを表します。

Kerasとは何か

KerasはPythonで書かれたディープラーニングAPIです。機械学習の問題を効率的に解決するための高水準APIであり、生産性の高いインターフェースを備えています。TensorFlowフレームワーク上で動作し、迅速な実験を支援するために設計されました。機械学習ソリューションの開発とカプセル化に不可欠な抽象化機能とビルディングブロックを提供します。

Kerasは高いスケーラビリティとクロスプラットフォーム対応力を持っています。そのため、TPUやGPUクラスタ上でも実行可能です。さらに、KerasモデルはWebブラウザやモバイルデバイス向けにエクスポートすることもできます。

KerasはTensorFlowパッケージにすでに含まれており、以下のコードでアクセスできます。

import tensorflow
from tensorflow import keras

Kerasの関数型APIについて

Kerasの関数型API(Functional API)を使うと、シーケンシャルAPIで作成したモデルよりも柔軟なモデルを構築できます。非線形トポロジーを持つモデルやレイヤーの共有、複数の入力と出力を持つモデルにも対応しています。一般的にディープラーニングモデルは複数のレイヤーを含む有向非巡回グラフ(DAG)であり、関数型APIはこのレイヤーグラフの構築を支援します。

以降のコードはGoogle Colaboratoryで実行しています。Google Colab(Colaboratory)を使うと、ブラウザ上でPythonコードを実行でき、設定は一切不要でGPU(グラフィックス処理ユニット)にも無料でアクセスできます。ColaboratoryはJupyter Notebookをベースに構築されています。

以下が、Kerasを使用してPythonでモデルを保存およびシリアライズするコード例です。

コード例

print("Save the model to a file")
model.save("path_to_my_model")
print("Delete the model")
del model
print("Recreating the model from the saved model")
model = keras.models.load_model("path_to_my_model")

コード出典:https://www.tensorflow.org/guide/keras/functional

実行結果

INFO:tensorflow:Assets written to: path_to_my_model/assets
Delete the model
Recreating the model from the saved model

コードの解説

  • まず「save」メソッドを使って、モデルを指定したパスのファイルに保存します。
  • 次に「del」でメモリ上のモデルを削除します。これにより、保存済みのモデルから再作成できることを確認できます。
  • 最後に「load_model」メソッドを使って、ファイルに保存されたモデルを読み込み、モデルを復元します。

このように、Kerasではわずか数行のコードでモデルの保存・削除・再読み込みが完結します。学習済みモデルを再利用したい場合や、推論環境へデプロイする際に非常に便利な機能なので、ぜひ活用してみてください。

  1. Kerasを使ってPythonでモデルをプロットする方法をわかりやすく解説

    TensorFlowとはTensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで対応しており、複雑な数値計算を高速に実行するための最適化技術が数多く組み込まれています。TensorFlowにおける「テンソル(Tensor)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ

  2. Kerasでモデルをグラフとしてプロットし、Pythonで入出力の形状を表示する方法

    TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境まで対応しており、複雑な数値計算を高速に実行するための最適化技術も備えています。TensorFlowにおける「テンソル」とは、データを扱うための基本的なデータ構造です。テンソルはフロー図の中でエッジ(辺)をつなぐ役割を果たし、このフロー図は「データフローグラフ」と呼ばれます。テンソルの正体は、多次元配列あるいはリストにほかなりません。