昇思25天学习打卡营第10天|ResNet50迁移学习

ResNet50迁移学习

在这里插入图片描述

在实际应用中,由于训练数据集的不足,很少有人会从头开始训练整个网络。普遍的做法是使用预训练模型,这些模型在大型数据集上训练得到,然后在特定任务中使用,如初始化网络的权重参数或作为固定特征提取器。本章将使用迁移学习的方法对ImageNet数据集中的狼和狗图像进行分类。

数据准备

下载数据集

下载案例所用到的狗与狼分类数据集。数据集中的图像来自ImageNet,每个分类有大约120张训练图像和30张验证图像。使用download接口下载数据集,并将下载后的数据集自动解压到当前目录下。数据集的目录结构如下:

datasets-Canidae/data/
└── Canidae
    ├── train
    │   ├── dogs
    │   └── wolves
    └── val
        ├── dogs
        └── wolves

加载数据集

狼狗数据集提取自ImageNet分类数据集,使用mindspore.dataset.ImageFolderDataset接口来加载数据集,并进行相关图像增强操作。

定义输入参数

  • batch_size = 18: 批量大小
  • image_size = 224: 训练图像空间大小
  • num_epochs = 5: 训练周期数
  • lr = 0.001: 学习率
  • momentum = 0.9: 动量
  • workers = 4: 并行线程个数

数据集可视化

mindspore.dataset.ImageFolderDataset接口中加载的训练数据集返回值为字典,用户可通过 create_dict_iterator 接口创建数据迭代器,使用 next 迭代访问数据集。由于 batch_size 设为18,所以使用 next 一次可获取18个图像及标签数据。对获取到的图像及标签数据进行可视化,标题为图像对应的label名称。

训练模型

本章使用ResNet50模型进行训练。搭建好模型框架后,通过将pretrained参数设置为True来下载ResNet50的预训练模型并将权重参数加载到网络中。

构建ResNet50网络

固定特征进行训练

使用固定特征进行训练时,需要冻结除最后一层之外的所有网络层。通过设置 requires_grad == False 冻结参数,以便在反向传播中不计算这些参数的梯度。

训练和评估

开始训练模型,与没有预训练模型相比,这将节约一大半时间,因为此时可以不用计算部分梯度。当训练完成后,保存评估精度最高的ckpt文件于当前路径的./BestCheckpoint/resnet50-best-freezing-param.ckpt

可视化模型预测

使用固定特征得到的best.ckpt文件对验证集的狼和狗图像数据进行预测。若预测字体为蓝色即为预测正确,若预测字体为红色则预测错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值