在tensorflow中,如何创建添加两个以上参数的图形?

时间:2018-09-21 07:06:52

标签: python tensorflow

在tensorflow中,我想做类似的事情:

A = tf.add(a, b, c)

也就是说,我要创建一个添加两个以上自变量的图形。我该怎么做?

1 个答案:

答案 0 :(得分:0)

TL; DR

使用tf.accumulate_n

更多

答案实际上在张量流中比人们预期的要复杂。

您可以链接附加项:

res = a + b + c

,但是随后创建的节点数与添加的节点数相同。此外,您可以强制执行加法顺序:ab首先相加(因此TF必须等待它们的值准备好),然后再添加c

解决方案似乎是

res = tf.add_n([a, b, c])

创建一个节点。 {,tf.add_n效率不高。它会等待所有输入准备就绪再将它们求和,因此它实际上比链接添加的效率低,后者可以在ab准备好后立即开始。其次,所有输入必须同时存储在内存中,这浪费了内存—同样,当链接添加项时,ab可以在求和c之前被丢弃。

汇总多个输入的更好方法是使用tf.accumulate_n,这可以减轻tf.add_n的问题,因为它会在输入出现时对其求和。

恕我直言,仍然拥有tf.add_n的唯一原因是为了与TF <1.7兼容,为此tf.accumulate_n不能通过渐变,如果要支持旧版本的TF,这是一个主要缺点。