PyTorch中Tensor Broadcasting详解

本文深入探讨了PyTorch中张量广播的概念,解释了不同大小的张量如何通过广播操作达到尺寸一致,以便进行数学运算。文章详细说明了广播规则,并通过实例演示了哪些情况下的张量可以进行广播,以及广播可能带来的性能影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:https://www.pytorchtutorial.com/pytorch-tensor-broadcasting/,本文只做个人记录学习使用,版权归原作者所有。

Broadcasting是指再运算中,不同大小的两个tensor该如何处理的操作。通常情况下,小一点的tensor会被broadcast到大一点的,这样才能保持大小一致。Broadcasting过程中的循环操作都在C底层进行,所以速度比较快。但也有一些情况下Broadcasting会带来性能上的下降。

两个Tensors只有在下列情况下下才能进行broadcasting操作:

  • 每个tensor至少有一维
  • 遍历所有的维度,从尾部维度开始,每个对应的维度大小要么相同,要么其中一个是1,要么其中一个不存在

让我们来看一些代码示例:

#相同维度,一定可以broadcasting
x=torch.empty(5,7,3)
y=torch.empty(5,7,3)
#没有符合“至少有一个维度”,所以不可以broadcasting
x=torch.empty((0,))
y=torch.empty(2,2)
#按照尾部对齐
x=torch.empty(5,3,4,1)
y=torch.empty( 3,1,1)

#1st尾部维度:都为1
#2nd尾部维度:y为1,“要么其中一个是1”
#3rd尾部维度:都为3
#4th尾部维度:y不不在,“要么有一个不存在”
#综上,x和y是可以broadcasting的
#但是
x=torch.empty(5,2,4,1)
y=torch.empty(  3,1,1)

# 1st尾部维度:都为1
# 2nd尾部维度:y为1,“要么其中一个是1”
# 3rd尾部维度:x为2,y为3,不符合broadcasting要求!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值