【问题标题】:Adding two Tensors with different ranks on TensorFlow在 TensorFlow 上添加两个不同等级的张量
【发布时间】:2016-01-30 16:17:42
【问题描述】:

我在 TensorFlow 上尝试了以下操作:

import tensorflow as tf

a = tf.Variable(tf.zeros([10,1]))
b = tf.Variable(tf.zeros([10]) )
c = a + b

with tf.Session() as sess:
    sess.run(tf.initialize_all_variables())
    print sess.run(c)

我预计会出现“两个张量必须具有相同等级”之类的错误。然而,输出是一个 10×10 的零矩阵。你认为为什么会这样?

【问题讨论】:

    标签: machine-learning tensorflow


    【解决方案1】:

    因为broadcasting。您有一个水平向量和一个垂直向量,添加后它们会创建一个 10x10 矩阵。这同样适用于

    import tensorflow as tf
    
    a = tf.Variable(tf.zeros([10, 1]))
    b = tf.Variable(tf.zeros([1, 10]) )
    c = a + b
    
    with tf.Session() as sess:
        sess.run(tf.initialize_all_variables())
        print sess.run(c)
    

    【讨论】:

    • 减法同样适用。为什么 TensorFlow 文档中没有专门的注释。
    • 减法、乘法、除法 - 任何元素操作广播
    • 注释。查看提供的链接“注意:添加支持广播”
    • 我的意思是说没有关于减法或其他元素操作的注释。
    • 我猜文档偏向于 numpy 用户,这种行为对于没有使用 numpy 的人来说是出乎意料的。改进文档可能值得一个问题或拉取请求github.com/tensorflow/tensorflow/issues/new
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    • 2017-03-19
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2022-12-11
    相关资源
    最近更新 更多