Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python nn.MaxPool2d与nn.functional.max\u pool2d之间的差异?_Python_Module_Pytorch_Forward - Fatal编程技术网

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吗?