2017-01-12 12 views
2

私はオートエンコーダーで作業しています。私のテンソルフローグラフは、(入力画像)--conv2d - >(圧縮表現)--deconv2d - >(再構成画像)のようになります。TensorFlowでデフォルトのプレースホルダのグラデーションを取得する方法は?

圧縮表現テンソルをplaceholder_with_defaultに変更しました。これにより、必要な値をプラグインして再構築されたものを見ることができます。 圧縮表現が供給されないときに使用されるデフォルト値は、conv2dの結果です。

しかし、オプティマイザは、と文句を言い:

LookupError: gradient registry has no entry for: PlaceholderWithDefault 

私はグラフだけで最適化の段階で、通常の勾配を使用することを知らせることができますどのように? 圧縮された表現がプレースホルダーでない場合、すべて正常に動作します。

+0

ネットワークの一部をプレースホルダに置き換えた場合、なぜオプティマイザを使用していますか?あなたのネットワークはすでに訓練されていると思います。 –

+0

私は、表現の最適化と探索の両方のために働かなければならないと考えてグラフを作成しました。どのように訓練を受けた後、グラフの構造を変更することができますか?プレースホルダと計算部分の間を簡単に戻すことができるので、トレーニングと探索を切り替えることはできますか? – iramusa

+0

エンコーダ、表現、およびデコーダを別々に保存することができます。あるいは、別のデコーダネットワークを構築し、 'get_variable()'関数を使って訓練された変数を再利用することもできます。 –

答えて

0

実際にデータを入力するためにプレースホルダを使用する必要はありません。テンソルはsession.run()のfeed_dict引数のターゲットになります。したがって、圧縮された表現をテンソルとして保持し、feed_dict引き数に独自のデータを提供したいときに、それを必要なものに割り当てるだけです。

関連する問題