广播问题:np.multiply(a,b)矩阵维度大小不同怎么办

  • A+
所属分类:数据科学
摘要

numpy中的“广播”问题

广播问题:np.multiply(a,b)矩阵维度大小不同怎么办

开始

我们在使用numpy中的np.multiply(a, b)np.add(a, b),或者TensorFlowtf.multiply(a, b)时,有时会遇到矩阵a、b大小不同的情形,“广播”这个术语便描述了numpy在算术运算期间如何处理这种情形。当两个矩阵在某个维度大小不一致时,numpy便会将小矩阵进行“复制”,以和大矩阵匹配。

举个例子:

a的形状是(1,3),b为标量,b需要广播,因此numpy将b扩展为[2.0,2.0,2.0],以与a匹配,相乘后得到结果 [ 2., 4., 6.] 这个过程可以表示为:

一般情况

通常而言,numpy会从低的维度(shape的尾部)开始,逐次检查两个矩阵大小信息:如果大小一致,good;如果其中一个为1,可以,开始广播;其他情况,则会抛出:ValueError: operands could not be broadcast together,表示维度不兼容。

更多例子:

一个复杂的例子:

其他

还记得开始提到的TensorFLow吗?其实它和numpy是一样的。

上面那个复杂的例子在TensorFLow中的实现:

输出

参考:https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html

LTXU

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: