Mindspore开发(一):编程概念

举报
zxdwinnie 发表于 2021/11/30 11:39:44 2021/11/30
【摘要】 一、编程概念:张量(Tensor)• MindSpore中最基础的数据结构是张量 (Tensor),是计算的基础 : > 是Parameter(权重和偏置)的载体,Feature Map的载体; > 可与numpy.ndarray无缝转换1. Tensor声明和使用 t1 = Tensor(np.zeros([1, 2, 3]), ms.float32) assert isinstance(...

MindSpore是匹配腾芯片的最佳开源AI计算框架,支持AsendGPUCPU平台。下面对Mindspore的开发做一个基础的编程介绍。

一、编程概念:张量(Tensor


MindSpore中最基础的数据结构是张量 (Tensor),是计算的基础 :
> Parameter(权重和偏置)的载体,Feature Map的载体;
> 可与numpy.ndarray无缝转换


1. Tensor声明和使用

t1 = Tensor(np.zeros([1, 2, 3]),
ms.float32)
assert isinstance(t1, Tensor)
assert t1.shape == (1, 2, 3)
assert t1.dtype == ms.float32

2. TensorParameter的数据载体

Parameter的属性:
default_input: Tensor
name: str
requires_grad: bool
layerwise_parallel: bool

3. Tensor常见的操作

// 转换成Numpy数组
asnumpy()
// 获取Tensor的大小
size()
// 获取Tensor的维数
dim()
// 获取Tensor的数据类型
dtype
// 设置Tensor的数据类型
set_dtype()
// 获取Tensor的形状.
shape

二、编程概念:算子(Operation

1、常用的Operation

(1)array: Array相关的算子

- ExpandDims
- Squeeze
- Concat
- OnesLike
- Select
- StridedSlice
- ScatterNd
- ……

(2) math: 数学计算相关的算子

- AddN
- Cos
- Sub
- Sin
- Mul
- LogicalAnd
- MatMul
- LogicalNot
- RealDiv
- Less
- ReduceMean
- Greater …..

(3) nn: 网络类算子

- Conv2d
- MaxPool
- Flatten
- AvgPool
- Softmax
- TopK
- ReLU
- SoftmaxCrossEntropy
- Sigmoid
- SmoothL1Loss
- Pooling
- SGD
- BatchNorm
- SigmoidCrossEntropy …..

(4)control: 控制类算子

- ControlDepend

示例如下:
>>> data1 = Tensor(np.array([[0, 1], [2,
1]]).astype(np.int32))
>>> data2 = Tensor(np.array([[0, 1], [2,
1]]).astype(np.int32))
>>> op = P.Concat()
>>> output = op((data1, data2))

>>> cos = P.Cos()
>>> input_x = Tensor(np.array([0.24, 0.83, 0.31, 0.09]),
mindspore.float32)
>>> output = cos(input_x)

>>> input_x = Tensor(np.array([-1, 2, -3, 2, -1]),
mindspore.float16)
>>> relu = nn.ReLU()
>>> relu(input_x)
[0. 2. 0. 2. 0.]

三、编程概念:Cell

CellMindSpore核心编程结构,定义了执行计算的基本模块。Cell对象有以下成员方法:
> __init__,初始化参数(Parameter),子模块(Cell),算子(Primitive)等组件,进行初始化的校验;
> construct,定义执行的过程,有一些语法限制。图模式时,会被编译成图来执行;
> bprop(可选),自定义模块的反向。未定义时,框架会自动生成反向图,计算construct的反向。

预定义的Cell
> nn算子:ReLU, Dense, Conv2d
> Loss, Optimizer, Metrics
> WrapperTrainOneStepCell, WithLossCell, WithGradCell

示例如下:

class MyNet(nn.Cell):
    def __init__(self, in_channel, out_channel):
        super(MyNet, self).__init__()
        self.fc = nn.Dense(in_channel, out_channel, weight_init='normal', bias_init='zero', has_bias=True)
        self.relu = nn.ReLU()
    def construct(self, x):
        x = self.fc(x)
        x = self.relu(x)
        return x

四、常用模块

模块 描述
mindspore.dataset
常见Dataset加载和处理接口,如MNIST, CIFAR-10, VOC, COCO, ImageFolder, CelebA等;
transforms提供基于OpenCVPIL及原生实现的数据处理、数据增强接口;
text提供文本处理接口;
mindspore.common
Tensor(张量),Parameter(权重、偏置等参数),dtype (数据类型)及InitializerParameter初始化)等接口
mindspore.context
设置上下文,如设置GraphPyNative模式、设备类型、中间图或数据保存、Profiling、设备内存、自动并
行等
mindspore.nn
Neural Network常用算子,如Layer(层)、Loss(损失函数)、Optimizer(优化器)、Metrics(验证指
标)以及基类CellWrapper
mindspore.ops
原语算子operations(需初始化),组合算子composite,功能算子(已初始化的原语算子)
mindspore.train
Model(训练、验证、推理接口)、callback(损失监控、Checkpoint保存、Summary记录等),
serialization(加载Checkpoint、导出模型等),quant(量化)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。