2016-05-02 7 views
3

私は小さなネットワークを持っています。 [多くの時間]訓練を受け、チェックポイントに保存されました。 これで、チェックポイントから別のスクリプトに復元して使用したいと思います。 セッションを再作成します。ネットワーク全体を構築します。トレーニングの前に行ったのとまったく同じコードを使用して、すべての操作が再び作成されます。 このコードは、time.time() [実行ごとに異なる]を使用して、TFのランダムシードを設定します。Tensorflowは確定的ではありません。どこにあるべきですか

次に、チェックポイントから復元します。私はネットワークを稼働させ、復元されたネットワークを実行するたびに異なる数(小さいながら意味のある違い)を取得します。重要な点は、入力が固定されていることです。 ランダムシードをある値に固定すると、非決定的な振る舞いがなくなります。

リストア[変数が保存されていないので、すべてのグラフがチェックポイントされていると見なしている]と思って困惑しています。初期化などは、復元されたチェックポイントによって上書きされますが、これは前方実行のみです。

これは可能ですか?理にかなっている?グラフのどの変数や要因がリストアされたチェックポイントによって設定されていないかを調べる方法はありますか?

+0

これは、乱数を使用するop(shuffle_batch、dropout、random_contrast)があることを示しています。あなたの作戦のいずれかが作戦時に 'シード'を受け入れるかどうかを見てください。自動的に変数の初期化を実行してはならず、 'initialize_all_variables'を実行しないと、次に変数を使用しようとすると例外が発生します –

+1

ドロップアウトを使いましたか? –

+1

「フォワードラン」とは、復元されたネットワークを予測権としてのみ使用しているということですか?その場合、トレーニング中にドロップアウトが使用されたかどうかは重要ですか?私はそう思わないだろうが、私は専門家ではない。 – Aenimated1

答えて

0

この質問はすでにコメントで答えましたが、誰が明示的にまだ答えを書かなかったかのようにそれはそうここにある、と思われる:

あなたも、常に同じ値を返すように計算グラフを期待していましたランダムな種に依存するあなたのグラフにはOpが存在してはならないと思ったので、さまざまなランダムな種を使っています。

あなたはドロップアウトを忘れました。

いずれにせよ、私はいつもランダムシードを固定しておきます。次に、これと他の任意のランダムな操作も決定論的で、あなたのトレーニング全体も同様にすることができます。異なるランダムなシードによってどのくらいの分散が得られるのか疑問に思っている場合、他のランダムなシードを明示的に試すことができます。

関連する問題