- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PyTorch中的预训练模型;PyTorch库中包含了多种常用的网络结构,并且提供了预训练模型。
预训练模型可以帮助使用者快速实现模型的建立,可以减少深度学习建模的工作量。;;预训练模型是一个在大型数据集(通常是大型图像分类任务)中完成训练并已保存模型,预训练模型的使用,即将预训练模型的权重加载到新的模型。
相较于使用随机初始化权重的模型,使用了预训练模型权重的模型得到结果的速度更快,但是两者得到的结果并不会有太大的差距。
对于希望应用某个现有框架来解决自己任务的人而言,由于时间限制或硬件水平限制,往往并不会选择从零开始训练一个新模型。
而是使用预训练模型作为基准来改进现有模型,从而快速实现模型的建立,这也是预训练模型存在的意义。;一个预训练模型对于需要解决的问题并不是100%的准确对接,但可以节省大量时间。
在一个属于图像分类的手机图片分辨项目上,训练数据集中有四千多张图片,测试集中有1200张图片,项目任务是将图片分到16个类别中。
如果采用一个简单的多层感知机(Multi-laterPerceptron,MLP)模型,在对输入图片(尺寸为224×224×3)平整化后,训练模型所得结果的准确率只有百分之六左右。
即便尝试对隐藏层的神经元数量和丢弃率进行调整,准确率都没有显著提高。
如果采用卷积神经网络,训练结果表明准确率有了显著的提高,可以达到原来的两倍以上,但距离分类最低的标准还是太远。
如果采用在ImageNet数据集上预先训练好的模型VGG16,在VGG16结构的基础上,将softmax层的神经元个数从1000改为16,从而适应16分类的问题,模型在手机图片分辨项目上的准确率可以达到70%。
同时,使用预训练模型VGG16最大的好处是大大减少了训练的时间,只需要对全连接层进行训练。;;在大型数据集上训练模型,并将模型的结构和权重应用到目前所面对的问题上,即将预训练模型“迁移”到正在面对的特定问题上。
在解决目前面对的问题的时候需要匹配好对应的预训练模型,如果问题与预训练模型训练情景有很大不同,那么模型所得到的预测结果会非常不理想。
例如,把一个原本用于语音识别的模型用作用户识别,只能得到非常差的结果。
ImageNet数据集已经被广泛用作计算机视觉领域的训练集,因为数据规模足够大(120万张图片),有助于训练一般模型,ImageNet数据集的训练目标是将所有的图片准确划分到1000个分类条目下。
数据集的1000个分类来源于日常生活,如动物类、家庭生活用品、交通工具等。
使用ImageNet数据集训练的网络对于数据集外的图片也表现出很好的泛化能力。
;在预训练模型的使用过程中,不会过多地修改预训练模型中的权重,而是对权重进行微调(finetune)。
例如,在修改模型的过程中,通常会采用比一般训练模型更低的学习率。
在预训练模型的使用中,常见的用法有以下3种。
将预训练模型中的输出层去掉,保留剩下的网络层作为待训练网络的特征提取层。
保留预处理模型的网络结构,并初始化预训练模型的全部权重。然后重新训练网络得到新的模型权重。
冻结预训练模型中前k个层的权重,重新训练后面的层,得到新的权重。
;不同场景中预训练模型的具体应用如下。
场景一:数据集规模小,数据相似度高。
在这种场景下,因为数据与训练模型的训练数据相似度很高,因此不需要重新训练模型,只需要对输出层进行修改即可。
例如,手机图片分辨场景中提到的16分类问题,只需将输出从1000个类别改为16个类别。
场景二:数据集规模小,数据相似度不高。
在这种场景下,可以冻结预训练模型中的前k个层中的权重,然后重新训练后面的n-k个层,n为网络的总层数。
同时输出层也需要根据相应的输出格式进行修改。
;场景三:数据集规模大,数据相似度不高。
在这种场景下,因为实际数据与预训练模型的训练数据之间存在很大差异,采用预训练模型将不会是一种高效的方式。
最好的方法是将预训练模型中的权重全都初始化后在新数据集的基础上重新开始训练。
场景四:数据集规模大,数据相似度高。
在这种理想场景下,最好的方式是保持模型原有的结构和权重不变。
随后在新数据集的基础上重新训练。
;;PyTorch的torchvision库的models包中包含AlexNet、DenseNet、Inception、ResNet、Squeezenet、VGG(VGG16和VGG19)等常用网络结构。
并且提供了预训练模型,可通过调用包的方式读取网络结构和预训练模型(模型参数)。
ResNet主要有5种变形:ResNet50、Res101、Res152、ResNet50V2、Res101V2、Res152V2。
每个网络都包括3个主要部分:输入部分、输出部分和中间卷积部分。
尽管ResNet变种形式丰富,但是都有着相
文档评论(0)