ValueError:optimizer got an empty parameter list,参数空传

ValueError:optimizer got an empty parameter list
这个问题有特别多种,这里只介绍我察觉到的错误

本身我的全连接是固定参数,并没有出错,即:

self.fc1 = nn.Linear(96 * 8 * 8, 512) 
self.fc2 = nn.Linear(512, 10)

但是如果我将上一层网络结构训练的参数,作为全连接的定义参数

self.fc1 = nn.Linear(int(inchannels[i])*int(size[k])*int(size[k]), 512) 
self.fc2 = nn.Linear(512, 10) 

此时放数据入forward函数,如下

    def forward(self , x):
        x = layer(x)
        # ----------------------------
        out = x.view(x.size(0), -1) 
        out = self.fc1(out)
        out = self.fc2(out)
        # -----------------------------
        return out

就会出现ValueError:optimizer got an empty parameter list ,此时出现的错误,就是全连接并没有接收到x= layer(x)训练的参数作为定义。
就是layer层这里出错,并没有参与到训练来。
故大家记得一定让layer层添加进pytorch的动态图模型中,至于怎么添加,大家可以看这里我的修改
将定义好的网络层添加进模型中

你可能感兴趣的:(python,pytorch,深度学习)