昇思25天学习打卡营第2天|快速入门

使用MindSpore实现简单的深度学习模型

环境配置

第一步当然是装包:

!pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspore==2.2.14
import mindspore
from mindspore import nn
from mindspore.dataset import vision, transforms
from mindspore.dataset import MnistDataset

数据集处理

提供基于Pipeline的数据引擎。
使用Dataset和Transforms处理数据。

使用的数据集是Mnist数据集,这是一个图片及其标签的数据集。

Dataset使用Pipeline,因此需要定义map、batch、shuffle等操作。首先对图像数据及标签使用map进行变换处理,再打包为大小为64的batch。

def datapipe(dataset, batch_size):
    image_transforms = [
        vision.Rescale(1.0 / 255.0, 0),
        vision.Normalize(mean=(0.1307,), std=(0.3081,)),
        vision.HWC2CHW()
    ]
    label_transform = transforms.TypeCast(mindspore.int32)

    dataset = dataset.map(image_transforms, 'image')
    dataset = dataset.map(label_transform, 'label')
    dataset = dataset.batch(batch_size)
    return dataset

解释一下这里的三个操作

  1. 首先进行rescale,由之前的0-255除以255转化为0-1
  2. 再进行归一化,使图像的每个通道具有特定的均值和标准差。这里的操作会减去均值0.1307,再除以0.3081,得到0均值,标准方差的数据。
  3. 最后转换图像的通道顺序,即改变图像的形状,从 (height, width, channels) 转换为 (channels, height, width)。大多数的深度学习框架都要求图像的通道数据放在最前面。

随后就是进行map和batch了。

网络构建

使用mindspore.nn构建所有网络的基类,这也是网络的基本单元。
自定义网络时,继承nn.Cell并重写 init 方法(定义网络层)和construct方法(数据的变换)。

模型训练

正常的模型训练要包括三步

  1. 正向计算:预测并计算损失
  2. 反向传播:利用自动微分,求模型参数对于损失的梯度
  3. 参数优化:将梯度更新到参数上

在使用MindSpore时,需要的几步是

  1. 定义损失函数,定义正向计算函数
  2. 使用value_and_grad获得梯度计算函数
  3. 使用optimizer和梯度计算函数定义训练函数
  4. 设为训练模式
  5. 执行上述的三个步骤

一次完整的迭代称为一轮epoch,一般情况下随着epoch次数增多,loss下降,accuracy增加。
模型训练完成后,需要将模型参数进行保存。

模型加载

需要以下几步

  1. 创建空模型
  2. 加载模型训练后保存的checkpoint
  3. 把模型载入到空模型中

总结

今天学习了搭建一个简单深度学习网络的基本步骤,由环境搭建、数据集处理、模型搭建、模型训练到模型加载。串通了整个模型在MindSpore的运作逻辑。

打卡凭证

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值