浅谈Pytorch广播机制

广播机制 从后往前依次检查维度,如果两个张量对应的维度上数目相等,则会按照该维度相加

  若其中一个维度数目为1,则会应用广播机制.

如:

1
2
3
a = torch.arange(3).reshape([1, 3, 1])
b = torch.arange(3).reshape([1, 3, 1])
a + #维度均相等

  输出为:

1
2
3
tensor([[[0],
         [2],
         [4]]])

  维度不相等_1:

1
2
3
a = torch.arange(3).reshape([1, 3, 1])
b = torch.arange(6).reshape([1, 3, 2])
a + b #维度不相等_1

  理解为: 

1
a是tensor([[[0],[1],[2]]])     增加维度,广播为: tensor([[0, 0], [1, 1], [2, 2]])   b为tensor([[[0, 1], [2, 3], [4, 5]]])<br><br>则  a + b = tensor([[[0, 1], [3, 4], [6, 7]]])

  同理,可以获得如下结果:

1
2
3
4
5
a = torch.arange(3).reshape([1, 3, 1])
b = torch.arange(6).reshape([1, 3, 2])
a + b
 
>>>tensor([[[0, 1], [3, 4], [6, 7]]])

  

1
2
3
4
5
a = torch.arange(3).reshape([1, 3, 1])
b = torch.arange(2).reshape([1, 1, 2])
a + b
 
>>>tensor([[[0, 1], [1, 2], [2, 3]]])

  

1
2
3
4
5
6
7
a = torch.arange(3).reshape([1, 3, 1])
b = torch.arange(6).reshape([3, 1, 2])
a + b
 
>>>tensor([[[0, 1], [1, 2], [2, 3]],
[[2, 3], [3, 4], [4, 5]],
[[4, 5], [5, 6], [6, 7]]])

  

 

posted @   Krasitz  阅读(151)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示