pytorch张量广播机制示例

1
2
3
4
5
6
7
8
9
10
11
12
import torch
box = torch.tensor([            # 边界框的坐标,(x1, y1, x2, y2). box'shape: (3, 4)
    [0.1, 0.2, 0.5, 0.3],
    [0.6, 0.6, 0.9, 0.9],
    [0.1, 0.1, 0.2, 0.2]
    ])
 
whwh = torch.tensor([200, 400, 200, 400])
 
box_new = box * whwh[None, :]  
# None的作用是给whwh扩增第0维,扩增之后,whwh的shape是(1, 4). 然后就可以用pytorch的张量广播机制相乘了。
print(box_new)

输出:

 

我做张量广播时的一个办法是,先用None的方式把两个张量的维度数目变得相等,然后进行广播。虽然广播机制在维度数目不相等时也可以应用,但是为方便理解,我习惯上还是先把维度数目变为相等,再进行广播机制,就像上面的示例一样。(题外话:numpy也可以用None扩展维度

 

下面这几句总结的话,摘自:张量的广播机制。这篇博客写的挺清晰的。

 

posted @   Picassooo  阅读(93)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2022-07-25 linux查看当前文件夹的总硬盘占用量
2021-07-25 氨基酸,多肽,蛋白质等
点击右上角即可分享
微信分享提示