添加具有numpy数组的张量时会发生什么?

时间:2018-03-12 15:39:40

标签: python tensorflow

tensorflow 1.6

当我注意到以下代码有效时,我感到非常惊讶:

a = tf.constant(5)
b = a + np.array(25)
b.eval() # 30

我原以为这会引发错误。 tensorflow如何处理这种情况? numpy数组是否作为常量张量添加到图形中,以便所有内容仍然可以在GPU上运行?或者在CPU上计算内容会有一些中断吗?

换句话说,用这种方式编写它是否有任何缺点,与手工定义适当的tf.constant张量形成鲜明对比?

1 个答案:

答案 0 :(得分:4)

默认情况下,当您将NumPy数组添加到TensorFlow张量时,TensorFlow会将NumPy数组转换为tf.constant操作,然后将其添加到张量(这同样适用于任何其他Python运算符)。因此,在这种情况下,实际上有两个节点被添加到图形中,一个用于常量数组,另一个用于添加。

这使得库之间的交互更加无缝,尽管人们应该注意不要用相同数组的许多副本填充图形,特别是如果它很大的话。如果您要使用TensorFlow张量多次操作相同的阵列,最好先将其转换为tf.constant,然后根据需要多次使用它。