本篇文章2186字,读完约5分钟

前言

最近使用pytorch感觉很棒,而且一开始使用keras很愉快,速度也不慢。各种设计都是直接的,简洁的,便于研究的,这比张量流要臃肿得多。今天,让我们来谈谈pytorch的预培训,主要集中在编写自己的代码的经验上,并在论坛pytorch论坛中总结一些答案。

直接加载预训练模型

如果我们使用的模型与原始模型完全相同,那么我们可以直接加载其他人训练的模型:

my_resnet = myresnet(*args,**kwargs)

my _ resnet . load _ state _ dict(torch . load(" my _ resnet . PTH "))

当然,这种装载方法基于pytorch推荐的存储模型:

torch . save(my _ resnet . state _ dict()," my_resnet.pth ")

还有第二种装载方法:

my _ resnet = torch . load(my _ resnet . PTH)

加载部分预训练模型

事实上,大多数时候我们需要根据我们的任务调整我们的模型,所以很难保证模型与开放模型完全相同。然而,预训练模型的参数确实有助于提高训练的准确性。为了结合两者的优点,我们需要加载一些预训练模型。

pretraded _ dict = model _ zoo . load _ URL(model _ URL[resnet 152])

model_dict = model.state_dict()

#移除不属于model_dict的预包含_dict中的键

precured _ dict = { k:v代表k,v在precured _ dict . items()中,如果k在model_dict中}

#更新现有模型_字典

model _ dict . update(precured _ dict)

#加载我们真正需要的状态字典

model . load _ state _ dict(model _ dict)

因为原始模型中不匹配的键,即图层的名称,需要与原始模型中相应图层的名称不同。例如,如果resnet的最后一层的名称是FC(在pytorch中),那么我们修改后的resnet的最后一层不能采用这个名称,但可以称为FC \u

微修改基础模型的预训练

对于有很大变化的模型,我们可能需要自己实现它,然后加载其他人的预训练参数。然而,pytorch中已经存在一些基本模型,我只想做一些小的修改。那我该怎么办?我还会再做一次吗?当然不是。

让我们先来看看如何对模型进行微观修改。

基础模型的微观修改

在pytorch的torchvision中已经有很多常用的模型,可以直接调用:

alexnet

vgg

resnet

挤压网

densenet

将torchvision.models作为模型导入

resnet18 = models.resnet18()

alexnet = models.alexnet()

挤压网=模型。挤压网1_0()

densenet = models.densenet_161()

然而,对于我们的任务来说,有些层是不可直接使用的,我们需要稍微改变它们。例如,resnet的最后一个完全连接的层被分成1000个类别,而我们只有21个类别;对于另一个例子,resnet卷积接收的第一层的信道是3,并且输入图像的信道可以是4,因此它可以通过以下方法修改:

resnet.conv1 = nn.conv2d(4,64,kernel_size=7,stride=2,padding=3,bias=false)

resnet.fc = nn.linear(2048,21)

简单的预训练

模型已经被修改,所以让我们做简单的预训练。

首先,我们从torchvision调用基本模型并加载预训练模型。然后,关键是用我们需要的层直接替换该层:

resnet = torch vision . models . resnet 152(pre trained = true)

#原来1000个班,改为10个班

resnet.fc = torch.nn.linear(2048,10)

使用预处理参数,预处理模型将被直接加载。内部实现与上述加载预处理的方法相同。因为预训练参数是首先加载的,这意味着模型中已经有参数,所以替换最后一层。好吧。

雷锋。(公开号码:雷锋。出版社:ycszen,本文作者。这篇文章最初发表在作者的智虎专栏。

张量流&神经网络算法高级应用类即将开始!

从初级到高级,理论+实战,一站式深入了解张量流!

本课程旨在深入学习开发人员,并教授如何使用张量流解决特定问题,如图像识别和文本分析。为期10周的课程将从张量流的原理和基本实践技能开始,逐步教会学生如何在张量流上构建cnn、自编码、rnn、gan等模型,最终掌握一套基于张量流的深度学习和发展的专业技能。

作为思想工作的高级技术专家,童达和白华川两位教师在构建大数据平台和开发深度学习系统方面有着丰富的经验。

时间:每周二和周四晚上20: 00到21: 00

课程时长:共20小时,10周完成,每周2次,每次1小时

在线教学地址:mooc.ai/

雷锋文章版权所有。严禁擅自转载。详情请参考转载说明。

来源:搜狐微门户

标题:PyTorch 的预训练,是时候学习一下了

地址:http://www.shwmhw.com/shxw/62751.html