美文网首页
Pytorch预训练模型finetune

Pytorch预训练模型finetune

作者: 黑恶歌王 | 来源:发表于2018-12-16 11:52 被阅读0次

这一块实在是因为之前没有过pytorch的经验,从0开始一步一步摸滚打爬。而且发现自己手总是处于闲置状态实在不好,每天还是写一些东西防止遗忘的过快吧。毕竟同一件事在不同的时间段看总会有一些不同的体会。
首先是说这一块的预训练模型,pytorch不愧是最有用户体验的一个工具,官方文档中这里给了一个resnet50的imagenet的预训练模型,具体的引用也给了一个很好的例子。导入torchvision包就可以解决这个问题。
下面这一个是从csdn blog中找到的一个说是能适配预训练模型的操作。

pretrained_params = torch.load('Pretrained_Model') 
model = The_New_Model(xxx) 
model.load_state_dict(pretrained_params.state_dict(), strict=False)

这里的load是把pretrained的模型导入进来,转化的是一个字典类型,然后如果下方load_state_dict的时候确实是把对应层的参数传到进来,strict=False给的解释是如果没有和其匹配的参数就会摒弃。这样对于现在的工作确实倒是匹配进去了,打算在服务器上试试看结果如何。
发现上述问题并不是匹配进去了,因为所有层的关键词都有一些命名问题,这样的话首先第一点就是解决每一层命名读不到(因为是个字典类型)。更正参考nonlocal中的convert_model(在做。。)
经过如下操作学习得到了可以将模型中对应的key进行更改。一开始的读取方式有误,实际上不用enumerate读取就可以直接得到key和value。加上enumerate相当于自己给他定义了key和v导致读取有问题。

pickle读取问题:

这里我们用python3实验的话会产生一个无法读取assii码的问题,用下面转换加一个encoding方式解决。这里很感谢网上一位博主的说明,十分的有针对性。

import torch
import torchvision
import collections
import pickle
#net=torch.load('resnet50-19c8e357.pth')
f=open('r50_pretrain_c2_model_iter450450_clean.pkl','rb')
net=pickle.load(f,encoding='bytes')
new_dict=collections.OrderedDict()
print(net)

然而用pickle读取转到pth并不清楚中间有什么处理过程,待研究。最后是强行存储为pth文件后会报错,暂不清楚原因。
和实验室同一级大家比我确实拉了一大截了,这一点我很清楚,现在还是先把能做的做好,其他的在实践中慢慢补充基础知识吧...这研一还有考试是真的烦...还得为了奖学金拼一拼哎....

相关文章

  • Pytorch预训练模型finetune

    这一块实在是因为之前没有过pytorch的经验,从0开始一步一步摸滚打爬。而且发现自己手总是处于闲置状态实在不好,...

  • pytorch finetune模型

    pytorch finetune模型 文章主要讲述如何在pytorch上读取以往训练的模型参数,在模型的名字已经变...

  • UIE实体关系抽取解读

    通过UIE默认抽取关系 通过预训练模型直接抽取,数据没有返回。 先看下通过finetune预训练模型后的结果如下:...

  • Finetune预训练模型

    1、PyTorch学习笔记(1)-finetune网络的一些注意事项https://blog.csdn.net/u...

  • pytorch如何给预训练模型添加新的层

    在使用pytorch预训练模型的时候发现预训练模型的输出层没有激活函数,为了提高模型的训练效果需要自己添加。以Re...

  • 如何使用pytorch torchvision.models中的

    pytorch中的torchvision.models中包含了多种预训练模型: VGG、Resnet、Googl...

  • 2019-04-02 Pytorch:加载预训练模型并保存

    参考链接: 1.用pytorch搭建AlexNet(微调预训练模型及手动搭建) - sjtuxx_lee的博客 -...

  • BERT fintune 的艺术

    BERT 预训练模型就如宰好待烹的猪,则 finetune 便是烹饪之法,猪头能用来做成香糯浓醇的烧猪头肉,猪蹄能...

  • Pytorch 使用预训练模型

    上一篇讲了如何载入模型,这里写一下如何使用载入的模型初始化新网络的部分层:我的理解在于,在pytorch中,模型的...

  • pytorch: 下载预训练模型

    下载 以resnet50为例,设置pretrained=True就会下载权重 默认存储路径: 也可通过访问网址去下...

网友评论

      本文标题:Pytorch预训练模型finetune

      本文链接:https://www.haomeiwen.com/subject/lmbtkqtx.html