保存機能を呼び出すと、モデルのトレーニングに使用していたtf.Sessionが渡されます。これには、すべての変数を含むグラフへの参照が含まれています。 Python変数とテンソルフロー変数を混同しないでください。あなたが作成したテンソルフロー変数を指すPythonの変数をもはや持っていなくても、それが計算グラフの一部であればそれはまだ存在します。モデルを作成した後、次のコードを実行してみてください。
for v in tf.all_variables():
print(v.name)
作成したすべての変数の名前が表示されます。セーバーは、デフォルトでこれらのすべてを保存します。変数を復元するときに変数の名前が同じであれば、作成された場所は関係ありません。すべての変数がモデルに追加されたら、リストアを必ず実行してください。変数に初期化子を渡すと、sess.run(tf.initialize_all_variables())
を呼び出すときにのみ初期化が実行されます。値を復元するだけの場合は、これを呼び出す必要はありません。私はしばしば次のコードを使用します。私はそれらの内部変数を作成thensorflow RNNクラスを使用していたときに
sess = tf.Session()
saver = tf.train.Saver()
if 'restore' in sys.argv:
saver.restore(sess, '/media/chase/98d61322-9ea7-473e-b835-8739c77d1e1e/model.chk')
else:
sess.run(tf.initialize_all_variables())
このコードは正常に動作します。