python - 如果在列表中完成,pytorch 网络创建不会生成权重
问题描述
我正在通过使用init () 和 forward() 方法编写一个名为 MyNet 的类在 pytorch 中创建一个网络。如果我在init ()中创建一个层,例如:
self.fc = nn.Linear(5, 10)
一切正常
net = MyNet()
paramL = list(net.parameters())
给了我一个清单,里面有一些重量。但是,如果我按以下方式创建图层
self.layerL = [nn.Linear(5,10)]
似乎出了点问题,因为 list(net.parameters()) 现在给出了一个空列表:-(
知道我做错了什么吗?
非常感谢
解决方案
简单来说,这是因为它不是一个torch.nn
对象。对于这个用途torch.nn.Sequential
。例如,
self.Layer = torch.nn.Sequential(nn.Linear(5,10), nn.Linear(10,10), ...)