Tensorflow图形编辑器重新路由复杂网络

kwa*_*son 4 python tensorflow

我尝试用自定义操作包装操作。
我解决了目标操作的输入(图片中的A),但包装输出失败。

初始化网络操作看起来像它。

 C   D
/ \ /
B  A
Run Code Online (Sandbox Code Playgroud)

并假设每个操作都有1个输出张量。我想添加操作“ E”

 C   D
/ \ /
B  E
   |
   A
Run Code Online (Sandbox Code Playgroud)

我尝试使用图形编辑器(API r0.12)
我的策略是连接AE并断开(C,D)-A并连接(C,D)-E

  1. ge.connect([E],[C,D]) -失败,因为操作C有2个输入
  2. 使用ge.swap_inputs 2次-失败,我可以连接E和D,但仍然无法连接CA和连接CE

我该如何改变?
谢谢

小智 5

您需要进行一些子图重新映射,以确保两个子图的签名匹配。这样做有助于打印子图。

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]))
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)