前言

本文为昇思25天学习打卡营系列学习记录文章。
快速入门:主要通过手写数字识别案例来快速熟悉使用mindspore框架的大致流程。


1.配置环境

该小节主要实现mindspore的安装,实验环境库的导入。
在这里插入图片描述

2.处理数据集

该章节在本案例使用Mnist数据集。

  1. 首先完成数据的下载
  2. 获得数据的训练集对象和测试集对象
  3. 写一个datapipe方法,可以对图像数据及标签进行变换处理,然后将处理好的数据集打包为大小为batch_size的batch
  4. 将训练集对象和测试集对象通过datapipe方法完成数据及标签进行变换处理并分为一个个大小为64的batch
  5. 对训练集对象和测试集对象迭代查看。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

3.网络构建

该章节主要实现了网络类的创建和实例化,网络主要包含线性层Dense()和激活函数ReLU(),construct()即网络的前向传播(推理)。
最后print()打印模型结构。
在这里插入图片描述

4.模型训练

在模型训练中,一个完整的训练过程(step)需要实现以下三步:

  1. 正向计算:模型预测结果(logits),并与正确标签(label)求预测损失(loss)。
  2. 反向传播:利用自动微分机制,自动求模型参数(parameters)对于loss的梯度(gradients)。
  3. 参数优化:将梯度更新到参数上。

MindSpore使用函数式自动微分机制,因此针对上述步骤需要实现:

  1. 定义正向计算函数。
  2. 使用value_and_grad通过函数变换获得梯度计算函数。
  3. 定义训练函数,使用set_train设置为训练模式,执行正向计算、反向传播和参数优化。
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

5.模型保存

模型保存为ckpt文件
在这里插入图片描述

6.加载模型

实现模型的加载和推理
在这里插入图片描述

思考总结

本文章梳理了使用mindspore框架的大致流程,同时也是训练一个模型的基本流程。
个人认为mindspore框架的一个特点是在数据集处理和模型训练对很多的步骤都用函数进行了封装,对于初学者会比较容易接受,但对于复杂的数据集处理和模型训练可能会少一些灵活性。
本人也是mindspore初学者,正在虚心学习。

PS

本期算力

在这里插入图片描述

个人打卡

在这里插入图片描述

Logo

鲲鹏昇腾开发者社区是面向全社会开放的“联接全球计算开发者,聚合华为+生态”的社区,内容涵盖鲲鹏、昇腾资源,帮助开发者快速获取所需的知识、经验、软件、工具、算力,支撑开发者易学、好用、成功,成为核心开发者。

更多推荐