2017-01-31 8 views
2

私はカスタマイズされた操作で操作をラップしようとします。
ターゲット操作(Aピクチャ)の入力を解決しましたが、出力が失敗しました。Tensorflowグラフエディタが複雑なネットワークを再ルーティング

初期ネットワーク操作は、次のようになります。

とし、すべての演算に1出力テンソルがあるとします。私は操作を追加したい 'E'

C D 
/\/
B E 
    | 
    A 

私はgraph editor(API r0.12)で試してみましたよ、
私の戦略は、それがAEと切断(C、D)-Aを接続し、(C、D)-E

を接続しました
  1. ge.connect([E]、[C、D]) - OP Cはge.swap_inputs 2倍の2入力
  2. 使用持っているので失敗 - 失敗を、IはE及びDを添付することができ、それでもCAを切断してCEに接続する際の問題

どうすれば変更できますか?
ありがとう

答えて

3

サブグラフremappingをいくつか実行して、2つのサブグラフの署名が一致することを確認する必要があります。これを行うには、サブグラフを印刷すると便利です。

tf.reset_default_graph() 

a = tf.placeholder(dtype=tf.float32, name="a") 
b = tf.placeholder(dtype=tf.float32, name="b") 
c = tf.add(a, b, name="c") 
d = tf.identity(a, name="d") 

e = tf.identity(a, name="e") 
print(ge.sgv(e.op)) 
print(ge.sgv(c.op, d.op).remap_inputs([0])) 
ge.connect(ge.sgv(e.op), ge.sgv(c.op, d.op).remap_inputs([0])) 

出力:それが動作

SubGraphView (graphid=241109520): 
** ops[1]: 
    e 
** inputs[1]: 
    a:0 
** outputs[1]: 
    e:0 

SubGraphView (graphid=241109520): 
** ops[2]: 
    c 
    d 
** inputs[1]: 
    a:0 
** outputs[2]: 
    c:0 
    d:0 
+0

ありがとう! –