これまでに収集したものから、TensorFlowグラフをファイルにダンプして別のプログラムにロードする方法はいくつかありますが、それらがどのように機能するかについての明確な例や情報を見つけることができませんでした。私がすでに知っているのはこれです:
- a
tf.train.Saver()
を使用してモデルの変数をチェックポイントファイル(.ckpt)に保存し、後で復元する(ソース) - モデルを.pbファイルに保存し、
tf.train.write_graph()
andtf.import_graph_def()
(source) - .pbファイルからモデルを読み込み、再トレーニングして、Bazel(ソースを使用して新しい.pbファイルにダンプします)
- グラフをフリーズして、グラフと重みを一緒に保存します(ソース)
as_graph_def()
モデルを保存するために使用し、重み/変数については、それらを定数にマッピングします(ソース)
ただし、これらのさまざまな方法に関するいくつかの質問を解決することはできませんでした。
- チェックポイントファイルについては、モデルのトレーニング済みの重みのみを保存しますか?チェックポイントファイルを新しいプログラムにロードして、モデルを実行するために使用できますか、それとも、特定の時間/段階でモデルの重みを保存する方法として機能するだけですか?
- について
tf.train.write_graph()
、重み/変数も保存されますか? - Bazelに関しては、再トレーニングのために.pbファイルにのみ保存/ロードできますか?グラフを.pbにダンプするだけの簡単なBazelコマンドはありますか?
- フリーズに関して、フリーズされたグラフを使用してロードできますか
tf.import_graph_def()
ますか? - TensorFlowのAndroidデモは、.pbファイルからGoogleのInceptionモデルに読み込まれます。自分の.pbファイルを置き換えたい場合は、どうすればよいですか?ネイティブコード/メソッドを変更する必要がありますか?
- 一般的に、これらすべての方法の違いは何ですか?より広義には、
as_graph_def()
/。ckpt / .pb の違いは何ですか?
要するに、私が探しているのは、グラフ(さまざまな操作など)とその重み/変数の両方をファイルに保存する方法です。これを使用して、グラフと重みを別のプログラムにロードできます。 、使用するため(必ずしも継続/再トレーニングではない)。
このトピックに関するドキュメントは簡単ではないので、回答や情報があれば大歓迎です。