Python 如果在列表中创建pytorch网络,则不会生成权重

Python 如果在列表中创建pytorch网络,则不会生成权重,python,deep-learning,pytorch,Python,Deep Learning,Pytorch,我正在pytorch中创建一个网络,方法是使用init()和forward()方法编写一个名为MyNet的类。 如果我在init()中创建一个层,如: self.fc=nn.Linear(5,10) 一切都很顺利 net = MyNet() paramL = list(net.parameters()) 给我一个列表,里面有一些权重。 但是,如果我以以下方式创建层 self.layerL = [nn.Linear(5,10)] 似乎出现了一些问题,因为list(net.parameters(

我正在pytorch中创建一个网络,方法是使用init()和forward()方法编写一个名为MyNet的类。 如果我在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),…)
好的,在这里找到了解决方案


基本上,我必须向模块注册层。

我真正想要的是给类的构造函数一个类似[20,10,3]的列表然后,它应该构建一个由三个完全连接的层组成的网络,每个层有20个、10个和3个节点。也就是说,我需要一种方法来创建层,而不事先知道将有多少层。我如何在不将层放入列表的情况下做到这一点!?出于某些原因,我希望使用类方法,而不是顺序。这可能吗?--O你的意思是我应该在我的类构造函数中放置顺序调用吗?!