Mindspore开发(一):编程概念
【摘要】 一、编程概念:张量(Tensor)• MindSpore中最基础的数据结构是张量 (Tensor),是计算的基础 : > 是Parameter(权重和偏置)的载体,Feature Map的载体; > 可与numpy.ndarray无缝转换1. Tensor声明和使用 t1 = Tensor(np.zeros([1, 2, 3]), ms.float32) assert isinstance(...
MindSpore是匹配昇腾芯片的最佳开源AI计算框架,支持Asend、GPU、CPU平台。下面对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. Tensor是Parameter的数据载体
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
• Cell是MindSpore核心编程结构,定义了执行计算的基本模块。Cell对象有以下成员方法:
> __init__,初始化参数(Parameter),子模块(Cell),算子(Primitive)等组件,进行初始化的校验;
> construct,定义执行的过程,有一些语法限制。图模式时,会被编译成图来执行;
> bprop(可选),自定义模块的反向。未定义时,框架会自动生成反向图,计算construct的反向。
• 预定义的Cell
> nn算子:ReLU, Dense, Conv2d
> Loss, Optimizer, Metrics
> Wrapper:TrainOneStepCell, 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提供基于OpenCV、PIL及原生实现的数据处理、数据增强接口;
text提供文本处理接口;
|
mindspore.common
|
Tensor(张量),Parameter(权重、偏置等参数),dtype (数据类型)及Initializer(Parameter初始化)等接口
|
mindspore.context
|
设置上下文,如设置Graph和PyNative模式、设备类型、中间图或数据保存、Profiling、设备内存、自动并
行等
|
mindspore.nn
|
Neural Network常用算子,如Layer(层)、Loss(损失函数)、Optimizer(优化器)、Metrics(验证指
标)以及基类Cell和Wrapper
|
mindspore.ops
|
原语算子operations(需初始化),组合算子composite,功能算子(已初始化的原语算子)
|
mindspore.train
|
Model(训练、验证、推理接口)、callback(损失监控、Checkpoint保存、Summary记录等),
serialization(加载Checkpoint、导出模型等),quant(量化)
|
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)