这是来自 nn.Module
的示例代码pytorch 文档:
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))
在这里,我们正在传递 x
至 self.conv1()
在forward
功能。
然而,self.conv1
是一个变量,可以从这一行 self.conv1 = nn.Conv2d(1, 20, 5)
在__init__
功能。
这怎么可能?
最佳答案
pytorch、层或网络中任何事物的前向传递都是以功能方式var(x)
完成的。这是用 python 编写的,内置覆盖 __call__()
。自己试试吧。创建一个类,覆盖 __call__()
并像函数一样使用它。
关于python - 你能像在 Pytorch 中那样将变量传递给 Python 中的数据成员吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56871848/