我无法理解如何评估这个表达式:x.view(*(x.shape[:-2]),-1).mean(-1)
,x形状(N,C,H,W)什么是astrick?什么是卑鄙(-1)?提前致谢
什么是*
?
对于.view()
,pytorch期望新形状由单个int参数提供(在文档中表示为*shape
)。可以在python中使用星号(*
)将列表解压缩到其各个元素中,从而向view
传递它所期望的正确形式的输入参数。
所以,在你的情况下,x.shape
是(N, C, H, W)
,如果你没有星号通过x.shape[:-2]
,你会得到x.view((N, C), -1)
- 这不是view()
所期望的。使用星号结果解压缩(N, C)
,view
按预期接收view(N, C, -1)
参数。得到的形状是(N, C, H*W)
(3D张量而不是4张)。
什么是mean(-1)
?
只需查看.mean()
的文档:第一个参数是dim
参数。那就是x.mean(-1)
沿着最后一个维度应用mean
。在您的情况下,由于默认情况下keepdim=False
,您的输出将是(B, C)
大小张量,其中每个元素对应于沿两个空间维度的平均值。
这相当于
x.mean(-1).mean(-1)