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,则去掉改该维度:
-
squeeze(0)代表若是
第一维度值为1
,则
去除第一维度
; -
squeeze(1)代表若
第二维度值为1
,则
去除第二维度
; - -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