2017-06-01 69 views
0

鉴于添加维度广播吗?

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是 “广播” 通过tf.add对应bbb(这里的价值+)。是否添加了将所有广播的b转换为bbb的值的维度,还是其他值?

+0

你读过[this](https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html)吗?我真的不明白你的问题 – martianwars

+0

@martianwars:我想我明白了。这个'b'也被广播:“数组不需要有相同的维数。”可以添加匹配的外部尺寸,直到只是广播。 (我会拿这个或类似的东西作为答案。) – orome

回答

0

正如你在评论中提到的,bbb都是有效的广播形式。正如numpydocumentation,

中提到的那样,阵列不需要具有相同的维数。