首页 文章

使用numpy数组添加张量时会发生什么?

提问于
浏览
4

tensorflow 1.6

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

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

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

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

1 回答

  • 4

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

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

相关问题