你是否和我有同样疑惑,pytorch中怎么会有卷积、激活、池化等操作,虽然不在同一个包下面,那他们的区别究竟是什么,今天我们就来捋一捋这个问题。
区别一
正如我们知道的这些看似相同的卷积、激活、池化等操作,分别在不同的包下面—— torch.nn.xxx 和 torch.nn.functional.xxx包,那么他的作用和完成的方式以及调用的方式当然也不一样。
首先我们来看一下pytorch中文文档
 定义
区别二
- 调用torch.nn.xxx 时要先在里面传入超参数,然后再将数据以函数调用的方式传入 nn.xxx
- torch.nn.functional需要同时传入数据和额外参数
# torch.nn——需要先设定超参数in_channels、out_channels、kernel_size等
inputs = torch.randn(64, 3, 512, 512)
self.conv1 = nn.Conv2d(in_channels=64, out_channels=128 kernel_size=5, strides=2, padding=1)
outputs = self.conv(inputs)
# torch.nn.functional——需要同时传入inputs和 weight,bias等参数
inputs = torch.randn(64, 3, 512, 512)
weight = torch.randn(64, 3, 3, 3)
bias = torch.randn(