Python nn.MaxPool2d与nn.functional.max\u pool2d之间的差异?
有什么区别:Python nn.MaxPool2d与nn.functional.max\u pool2d之间的差异?,python,module,pytorch,forward,Python,Module,Pytorch,Forward,有什么区别:nn.MaxPool2d(内核大小,步幅)和nn.functional.MaxPool2d(内核大小,步幅) 我在模块中定义的第一个,在forward函数中定义的第二个 谢谢,它们基本上是一样的。不同之处在于,torch.nn.MaxPool2d是一个显式的nn.Module调用torch.nn.functional.max_pool2d()它自己的forward()方法 您可以在此处查看torch.nn.MaxPool2d的源代码,并亲自查看调用: 转载如下: def forwar
nn.MaxPool2d(内核大小,步幅)
和nn.functional.MaxPool2d(内核大小,步幅)
我在模块中定义的第一个,在forward函数中定义的第二个
谢谢,它们基本上是一样的。不同之处在于,
torch.nn.MaxPool2d
是一个显式的nn.Module
调用torch.nn.functional.max_pool2d()
它自己的forward()
方法
您可以在此处查看torch.nn.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))
)
在Keras中可能存在重复,现在建议使用功能API而不是顺序API。它也适用于PyTorch吗?