马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、环境预备
1.进入ModelArts官网
云平台资助用户快速创建和摆设模子,管理全周期AI工作流,选择下面的云平台以开始使用昇思MindSpore,可以在昇思教程中进入ModelArts官网
创建notebook,点击【打开】启动,进入ModelArts调试环境页面。
留意选择西南-贵阳一,mindspore_2.3.0
等候环境搭建完成
下载案例notebook文件
打开官网教程页面快速入门 — MindSpore master 文档,选择想要运行的教程,下载notebook文件。
选择ModelArts Upload Files上传.ipynb文件
进入昇思MindSpore官网,点击上方的安装获取安装下令
MindSpore版本升级,镜像自带的MindSpore版本为2.3,该活动要求在MindSpore2.4.0版本体验,以是必要举行MindSpore版本升级。
下令如下:
- export no_proxy='a.test.com,127.0.0.1,2.2.2.2'
- pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/2.4.0/MindSpore/unified/aarch64/mindspore-2.4.0-cp39-cp39-linux_aarch64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple
复制代码
回到Notebook中,在第一块代码前加下令
- pip install --upgrade pip
- pip install mindvision
- pip install download
复制代码 二、快速入门
本节通过MindSpore的API来快速实现一个简单的深度学习模子。若想要深入相识MindSpore的使用方法,请参阅各节末了提供的参考链接。
- import mindspore
- from mindspore import nn
- from mindspore.dataset import vision, transforms
- from mindspore.dataset import MnistDataset
复制代码 处置惩罚数据集
MindSpore提供基于Pipeline的数据引擎,通过数据集(Dataset)实现高效的数据预处置惩罚。在本教程中,我们使用Mnist数据集,主动下载完成后,使用mindspore.dataset提供的数据变更举行预处置惩罚。
如果下载失败,直接打开链接当地下载上传
MNIST数据集目次结构如下:
- MNIST_Data
- └── train
- ├── train-images-idx3-ubyte (60000个训练图片)
- ├── train-labels-idx1-ubyte (60000个训练标签)
- └── test
- ├── t10k-images-idx3-ubyte (10000个测试图片)
- ├── t10k-labels-idx1-ubyte (10000个测试标签)
复制代码 数据下载完成后,得到数据集对象。
- train_dataset = MnistDataset('MNIST_Data/train')
- test_dataset = MnistDataset('MNIST_Data/test')
复制代码 打印数据会合包罗的数据列名,用于dataset的预处置惩罚。
- print(train_dataset.get_col_names())
- ['image', 'label']
复制代码 MindSpore的dataset使用数据处置惩罚流水线(Data Processing Pipeline),需指定map、batch、shuffle等操纵。这里我们使用map对图像数据及标签举行变更处置惩罚,将输入的图像缩放为1/255,根据均值0.1307和标准差值0.3081举行归一化处置惩罚,然后将处置惩罚好的数据集打包为巨细为64的batch。
可使用create_tuple_iterator 或create_dict_iterator对数据集举行迭代访问,检察数据和标签的shape和datatype。
网络构建
mindspore.nn类是构建全部网络的基类,也是网络的根本单位。当用户必要自界说网络时,可以继续nn.Cell类,并重写__init__方法和construct方法。__init__包罗全部网络层的界说,construct中包罗数据(Tensor)的变更过程。
模子训练
在模子训练中,一个完备的训练过程(step)必要实现以下三步:
正向盘算:模子推测结果(logits),并与精确标签(label)求推测丧失(loss)。
反向流传:使用主动微分机制,主动求模子参数(parameters)对于loss的梯度(gradients)。
参数优化:将梯度更新到参数上。
MindSpore使用函数式主动微分机制,因此针对上述步调必要实现:
界说正向盘算函数。
使用value_and_grad通过函数变更得到梯度盘算函数。
界说训练函数,使用set_train设置为训练模式,实行正向盘算、反向流传和参数优化。
除训练外,我们界说测试函数,用来评估模子的性能。
训练过程需多次迭代数据集,一次完备的迭代称为一轮(epoch)。在每一轮,遍历训练集举行训练,竣事后使用测试集举行推测。打印每一轮的loss值和推测精确率(Accuracy),可以看到loss在不绝降落,Accuracy在不绝进步。
- Epoch 1
- -------------------------------
- loss: 2.311627 [ 0/938]
- loss: 1.666076 [100/938]
- loss: 1.110389 [200/938]
- loss: 0.605814 [300/938]
- loss: 0.345753 [400/938]
- loss: 0.378101 [500/938]
- loss: 0.504920 [600/938]
- loss: 0.379824 [700/938]
- loss: 0.231474 [800/938]
- loss: 0.344825 [900/938]
- Test:
- Accuracy: 91.0%, Avg loss: 0.316116
- Epoch 2
- -------------------------------
- loss: 0.598345 [ 0/938]
- loss: 0.291100 [100/938]
- loss: 0.311943 [200/938]
- loss: 0.234684 [300/938]
- loss: 0.170997 [400/938]
- loss: 0.308111 [500/938]
- loss: 0.355017 [600/938]
- loss: 0.135616 [700/938]
- loss: 0.173434 [800/938]
- loss: 0.325416 [900/938]
- Test:
- Accuracy: 92.7%, Avg loss: 0.251752
- Epoch 3
- -------------------------------
- loss: 0.183711 [ 0/938]
- loss: 0.194196 [100/938]
- loss: 0.257925 [200/938]
- loss: 0.237403 [300/938]
- loss: 0.310123 [400/938]
- loss: 0.232147 [500/938]
- loss: 0.089809 [600/938]
- loss: 0.289659 [700/938]
- loss: 0.173989 [800/938]
- loss: 0.263169 [900/938]
- Test:
- Accuracy: 93.9%, Avg loss: 0.219952
- Done!
复制代码 生存模子
模子训练完成后,必要将其参数举行生存。
加载模子
加载生存的权重分为两步:
重新实例化模子对象,构造模子。
加载模子参数,并将其加载至模子上。
加载后的模子可以直接用于推测推理。
|