首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pytorch:当参数或大小发生变化时,是否可以加载模型?

Pytorch:当参数或大小发生变化时,是否可以加载模型?
EN

Stack Overflow用户
提问于 2019-06-30 13:04:13
回答 1查看 1.7K关注 0票数 1

使用以下方法保存Py手火炬模型(图、权重和偏倚):

代码语言:javascript
复制
torch.save(self.state_dict(), file)

满载:

代码语言:javascript
复制
self.load_state_dict(torch.load(file))

但是,如果参数被更改,模型将不会加载错误--例如:

代码语言:javascript
复制
RuntimeError: Error(s) in loading state_dict for LeNet5:
    size mismatch for conv1.weight:

是否可以在改变大小的情况下加载到模型中?在初始化(如果有更多的权重)和剪辑(如果有较少的权重)的剩余权重?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-30 13:14:33

没有自动的方法来做到这一点,因为当事情不匹配时,您需要显式地来决定该做什么。

就我个人而言,当我需要“强制”一个预先训练的重量在一个稍微改变的模型。我发现使用state_dict本身是最方便的方法。

代码语言:javascript
复制
new_model = model( ... )  # construct the new model
new_sd = new_model.state_dict()  # take the "default" state_dict
pre_trained_sd = torch.load(file)  # load the old version pre-trained weights
# merge information from pre_trained_sd into new_sd
# ...
# after merging the state dict you can load it:
new_model.load_state_dict(new_sd)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56825055

复制
相关文章

相似问题

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