它们本质上是相同的。不同之处在于它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)
Run Code Online (Sandbox Code Playgroud)
为什么对同一任务有两种方法?我想它适合许多可能使用 PyTorch 的人的编码风格。有些人更喜欢有状态的方法,而另一些人则更喜欢功能性的方法。
例如,拥有torch.nn.MaxPool2d意味着我们可以很容易地将它放入一个nn.Sequential块中。
model = nn.Sequential(
nn.Conv2d(1,3,3),
nn.ReLU(),
nn.MaxPool2d((2, 2))
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4872 次 |
| 最近记录: |