2016-10-21 5 views
0

私はtf.train.Saverの正しい使い方を理解するのに苦労していますテンソルフローセーバーを複数のモデルで使用する方法は?

私はいくつかの別々のネットワークモデルを作成するセッションを持っています。すべてのモデルが訓練されており、後で使用するために最も優れたネットワークを保存しています。私がしようとすると、何らかの理由で

NotFoundError: Tensor name "Network_8/train/beta2_power" not found in checkpoint files networks/network_0.ckpt 

:私は後でモデルを復元しようとすると、

しかし、私はいくつかの変数がいずれかの保存または復元取得されていないことを示していると思われるエラーが発生しますNetwork_0の変数をロードするNetwork_8の変数情報が必要だと言われています。

マルチネットワークセッションから正しい変数を保存/復元するにはどうすればよいですか?

AdamOptimizerのようなオプティマイザをセットアップすると、テンソルフローによって自動的に余分な変数が作成されるため、各ネットワークの変数(ウェイトとバイアス)を保存する変数のdictオブジェクトを作成していますが、初期化する必要があります。 tf.train.Saverを使用してすべての変数を保存し、ネットワークが1つしかない場合は、これは問題ありませんが、複数のネットワークをトレーニングして、最良の結果を保存するだけです。私は変数を指定する方法がわからないので、自動で保存するために自分の辞書に追加します。

+0

保存したり復元したりすることができます。それ以外の場合は、基本的には問題の内容を推測するだけです。 – Steven

答えて

1

元のモデルと必要な変数のみを復元する新しいモデル(Network_0とNetwork_8)の両方で同じテンソル名を持つpart_saverを作成することです。

part_saver = tf.train.Saver({"W":w,"b":b,...}) 

部分モデルを復元する前に、Network_8のすべての変数を初期化します。

関連する問題