【发布时间】:2020-04-18 11:19:10
【问题描述】:
对于torch.nn.Module()
根据官方文档: 所有神经网络模块的基类。 你的模型也应该继承这个类。 模块还可以包含其他模块,允许将它们嵌套在树结构中。您可以将子模块分配为常规属性。
import torch.nn as nn
import torch.nn.functional as F
class Model(nn.Module):
def __init__(self):
super(Model, self).__init__()
self.conv1 = nn.Conv2d(1, 20, 5)
self.conv2 = nn.Conv2d(20, 20, 5)
def forward(self, x):
x = F.relu(self.conv1(x))
return F.relu(self.conv2(x))
它使用了super(Model, self).__init__()
为什么不super().__init__(Model, self)
【问题讨论】:
-
因为第二个会调用一个带有 2 个参数的 init 函数?
-
对于
super(Model, self).__init__()是不是真的和super().__init__()一样 -
但是您的问题列出了
super().__init__(Model, self),这是不同的。而super()仅在 Python 3 之后才有效,因此大概文档希望向后兼容 Python 2 -
有道理,谢谢!
标签: python class oop inheritance pytorch