【问题标题】:What happens when you add a tensor with a numpy array?当你添加一个带有 numpy 数组的张量时会发生什么?
【发布时间】:2018-03-12 23:43:43
【问题描述】:

张量流 1.6

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

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

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

换句话说,与手动定义适当的 tf.constant 张量相比,以这种方式编写它有什么缺点吗?

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

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

    这使得库之间的交互更加无缝,但应注意不要将同一个数组的许多副本塞满图形,尤其是当它很大时。如果您要使用 TensorFlow 张量多次操作同一个数组,最好先将其转换为 tf.constant,然后根据需要多次使用。

    【讨论】:

    • 谢谢!这是一个新功能还是我错过了它?
    • @Pepe 我认为情况一直如此,尽管我无法确定。实际上,更准确地说,TF 一直使用的(对于大多数操作和函数参数)是tf.convert_to_tensor,它接受“任何东西”并将其转换为张量(如果它还不是张量,那就是)。
    • 这就是我所怀疑的。谢谢你,你很有帮助。
    猜你喜欢
    • 2018-08-03
    • 1970-01-01
    • 2011-05-05
    • 2010-11-15
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多