python 学习中的一些小知识点

例子1:bmm( )函数使用

torch.bmm(a,b)

参考

https://blog.csdn.net/qq_43391414/article/details/110442229

a=torch.Tensor([[[3,4],[1,2]],[[3,4],[1,2]],[[3,4],[1,2]]])
b=torch.Tensor([[[1,2],[3,4]],[[1,2],[3,4]],[[3,4],[1,2]]])
print(a.shape)
print(b.shape)

结果显示的是 3,2,2 和 3,2,2


p * m * s

乘以

p * s * n

得到

p * m * n

torch.bmm(a,b)

结果:

tensor([[[15.,22.],[7.,10.]],[[15.,22.],[7.,10.]],[[13.,20.],[5.,8.]]])

print(torch.bmm(a,b).shape)

out: torch.Size([3,2,2])


例子2

:squeeze()、unsqueeze()

参考

https://blog.csdn.net/lj2048/article/details/114263912

torch.squeeze(input,dim=None,out=None)

函数功能:去除size为1的维度,包括行和列。当维度大于等于2时,squeeze()无用。

当给定dim时,那么挤压操作只能在给定维度上。即若tensor.size(dim)=1,则去掉改该维度:

  1. squeeze(0)代表若是

    第一维度值为1

    ,则

    去除第一维度

  2. squeeze(1)代表若

    第二维度值为1

    ,则

    去除第二维度

  3. -1,去除最后维度值为1的维度。

当不将输入张量形状中的1去除并返回。将输入张量形状中的1 去除并返回。 如果输入是形如(A×1×B×1×C×1×D)(A×1×B×1×C×1×D),那么输出形状就为: (A×B×C×D)(A×B×C×D)。

例如,输入形状为: (A×1×B)(A×1×B), squeeze(input, 0) 将会保持张量不变,只有用 squeeze(input, 1),形状会变成 (A×B)(A×B)。

注意: 返回张量与输入张量共享内存,所以改变其中一个的内容会改变另一个。

torch.unsqueeze(input,dim=None,out=None)

增加大小为1的维度,也就是返回一个新的张量,对输入的指定位置插入维度 1且必须指明维度

注意: 返回张量与输入张量共享内存,所以改变其中一个的内容会改变另一个。


https://blog.csdn.net/flysky_jay/article/details/81607289

这里介绍的这两个函数也很详细 是我第一次看明白这两个语句的博客


https://blog.csdn.net/baidu_38634017/article/details/100276680

这里也存在其解释+

https://www.cnblogs.com/oliyoung/p/un-squeeze.html



版权声明:本文为zhenguiqin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/zhenguiqin/article/details/117251747