首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >nn.MaxPool2d vs.nn.functional.max_pool2d之间的区别?

nn.MaxPool2d vs.nn.functional.max_pool2d之间的区别?
EN

Stack Overflow用户
提问于 2019-10-23 09:22:09
回答 1查看 5.6K关注 0票数 6

nn.MaxPool2d(kernel_size, stride)nn.functional.max_pool2d(t, kernel_size, stride)有什么区别?

第一个是在模块中定义的,第二个是在forward函数中定义的。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-10-23 09:40:21

它们本质上是相同的。不同之处在于,torch.nn.MaxPool2d是一个显式的nn.Module,它通过torch.nn.functional.max_pool2d()调用自己的forward()方法。

您可以在此处查看torch.nn.MaxPool2d的源代码,并亲自查看调用:https://pytorch.org/docs/stable/_modules/torch/nn/modules/pooling.html#MaxPool2d

转载如下:

代码语言:javascript
运行
复制
def forward(self, input):
        return F.max_pool2d(input, self.kernel_size, self.stride,
                            self.padding, self.dilation, self.ceil_mode,
                            self.return_indices)

为什么同一任务有两种方法?我想这是为了适应许多可能使用PyTorch的人的编码风格。有些人更喜欢有状态的方法,而另一些人则更喜欢功能更强大的方法。

例如,拥有torch.nn.MaxPool2d意味着我们可以很容易地将其放入nn.Sequential块中。

代码语言:javascript
运行
复制
model = nn.Sequential(
          nn.Conv2d(1,3,3),
          nn.ReLU(),
          nn.MaxPool2d((2, 2))
        )
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58514197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档