首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在pytorch模型中获取权重和偏差并将其复制到另一个模型中的类似层的正确方法是什么?

在pytorch模型中获取权重和偏差并将其复制到另一个模型中的类似层的正确方法是什么?
EN

Stack Overflow用户
提问于 2020-06-23 15:42:14
回答 1查看 152关注 0票数 0

我正在尝试将权重从一个预先训练的模型逐层复制到另一个结构完全相似的模型中。原始模型在二值图像分类问题上的准确率为94%,但目标模型无法预测,导致整个测试集仅预测一个类别。

例如,我使用这段代码手动将权重从预训练模型的词干复制到目标的词干:

代码语言:javascript
复制
modelmix.stem[0].weight = modelSep.stem[0].weight
modelmix.stem[1].weight = modelSep.stem[1].weight
modelmix.stem[1].bias = modelSep.stem[1].bias

其中modelmix是目标,modelSep是预训练模型。对所有其他层使用了类似的代码片段。目标模型无法工作,即使我可以看到所有层的权重都是相似的。我使用的是pytorch 1.1。谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-06-23 15:54:44

您可以创建参数名称相同的另一个模型,例如:

代码语言:javascript
复制
import torch.nn as nn

model1 = nn.Sequential()
model1.add_module('layer1', nn.Linear(10, 20))
model1.add_module('layer2', nn.Linear(20, 10))

model2 = nn.Sequential()
model2.add_module('layer1', nn.Linear(10, 20))
model2.add_module('layer2', nn.Linear(20, 10))
model2.add_module('layer3', nn.Linear(10, 5))

然后,您可以将model1 state_dict加载到model2,反之亦然。

代码语言:javascript
复制
model2.load_state_dict(model1.state_dict(), strict=False)

如果你想要更定制的东西,你应该照你说的去做。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62529729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档