我有一个已定义的模型和已定义的图层,我将已定义的图层的n个实例添加到模型的init函数中的列表中,如下所示:
self.layers = []
for i in range(len(nhid)-1):
self.layers.append(MyLayer(nhid[i], nhid[i+1]))
但是当我通过创建优化器时
optim.Adam(model.parameters(),lr=args.lr, weight_decay=args.weight_decay)
它说:
ValueError:优化器的参数列表为空
但是当我按照如下方式将其编写为两层时,我没有出现错误:
self.layer1 = MyLayer[nhid[0],nhid[1]]
self.layer2 = MyLayer[nhid[1],nhid[2]]
最佳答案
我通过使用nn.ModuleList()
解决了以下问题:
temp = []
for i in range(len(nhid)-1):
temp.append(MyLayer(nhid[i], nhid[i+1]))
self.layers = nn.ModuleList(temp)
我还阅读了有关
nn.Sequential()
的信息,但是我没有找到如何正确使用它的方法。关于python - pytorch:层列表返回“优化器有一个空参数列表”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52298179/