MindSpore基础实践》——MindSpore基础

网友投稿 1399 2022-05-29

1 MindSpore介绍

1.1 关于MindSpore

MindSpore是端边云全场景按需协同的华为自研AI计算框架,提供全场景统一API,为全场景AI的模型开发、模型运行、模型部署提供端到端能力。

MindSpore采用端-边-云按需协作分布式架构、微分原生编程新范式以及AI Native新执行模式,实现更好的资源效率、安全可信,同时降低行业AI开发门槛、释放昇腾芯片算力,助力普惠AI。

详情参考:MindSpore官网

1.2 MindSpore安装

MindSpore支持Ascend、GPU、CPU,大家可以根据自己的平台的选择适合自己的MindSpore包,下面以Windows平台为例进行安装。

MindSpore是支持Windows平台的,只不过只能以CPU的模式运行(暂时不支持Windows平台的GPU)。如果希望尝试MindSpore对GPU的支持,需要使用Ubuntu系列或者华为的EulerOS。

1.3 安装Anaconda

非常推荐使用Anaconda作为Python虚拟环境的管理。

你可以去Anaconda官网下载,一路Next即可。

1.4 创建MindSpore的Python Env

目前MindSpore仅仅支持Python 3.7.5,下面创建的pyhton env就叫做mindspore:

conda create -n mindspore python=3.7.5

1.5 安装MindSpore

我们使用pip方式进行安装

pip install https://ms-release.obs.cn-north-4.myhuaweicloud.com/1.2.1/MindSpore/cpu/windows_x64/mindspore-1.2.1-cp37-cp37m-win_amd64.whl --trusted-host ms-release.obs.cn-north-4.myhuaweicloud.com -i https://pypi.tuna.tsinghua.edu.cn/simple

1.6 验证是否安装成功

python -c “import mindspore;print(mindspore.version)”

如果输出MindSpore版本号,说明MindSpore安装成功了,如果输出No module named 'mindspore'说明未安装成功。

2 MindSpore基础

2.1 张量和数据类型

张量(Tensor)是MindSpore网络运算中的基本数据结构。张量中的数据类型可参考dtype。

不同维度的张量分别表示不同的数据,0维张量表示标量,1维张量表示向量,2维张量表示矩阵,3维张量可以表示彩色图像的RGB三通道等等。

MindSpore张量支持不同的数据类型,包含int8、int16、int32、int64、uint8、uint16、uint32、uint64、float16、float32、float64、bool_,与NumPy的数据类型一一对应。

在MindSpore的运算处理流程中,Python中的int数会被转换为定义的int64类型,float数会被转换为定义的float32类型。

步骤 1 指定MindSpore数据类型

导入MindSpore,设置Jupyter notebook的cell同时输出多行。

# 导入MindSpore import mindspore from mindspore import dtype from mindspore import Tensor # cell同时输出多行 from IPython.core.interactiveshell import InteractiveShell InteractiveShell.ast_node_interactivity = "all"

# 指定数据类型 a = 1 type(a) b = Tensor(a, dtype.float64) b.dtype

步骤 2 张量构造

《MindSpore基础实践》——MindSpore基础

构造张量时,支持传入Tensor、float、int、bool、tuple、list和NumPy.array类型,其中tuple和list里只能存放float、int、bool类型数据。

Tensor初始化时,可指定dtype。如果没有指定dtype,初始值int、float、bool分别生成数据类型为mindspore.int32、mindspore.float32、mindspore.bool_的0维Tensor, 初始值tuple和list生成的1维Tensor数据类型与tuple和list里存放的数据类型相对应,如果包含多种不同类型的数据,则按照优先级:bool < int < float,选择相对优先级最高类型所对应的mindspore数据类型。 如果初始值是Tensor,则生成的Tensor数据类型与其一致;如果初始值是NumPy.array,则生成的Tensor数据类型与之对应。

用数组创建张量

import numpy as np from mindspore import Tensor # 用数组创建张量 x = Tensor(np.array([[1, 2], [3, 4]]), dtype.int32) x

用数值创建张量

# 用数值创建张量 y = Tensor(1.0, dtype.int32) z = Tensor(2, dtype.int32) y z

用Bool创建张量

# 用Bool创建张量 m = Tensor(True, dtype.bool_) m

用tuple创建张量

# 用tuple创建张量 n = Tensor((1, 2, 3), dtype.int16) n

用list创建张量

# 用list创建张量 p = Tensor([4.0, 5.0, 6.0], dtype.float64) p

用常量创建张量

# 用常量创建张量 q = Tensor(1, dtype.float64) q

步骤 3 张量的属性

张量的属性包括形状(shape)和数据类型(dtype)。

形状:Tensor的shape,是一个tuple。

数据类型:Tensor的dtype,是MindSpore的一个数据类型。

x = Tensor(np.array([[1, 2], [3, 4]]), dtype.int32) x_shape = x.shape # 形状 x_dtype = x.dtype # 数据类型 x_shape x_dtype

x = Tensor(np.array([[1, 2], [3, 4]]), dtype.int32) x.shape # 形状 x.dtype # 数据类型 x.ndim # 维度 x.size # 大小

步骤 4 张量的方法

asnumpy():将Tensor转换为NumPy的array。

y = Tensor(np.array([[True, True], [False, False]]), dtype.bool_) # 将Tensor数据类型转换成NumPy y_array = y.asnumpy() y y_array

2.2 数据集加载

MindSpore.dataset提供API来加载和处理各种常见的数据集,如MNIST, CIFAR-10, CIFAR-100, VOC, ImageNet, CelebA等。

步骤 1 加载MNIST数据集

mindspore.dataset.MnistDataset

import os import mindspore.dataset as ds import matplotlib.pyplot as plt dataset_dir = "./data/train" # 数据集路径 # 从mnist dataset读取3张图片 mnist_dataset = ds.MnistDataset(dataset_dir=dataset_dir, num_samples=3) # 设置图像大小 plt.figure(figsize=(8,8)) i = 1 # 打印3张子图 for dic in mnist_dataset.create_dict_iterator(output_numpy=True): plt.subplot(3,3,i) plt.imshow(dic['image'][:,:,0]) plt.axis('off') i +=1 plt.show()

MindSpore还支持加载多种数据存储格式下的数据集,用户可以直接使用mindspore.dataset中对应的类加载磁盘中的数据文件。

步骤 2 加载NumPy数据集

mindspore.dataset.NumpySlicesDataset

import mindspore.dataset as ds data = ds.NumpySlicesDataset([1, 2, 3], column_names=["col_1"]) for x in data.create_dict_iterator(): print(x)

3 参考资料

https://gitee.com/mindspore/mindspore

https://github.com/mindspore-ai/mindspore

MindSpore

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:求职的时候才知道“天高地厚”,准毕业生们看过来,这有一份求职指南!
下一篇:Arcade:Python 游戏框架入门
相关文章