今天是参加昇思25天学习打卡营的第二天,学习的内容是昇思框架的要给快速入门,这里做一个简单的分享。
今天学习的目标是:利用昇思框架来实现简单的图像分类模型训练。整个训练过程总过分为以下几个步骤:
(1)数据的准备和预处理
MindSpore提供基于Pipeline的数据引擎,通过数据集(Dataset)和数据变换(Transforms)实现高效的数据预处理。我们只需要将将下载的数据集组织成datapipe对象即可。
(2)模型构建
主要是基于mindspore.nn类来创建自己需要的模型。模型的定义代码参考:
class Network(nn.Cell):
def __init__(self):
super().__init__()
self.flatten = nn.Flatten()
self.dense_relu_sequential = nn.SequentialCell(
nn.Dense(28*28, 512),
nn.ReLU(),
nn.Dense(512, 512),
nn.ReLU(),
nn.Dense(512, 10)
)
def construct(self, x):
x = self.flatten(x)
logits = self.dense_relu_sequential(x)
return logits
(3)模型的训练
模型训练的过程主要包括正向计算、反向传播、参数优化三个部分,我们需要定义正向计算函数、反向传播函数、参数优化函数以及用于评估性能的测试函数。 这些都与pytorch等框架一致。定义完成之后就可以进行模型的训练了。
(4)模型的保存
训练好的模型可以的通过的保存函数来保存模型的参数用于后续直接调用模型。
(5)模型的加载和使用
基于已经保存好的模型,我们可以通过加载函数来加载模型,直接使用已经训练好的成果。模型的加载主要包括两个步骤:一是重新实例化模型对象,二是将参数从磁盘中读入然后加载到的该实例对象。
以上是快速入门中的全部内容,运行结果如下图: