添加维度广播?
Is adding a dimension broadcasting?
给定
a = tf.constant([[1, 2, 3], [10, 20, 30], [100, 200, 300], [1000, 2000, 3000]])
以下都是等价的
b = tf.constant([100000, 200000, 300000])
print((a+b).eval())
bb = tf.constant([[100000, 200000, 300000]])
print((a+bb).eval())
bbb = tf.constant([[100000, 200000, 300000], [100000, 200000, 300000], [100000, 200000, 300000], [100000, 200000, 300000]])
print((a+bbb).eval())
并生产
[[100001 200002 300003]
[100010 200020 300030]
[100100 200200 300300]
[101000 202000 303000]]
我理解bb
是"broadcast"到tf.add
对应的bbb
的值(这里是+
)。加个维度把b
转换成bbb
的值是全广播,还是别的?
正如您在评论中提到的,b
、bb
都是有效的广播形式。如numpy
documentation,
Arrays do not need to have the same number of dimensions.
给定
a = tf.constant([[1, 2, 3], [10, 20, 30], [100, 200, 300], [1000, 2000, 3000]])
以下都是等价的
b = tf.constant([100000, 200000, 300000])
print((a+b).eval())
bb = tf.constant([[100000, 200000, 300000]])
print((a+bb).eval())
bbb = tf.constant([[100000, 200000, 300000], [100000, 200000, 300000], [100000, 200000, 300000], [100000, 200000, 300000]])
print((a+bbb).eval())
并生产
[[100001 200002 300003]
[100010 200020 300030]
[100100 200200 300300]
[101000 202000 303000]]
我理解bb
是"broadcast"到tf.add
对应的bbb
的值(这里是+
)。加个维度把b
转换成bbb
的值是全广播,还是别的?
正如您在评论中提到的,b
、bb
都是有效的广播形式。如numpy
documentation,
Arrays do not need to have the same number of dimensions.