我有一个已定义的模型和已定义的图层,我将已定义的图层的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/

10-08 22:46