python broadcast广播进阶例子

阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!!

1、广播操作

其实也比较简单,两个矩阵broadcast后的结果每一维都是两个矩阵中最大的。

按从右往左顺序看两个张量的每一个维度,x和y每个对应着的两个维度都需要能够匹配上。什么情况下算是匹配上了?满足下面的条件就可以:
a.这两个维度每一个维度的大小相等
b. 某个维度 一个张量有,一个张量没有。那numpy会自动补1
c.某个维度 一个张量有,一个张量也有但大小是1。

为何要右对齐,因为最右边的维度最低。举个例子
(1,2,3)其中3是最低的维度,2其次,1最高

两个张量维度从右往左看,如果出现两个张量在某个维度位置上面,维度大小不相等,且两个维度大小没有一个是1,那么这两个张量一定不能进行广播

2、代码例子最形象

# Compute outer product of vectors
v = np.array([1,2,3])  # v has shape (3,)
w = np.array([4,5])    # w has shape (2,)
# To compute an outer product, we first reshape v to be a column
# vector of shape (3, 1); we can then broadcast it against w to yield
# an output of shape (3, 2), which is the outer product of v and w:

print(np.reshape(v, (3, 1)) * w)
#为啥这里要reshape((3,1)),因为(3,) 和 (2,)无法进行广播
#1、先维度(3,1)与(2, )比较,发现后者是1维,所以前面补1,使(2, )1维 成 (1, 2)二维,从而与前者维度一样
#2、从低维开始比直到高维结束(即从右往左比,例如(1,2)中2代表低维,1代表高维)。
#   若比较时两者相等或者其中为1,才能broadcasting,否则报错
#   低维:(3, 1)中的1和(1, 2)中的2比较,满足其中为1,1变2,即(3, 1)  -->  (3, 2)
#   高维:此时变成了(3, 2)中的3和(1, 2)中的1比较。也满足,故(1, 2) --> (3, 2),最终变换结果如下:


# 1  1       4 5 
# 2  2       4 5
# 3  3       4 5


没看懂的再看看这篇文章:
《Pytorch中的广播机制(Broadcast)》


阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!!

码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值