私がしたいのは、複数のトレーニング済みTensorflowネットを同時に実行することです。各ネット内のいくつかの変数の名前は同じである可能性があるため、ネットを作成するときには名前スコープを使用するのが一般的な解決策です。しかし、問題は、これらのモデルを訓練し、訓練された変数をいくつかのチェックポイントファイルの中に保存することです。ネットを作成するときに名前スコープを使用した後、チェックポイントファイルから変数を読み込むことができません。複数のトレーニング済みTensorflowネットを同時に実行する
たとえば、私はAlexNetを訓練しましたが、2つの変数セットを比較したいと思います.1つはエポック10(ファイルepoch_10.ckptに保存されます)と別のセットはエポック50ファイルepoch_50.ckpt)。これらの2つはまったく同じネットなので、内部の変数の名前は同じです。私はこのネットの訓練を受けたとき、私は名前のスコープを使用していなかったので、しかし、私は.ckptファイルから訓練された変数をロードすることはできません
with tf.name_scope("net1"):
net1 = CreateAlexNet()
with tf.name_scope("net2"):
net2 = CreateAlexNet()
を使用して、2つのネットを作成することができます。ネットを訓練するときに名前スコープを "net1"に設定することはできますが、これによってnet2の変数をロードできなくなります。
私が試してみました:
with tf.name_scope("net1"):
mySaver.restore(sess, 'epoch_10.ckpt')
with tf.name_scope("net2"):
mySaver.restore(sess, 'epoch_50.ckpt')
これは動作しません。
この問題を解決する最善の方法は何ですか?
驚くような答え! – denru
lstripを使用して接頭辞を削除すると、結果が正しくない可能性があります。代わりにスライスしてください。コードの他の部分は完全に機能します。別の質問は、変数の名前が ":0"、 ":1"のような接尾辞を持つことがわかったということです。変数をチェックポイントファイルに格納する前に、この後置を取り除く必要がありますか? – denru
誰でもこの回答を試みましたか?私は、何もしない 'restore'関数の問題にぶつかっています:http://stackoverflow.com/questions/41607144/loading-two-models-from-saver-in-the-same-tensorflow-session – TheCriticalImperitive