私はTensorFlowの初心者で、現在CNNを訓練しています。Tensorflow:モデルパラメータの保存と復元
モデルで使用されるパラメータを保存するために、私はセーバーを使用していますが、私は、これは自身がモデルで使用されるすべての変数を格納し、に値を復元するのに十分であるかどうかの懸念を持っています再実行訓練されたネットワークで分類/テストを実行するためのプログラム。
TensorFlowが提供する有名な例のMNISTを見てみましょう。
この例では、畳み込みブロックの束があります。畳み込みブロックはすべて、ウェイトを持ち、バイアス変数はプログラムの実行時に初期化されます。
W_conv1 = init_weight([5,5,1,32])
b_conv1 = init_bias([32])
いくつかのレイヤーを処理した後、セッションを作成し、グラフに追加されたすべての変数を初期化します。ここで
sess = tf.Session()
sess.run(tf.initialize_all_variables())
saver = tf.train.Saver()
、それはsaver.saveコードをコメントすることが可能である、等重量、バイアスを、復元するために、トレーニング後saver.restore(SESの、FILE_PATH)によってそれを置き換える、バックパラメータグラフに?これはどうすればいいのでしょうか?
for i in range(1000):
...
if i%500 == 0:
saver.save(sess,"model%d.cpkt"%(i))
私は現在、大規模なデータセットでトレーニングので終了し、トレーニングを再開することは、時間とリソースの無駄であるので、私は、私はトレーニングを開始する前に明確にしてくださいするために誰かを要求しています。
あなたが尋ねていることは少し不明です。 saver.restore(sess、file_path)で置き換えます。 "あなたは訓練された値を保存し、以前の訓練から復元する(復元する)ことは望まないでしょうか? "終了し、トレーニングを再開するのは無駄です"。それは、すべてのトレーニングを終えたらモデルを一度保存することを意味しますか? –
@ Sung Kim:答えは後者の質問にはイエスです。完全な訓練の後でモデルを一度保存するのではなく、保存された値で訓練を再開することは私の意図ではありません。 Matlabでは、これは非常に簡単で、実際にはPythonをプログラミングするのは初めてで、TensorFlowを使用しているので、パラメータを保存する他のエレガントな方法があるかどうかわかりません。 –