python - nn.MaxPool2d 与 nn.functional.max_pool2d 之间的区别?
问题描述
nn.MaxPool2d(kernel_size, stride)
和有什么区别nn.functional.max_pool2d(t, kernel_size, stride)
?
我在模块中定义的第一个和转发函数中的第二个?
谢谢
解决方案
它们本质上是相同的。不同之处在于它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
转载如下:
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
块中。
model = nn.Sequential(
nn.Conv2d(1,3,3),
nn.ReLU(),
nn.MaxPool2d((2, 2))
)
推荐阅读
- ffmpeg - 为什么使用输入格式使用 FFmpeg 录制网络摄像头要快得多?
- swift - 无法从 Result 类型的完成处理程序中获取错误消息
- java - 如何使用 Restassured 在 GET 调用中将 json 数据作为查询参数传递
- python - Python IndexError 打开 .nc 文件
- mysql - 如何对 SQL 中的计算行求和?
- python - 为什么我的值没有在使用 np.nan 的 CSV 文件中替换?
- z3 - Z3 Theorem Prover 日志文件文档?
- javascript - JSON 第 2 行第 1 列的数据意外结束
- storybook - 是否可以在侧边栏的 Storybook 中隐藏故事?但仍然可以通过 URL 访问它们吗?
- python - 数据框中字符串的连接