第一节是关于昇思的基本介绍,主要是框架和流程方面的内容。

下面是MindSpore的总体架构图,介绍了MindSpore的几大优势。

昇思25天学习打卡营第1天|基本介绍、快速入门_学习

接下来介绍了执行流程,从左到右从下到上,先对数据进行处理,包括数据采样、数据迭代、数据格式转换等不同的数据操作。接着是对模型的训练,再往上是跟算法开发相关的用户更加贴近,包括存放大量的AI算法模型库ModelZoo,提供面向不同领域的开发工具套件MindSpore DevKit,另外还有高阶拓展库MindSpore Extend。

昇思25天学习打卡营第1天|基本介绍、快速入门_数据_02

第二节快速入门举了一个例子,可以更加清晰地看到数据是如何被处理、模型是如何被训练的。

在这里使用Mnist数据集,自动下载完成后,使用mindspore.dataset提供的数据变换进行预处理。

昇思25天学习打卡营第1天|基本介绍、快速入门_人工智能_03

train_dataset = MnistDataset('MNIST_Data/train')
test_dataset = MnistDataset('MNIST_Data/test')
  • 1.
  • 2.

MindSpore的dataset使用数据处理流水线(Data Processing 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

train_dataset = datapipe(train_dataset, 64)
test_dataset = datapipe(test_dataset, 64)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • vision.Rescale第一个参数代表rescale(缩放因子),第二个参数代表shift(平移因子)。基于给定的缩放和平移因子调整图像的像素大小。输出图像的像素大小为:output = image * rescale + shift。
  • vision.Normalize根据均值和标准差对输入图像进行归一化。output[channel] = (input[channel] - mean[channel]) / std[channel],其中 channel 代表通道索引,channel >= 1。
  • 第一个参数mean (sequence) - 图像每个通道的均值组成的列表或元组。平均值必须在 [0.0, 255.0] 范围内。
  • 第二个参数std (sequence) - 图像每个通道的标准差组成的列表或元组。标准差值必须在 (0.0, 255.0] 范围内。
  • vision.HWC2CHW的作用: shape (H, W, C) to shape (C, H, W).
  • transforms.TypeCast将输入的Tensor转换为指定的数据类型。