ディープ ニューラル ネットワーク モデルの複雑さが非常に高い場合、保有するデータの量、モデルを実行しているハードウェアなどに応じて、トレーニングにかなりの時間がかかることがあります。ほとんどの場合、中断した(またはミスをした)場合でもミスなく中断したところから続行できるように、ファイルを保存して実験の安定性を確保する必要があります。 さらに重要なのは、TensorFlow のようなディープラーニング フレームワークでは、トレーニングが成功した後、モデルの学習したパラメータを再利用して新しいデータに対する予測を行う必要があることです。
この記事では、TensorFlow モデルを保存および復元する方法について説明します。最も便利な方法を紹介し、いくつかの例を示します。 1. まずTensorFlowモデルを簡単に紹介します TensorFlow の主な機能は、NumPy の多次元配列に似たテンソルを通じて基本的なデータ構造を伝達し、グラフがデータ計算を表すことです。これはシンボリック ライブラリであり、グラフとテンソルを定義するとモデルのみが作成され、具体的な値の取得とテンソルの操作はセッションで実行され、グラフ内でモデリング操作を実行するためのメカニズムです。セッションが閉じられるとテンソルの具体的な値はすべて失われます。これが、セッションの実行後にモデルをファイルに保存するもう 1 つの理由です。 例を見たほうが理解しやすいので、2 次元データの線形回帰用の簡単な TensorFlow モデルを作成しましょう。 まず、ライブラリをインポートします。
次のステップはモデルを作成することです。次の形式で、二次関数の水平方向と垂直方向の変位を推定するモデルを生成します。
ここで、h は水平方向の変化、v は垂直方向の変化です。 モデルの生成方法は次のとおりです (詳細についてはコード内のコメントを参照してください)。
モデルを作成するプロセスでは、セッションでモデルを実行し、実際のデータを渡す必要があります。いくつかの二次データを生成し、それにノイズを追加します。
2. セーバークラス Saver クラスは TensorFlow ライブラリによって提供されるクラスです。グラフ構造と変数を保存するのに最適な方法です。 (1)モデルを保存する 次のコード行では、Saver オブジェクトを定義し、train_graph() 関数で 100 回の反復にわたってコスト関数を最小化します。次に、各反復と最適化が完了したら、モデルをディスクに保存します。ディスク上に作成される各保存は、「チェックポイント」と呼ばれるバイナリ ファイルと呼ばれます。
それでは、上記の関数を使用してモデルをトレーニングし、トレーニングされたパラメータを出力してみましょう。
はい、パラメータは非常に正確です。ファイル システムを確認すると、最終モデルだけでなく、最後の 4 回の反復から保存されたファイルがあります。 モデルを保存するときに、保存に必要なファイルが 4 種類あることに気付くでしょう。
図1: ディスクに保存されたチェックポイントファイル すべての変数をファイルに保存するには、上記のように tf.train.Saver() メソッドを呼び出します。変数のサブセットをリストまたは辞書として渡して保存します。例: tf.train.Saver({'hor_estimate': h_est})。 プロセス全体を制御できる Saver コンストラクターのその他の便利なパラメーターは次のとおりです。
TensorFlow モデルを復元するときに最初に行うことは、「.meta」ファイルから現在のグラフにグラフ構造を読み込むことです。
tf.get_default_graph() を使用して現在のグラフを探索することもできます。 2 番目のステップは、変数の値をロードすることです。注意: 値はセッション内にのみ存在します。
前述したように、このアプローチではグラフ構造と変数のみが保存されるため、プレースホルダー「X」と「Y」を通じて入力されたトレーニング データは保存されません。 とにかく、この例では、定義したトレーニング データ tf を使用して、モデルの適合を視覚化します。
Saver クラスを使用すると、TensorFlow モデル (グラフと変数) をファイルに簡単に保存および復元したり、作業の複数のチェックポイントを保存したりできるため、トレーニング中にモデルを微調整するのに役立ちます。 4. SavedModel 形式 TensorFlow でモデルを保存および復元する新しい方法は、SavedModel、Builder、および loader 関数を使用することです。このメソッドは、実際には Saver によって提供される高レベルのシリアル化であり、ビジネス目的に適しています。 この SavedModel アプローチは開発者に完全に受け入れられているようには見えませんが、作成者は「これは明らかに未来だ」と述べています。主に変数に焦点を当てた Saver クラスと比較して、SavedModel は、Signatures (入力と出力のセットを含むグラフを保存できるようにする) や Assets (初期化に使用される外部ファイルを含む) など、いくつかの便利な機能を 1 つのパッケージに含めるようにしています。 (1) SavedModel Builderを使用してモデルを保存する 次に、SavedModelBuilder クラスを使用してモデルを保存してみます。この例では、シンボルは使用していませんが、プロセスを説明するには十分です。
このコードを実行すると、モデルが「./SavedModel/saved_model.pb」にあるファイルに保存されていることがわかります。 (2)SavedModel Loaderプログラムを使用してモデルを復元する モデルの復元では tf.saved_model.loader が使用され、セッション スコープに保存された変数とシンボルを復元できます。 次の例では、モデルをロードし、2 つの係数 (h_est と v_est) の値を出力します。値は予想どおりで、モデルは正常に回復されました。
5. 結論 ディープラーニング ネットワークのトレーニングに長い時間がかかる可能性がある場合は、TensorFlow モデルの保存と復元が非常に役立ちます。このトピックは範囲が広すぎるため、1 つのブログ投稿で詳細を説明することはできません。とにかく、この投稿では、Saver と SavedModel ビルダー/ローダーという 2 つのツールを紹介し、ファイル構造を作成し、単純な線形回帰を使用して例を説明しました。これらが、より優れたニューラル ネットワーク モデルのトレーニングに役立つことを願っています。 |
<<: リソースインベントリ: 便利な自動データサイエンスおよび機械学習ソフトウェア
>>: 第一回美団クラウド人工知能サミットが開幕、エコパートナーと協力して最もオープンなAIプラットフォームを構築
共有は主に次の 5 つのポイントを中心に行われます。リスク管理センターの設計背景戦略のフルサイクル管...
Kubermatic Kubernetes プラットフォームを使用して、画像認識予測用のディープラー...
ブロックチェーンと人工知能は、現在最もホットなテクノロジートレンドの 2 つです。これら 2 つの技...
[[406332]]米議会は火曜日、連邦法執行機関やその他の機関による顔認識技術の使用を禁止する法案...
メタの株価は木曜日の時間外取引で14%近く上昇し、史上最高値に達したが、同社は初の配当を発表した。最...
[51CTO.comからのオリジナル記事] 現在、人工知能はセキュリティ、金融などのサブセクターを強...
人工知能は世界を変えようとしていますが、問題は、それがどのように起こるのか誰も正確には知らないことで...
2018年、中国政府による関連支援政策の導入とインテリジェント製造プロセスの推進により、わが国のイ...
人工知能 (AI) は、マーケティングと広告のダイナミックな環境において変革をもたらす力として登場し...
世界経済フォーラムが最近発表した報告書によると、2025年までに世界の仕事の半分はロボットによって行...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
たとえば、私が 25 年以上携わってきた市場調査業界を考えてみましょう。 AI は、さまざまな方法で...