2016-10-05 7 views
2

グラフで実行された計算を、同じ演算を行うカスタム演算で置き換えようとしています。グラフ内のノードをテンソルフローの変数依存性を持つカスタム演算子に置き換える

はグラフが一定Aと重量W変数を持っているとしましょう、私はこれらの2つの入力を取り、(重み更新の最後のステップを除く)全体の計算を行うために、カスタムOPを作成します。

custom_op_tensor = custom_module.custom_op([A,W]) 
g_def = tf.get_default_graph().as_graph_def() 
input_map = { tensor.name : custom_op_tensor } 
train_op, = tf.import_graph_def(g_def, input_map=input_map, return_elements=[train_op]) 

後インポートグラフdefには、2つのWがあります.1つは元のグラフdefから、もう1つはインポートされたグラフです。列車を運行すると、カスタムオペレーションは古いWを読み終わり、新しいWが更新されます。その結果、勾配の降下は、正しいことをすることに失敗してしまいます。

問題は、入力重みテンソルWを必要とするcustom_opのインスタンス化です。新しいWは、インポート後にのみ認識されます。そして、インポートにはカスタムオペレーションが必要です。 この問題を回避するにはどうすればよいですか?

+2

グラフのopを他のopに置き換える方法をお尋ねします。最近まで、グラフは追加専用であったため、これを行うことはできませんでした。しかし、最近、グラフエディタライブラリが追加されました。おそらくそこに役立つ機能がいくつかあります。 - https://www.tensorflow.org/versions/r0.11/api_docs/python/contrib.graph_editor.html#library-overview –

答えて

0

使用するTensorflowのバージョンを正確に教えてください:r0.08、r0.09、r0.10、r0.11?

グラフ内のopを別のopで変更することは不可能です。 しかしWにアクセスできる場合は、更新する列車運転を実行する前にdeepcopy()from copy moduleを使ってWのバックアップコピーを作成できますか?

よろしくご協力ありがとうございます。

関連する問題