Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 装货及;冻结预训练模型以与新网络结合_Python_Python 3.x_Pytorch - Fatal编程技术网

Python 装货及;冻结预训练模型以与新网络结合

Python 装货及;冻结预训练模型以与新网络结合,python,python-3.x,pytorch,Python,Python 3.x,Pytorch,我有一个预训练的模型,并希望在其上构建一个分类器。我试图加载并冻结预训练模型的权重,并将其输出传递给新的分类器,我希望对其进行优化。到目前为止,我只知道一个TypeError:forward()缺少一个必需的位置参数:“x”错误,来自nn。Sequential行: import model #model.py contains the architecture of the pretrained model class Classifier(nn.Module): def __init

我有一个预训练的模型,并希望在其上构建一个分类器。我试图加载并冻结预训练模型的权重,并将其输出传递给新的分类器,我希望对其进行优化。到目前为止,我只知道一个
TypeError:forward()缺少一个必需的位置参数:“x”
错误,来自
nn。Sequential
行:

import model #model.py contains the architecture of the pretrained model

class Classifier(nn.Module):
    def __init__(self):
        ...
    def forward(self, x):
        ...

net = model.Model()
net.load_state_dict(checkpoint["net"])

for c in net.children():
    for param in child.parameters():
        params.requires_grad = False

model = nn.Sequential(nn.ModuleList(net()), Classifier())

TL;DR

model=nn.Sequential(nn.ModuleList(net),分类器())


您正在通过
net()
“调用”
net.forward
,这与
Classifier()

分类器
类的
初始化
方法相反,我在PyTorch论坛上与@ptrblck讨论后终于解决了这个问题。该解决方案与Shai的答案类似,只是因为
net
包含
model.model
类的实例,所以应该执行
model=nn.Sequential(net,Classifier())
,而不调用
nn.ModuleList()