火炬意味着功能的误解

问题描述 投票:2回答:1

我无法理解如何评估这个表达式:x.view(*(x.shape[:-2]),-1).mean(-1),x形状(N,C,H,W)什么是astrick?什么是卑鄙(-1)?提前致谢

python-3.x deep-learning pytorch
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.