昇思25天学习打卡营第25天|munger85

ResNet50迁移学习

迁移学习指的是在预训练的模型基础上对特殊的任务,对新的任务进行一个在训练,使得模型能够适应新的任务。新的任务,比方说图像分类的话,我就只需要分别他是狼还是狗?这就是一个新的任务,以前的模型可能它能够分类10个类,但是现在我只需要它分类两个类别,所以是新的任务。首先肯定是下载训练数据集,训练数据集里面就只有狼和狗的图片。
from download import download

dataset_url = “https://mindspore-website.obs.cn-north-4.myhuaweicloud.com/notebook/datasets/intermediate/Canidae_data.zip”

download(dataset_url, “./datasets-Canidae”, kind=“zip”, replace=True)
这是训练数据集的目录格式,它也是分为训练和验证集。每一个训练的验证及里面就只有两个类别,一个是狗,一个是狼。
在这里插入图片描述
那么每一次拿到数据集肯定要对这些数据进行一个预处理,然后再送过去进行训练。那么在数据进行预处理的时候,往往要根据数据集本身所具有统计特征,然后来设定一个规划的值,这个值下面的值就是通过这个数据集的统计特征所选出来的值,所以是固定的。
在这里插入图片描述

这些值是基于ImageNet数据集的统计特性计算出来的,分别表示每个通道的均值和标准差。这些值被广泛采用,因为它们在实践中被证明对许多任务和模型效果良好。然后我们先看一下,可视化一下这个数据集的图片和标签。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述由于是迁移学习,所以需要对参数进行一些初始化。 。权重参数的初始化,即使是迁移学习也要进行初始化。用来适应于新的任务,所以这个初始化的值是需要自己根据自己的任务去确定的。

Gamma参数通常用于批归一化(Batch Normalization)层中,用于缩放归一化后的激活值。
在这里插入图片描述当然不是所有的网络w都会初始化,只是在某些网络层有初始化
在这里插入图片描述这一次咱们也是使用的residualBlock,bottleneck,因为这一种适用于resnet50等层比较多的模型。
在这里插入图片描述由于新的分类任务只要分类两个类别,狼和狗,所以我们需要把最后一层分类成全连接层重新重置一下。而且训练的就是这一个最后的分类的全连接层。
在这里插入图片描述
opt = nn.Momentum(params=net_work.trainable_params(), learning_rate=lr, momentum=0.5)
loss_fn = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction=‘mean’)

如果训练损失震荡较大,可以尝试增加动量系数
如果模型收敛速度慢,可以适当减小动量系数。
那么现在开始训练训练可以发现随着轮数的增多,准确率也在不断提高。
在这里插入图片描述最后把最后一层分别为两个类别的。数字把它转成我们人能看得懂的狗还是狼?
在这里插入图片描述这样我们就可以使用这个模型了,去可以分辨。这个图片到底是狗还是狼
在这里插入图片描述
请添加图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值