mindspore.nn
神经网络Cell。
用于构建神经网络中的预定义构建块或计算单元。
动态shape的支持情况详见 nn接口动态shape支持情况 。
MindSpore中 mindspore.nn 接口与上一版本相比,新增、删除和支持平台的变化信息请参考 mindspore.nn API接口变更 。
基本构成单元
接口名 |
概述 |
支持平台 |
MindSpore中神经网络的基本构成单元。 |
|
|
运行从MindIR加载的计算图。 |
|
|
损失函数的基类。 |
|
|
用于参数更新的优化器基类。 |
|
容器
接口名 |
概述 |
支持平台 |
构造Cell列表。 |
|
|
构造Cell顺序容器。 |
|
封装层
接口名 |
概述 |
支持平台 |
分布式优化器。 |
|
|
用于动态更新损失缩放系数(loss scale)的神经元。 |
|
|
固定损失缩放系数的神经元。 |
|
|
训练网络的封装。 |
|
|
用于获取下一条数据的Cell。 |
|
|
这个函数的作用是将输入在第零维度拆成 interleave_num 份,然后执行包裹的cell的计算。 |
|
|
更新参数的Cell。 |
|
|
将MiniBatch切分成更细粒度的MicroBatch,用于流水线并行的训练中。 |
|
|
时间序列封装层。 |
|
|
训练网络封装类。 |
|
|
使用混合精度功能的训练网络。 |
|
|
封装前向网络和损失函数。 |
|
|
包含损失函数的Cell。 |
|
卷积神经网络层
接口名 |
概述 |
支持平台 |
对输入Tensor计算一维卷积。 |
|
|
计算一维转置卷积,可以视为Conv1d对输入求梯度,也称为反卷积(实际不是真正的反卷积)。 |
|
|
对输入Tensor计算二维卷积。 |
|
|
计算二维转置卷积,可以视为Conv2d对输入求梯度,也称为反卷积(实际不是真正的反卷积)。 |
|
|
对输入Tensor计算三维卷积。 |
|
|
计算三维转置卷积,可以视为Conv3d对输入求梯度,也称为反卷积(实际不是真正的反卷积)。 |
|
|
从图像中提取滑窗的区域块。 |
|
循环神经网络层
接口名 |
概述 |
支持平台 |
循环神经网络(RNN)层,其使用的激活函数为tanh或relu。 |
|
|
循环神经网络单元,激活函数是tanh或relu。 |
|
|
GRU(Gate Recurrent Unit)称为门控循环单元网络,是循环神经网络(Recurrent Neural Network, RNN)的一种。 |
|
|
GRU(Gate Recurrent Unit)称为门控循环单元。 |
|
|
长短期记忆(LSTM)网络,根据输入序列和给定的初始状态计算输出序列和最终状态。 |
|
|
长短期记忆网络单元(LSTMCell)。 |
|
Transformer层
接口名 |
概述 |
支持平台 |
论文 Attention Is All You Need 中所述的多头注意力的实现。 |
|
|
Transformer的编码器层。 |
|
|
Transformer的解码器层。 |
|
|
Transformer编码器模块,多层 TransformerEncoderLayer 的堆叠,包括MultiheadAttention层和FeedForward层。 |
|
|
Transformer的解码器。 |
|
|
Transformer模块,包括编码器和解码器。 |
|
嵌入层
接口名 |
概述 |
支持平台 |
嵌入层。 |
|
|
嵌入查找层。 |
|
|
根据指定的索引和字段ID,返回输入Tensor的切片。 |
|
非线性激活函数层
接口名 |
概述 |
支持平台 |
CELU激活层(CELU Activation Operator)。 |
|
|
指数线性单元激活函数(Exponential Linear Unit activation function)。 |
|
|
快速高斯误差线性单元激活函数(Fast Gaussian Error Linear Units activation function)。 |
|
|
高斯误差线性单元激活函数(Gaussian error linear unit activation function)。 |
|
|
门线性单元函数(Gated Linear Unit function)。 |
|
|
获取激活函数。 |
|
|
按元素计算Hardtanh函数。 |
|
|
Hard Shrink激活函数。 |
|
|
Hard Sigmoid激活函数。 |
|
|
对输入的每个元素计算Hard Swish。 |
|
|
Leaky ReLU激活函数。 |
|
|
按元素计算Log Sigmoid激活函数。 |
|
|
按元素计算Log Softmax激活函数。 |
|
|
局部响应归一化操作LRN(Local Response Normalization)。 |
|
|
逐元素计算输入Tensor的MISH(Self Regularized Non-Monotonic Neural Activation Function 自正则化非单调神经激活函数)。 |
|
|
Softsign激活函数。 |
|
|
PReLU激活层(PReLU Activation Operator)。 |
|
|
修正线性单元激活函数(Rectified Linear Unit activation function)。 |
|
|
ReLU6激活函数。 |
|
|
Randomized Leaky ReLU激活函数。 |
|
|
激活函数selu(Scaled exponential Linear Unit)。 |
|
|
SiLU激活函数。 |
|
|
Sigmoid激活函数。 |
|
|
Softmin函数,它是二分类函数 |
|
|
Softmax激活函数,它是二分类函数 |
|
|
应用于2D特征数据的Softmax函数。 |
|
|
SoftShrink激活函数。 |
|
|
逐元素计算Tanh函数,返回一个新的Tensor,该Tensor是输入元素的双曲正切值。 |
|
|
Tanhshrink激活函数。 |
|
|
Threshold激活函数,按元素计算输出。 |
|
线性层
接口名 |
概述 |
支持平台 |
全连接层。 |
|
|
双线性全连接层。 |
|
Dropout层
接口名 |
概述 |
支持平台 |
随机丢弃层。 |
|
|
在训练期间,以服从伯努利分布的概率 p 随机将输入Tensor的某些通道归零(对于shape为 \((N, C, L)\) 的三维Tensor,其通道特征图指的是后一维 \(L\) 的一维特征图)。 |
|
|
在训练期间,以服从伯努利分布的概率 p 随机将输入Tensor的某些通道归零(对于shape为 \(NCHW\) 的四维Tensor,其通道特征图指的是后两维 \(HW\) 的二维特征图)。 |
|
|
在训练期间,以服从伯努利分布的概率 p 随机将输入Tensor的某些通道归零(对于shape为 \(NCDHW\) 的五维Tensor,其通道特征图指的是后三维 \(DHW\) 的三维特征图)。 |
|
归一化层
接口名 |
概述 |
支持平台 |
在二维或三维输入(mini-batch 一维输入或二维输入)上应用批归一化(Batch Normalization Layer),避免内部协变量偏移。 |
|
|
在四维输入(具有额外通道维度的小批量二维输入)上应用批归一化处理(Batch Normalization Layer),以避免内部协变量偏移。 |
|
|
对输入的五维数据进行批归一化(Batch Normalization Layer)。 |
|
|
在mini-batch输入上进行组归一化。 |
|
|
该层在三维输入(带有额外通道维度的mini-batch一维输入)上应用实例归一化。 |
|
|
该层在四维输入(带有额外通道维度的mini-batch二维输入)上应用实例归一化。 |
|
|
该层在五维输入(带有额外通道维度的mini-batch三维输入)上应用实例归一化。 |
|
|
在mini-batch输入上应用层归一化(Layer Normalization)。 |
|
|
在N维输入上进行跨设备同步批归一化(Batch Normalization,BN)。 |
|
池化层
接口名 |
概述 |
支持平台 |
在一个输入Tensor上应用1D自适应平均池化运算,可视为组成一个1D输入平面。 |
|
|
对输入Tensor,提供二维的自适应平均池化操作。 |
|
|
对输入Tensor,提供三维的自适应平均池化操作。 |
|
|
在一个输入Tensor上应用1D自适应最大池化运算,可被视为组成一个1D输入平面。 |
|
|
对输入Tensor,提供二维自适应最大池化操作。 |
|
|
对输入Tensor执行三维自适应最大池化操作。 |
|
|
在一个输入Tensor上应用1D平均池化运算,可被视为组成一个1D输入平面。 |
|
|
在输入Tensor上应用2D平均池化运算,可视为二维输入平面的组合。 |
|
|
在一个输入Tensor上应用3D平均池化运算,输入Tensor可看成是由一系列3D平面组成的。 |
|
|
在输入上应用三维分数最大池化。 |
|
|
在一个输入Tensor上应用1D LP池化运算,可被视为组成一个1D输入平面。 |
|
|
在一个输入Tensor上应用2D LP池化运算,可被视为组成一个2D输入平面。 |
|
|
在一个输入Tensor上应用1D最大池化运算,该Tensor可被视为一维平面的组合。 |
|
|
在一个输入Tensor上应用2D最大池化运算,可被视为组成一个2D平面。 |
|
|
在一个输入Tensor上应用3D最大池化运算,输入Tensor可看成是由一系列3D平面组成的。 |
|
|
计算 |
|
|
|
|
|
|
|
填充层
接口名 |
概述 |
支持平台 |
根据 paddings 和 mode 对输入进行填充。 |
|
|
将给定的常量填充到多维输入数据的最后一维。 |
|
|
将给定的常量填充到多维输入数据的最后两维。 |
|
|
将给定的常量填充到多维输入数据的最后三维。 |
|
|
根据 padding 对输入 x 进行填充。 |
|
|
根据 padding 对输入 x 进行填充。 |
|
|
使用反射的方式,以 input 的边界为对称轴,对 input 进行填充。 |
|
|
根据 padding 对输入 x 的W维度上进行填充。 |
|
|
根据 padding 对输入 x 的HW维度上进行填充。 |
|
|
根据 padding 对输入 x 的DHW维度上进行填充。 |
|
|
将零填充到多维输入数据的最后两维。 |
|
损失函数
接口名 |
概述 |
支持平台 |
计算目标值和预测值之间的二值交叉熵损失值。 |
|
|
输入经过sigmoid激活函数后作为预测值,BCEWithLogitsLoss 计算预测值和目标值之间的二值交叉熵损失。 |
|
|
余弦相似度损失函数,用于测量两个Tensor之间的相似性。 |
|
|
计算预测值和目标值之间的交叉熵损失。 |
|
|
CTCLoss损失函数。 |
|
|
Dice系数是一个集合相似性loss,用于计算两个样本之间的相似性。 |
|
|
FocalLoss函数解决了类别不平衡的问题。 |
|
|
服从高斯分布的负对数似然损失。 |
|
|
Hinge Embedding 损失函数。 |
|
|
HuberLoss计算预测值和目标值之间的误差。 |
|
|
计算输入 logits 和 labels 的KL散度。 |
|
|
L1Loss用于计算预测值和目标值之间的平均绝对误差。 |
|
|
排序损失函数,用于创建一个衡量给定损失的标准。 |
|
|
用于计算预测值与标签值之间的均方误差。 |
|
|
对于多标签问题,可以将标签通过one-hot编码转换为多个二分类标签。 |
|
|
创建一个损失函数,用于最小化多分类任务的合页损失。 |
|
|
基于最大熵计算用于多标签优化的损失。 |
|
|
多分类场景下用于计算 \(x\) 和 \(y\) 之间的合页损失(Hinge Loss),其中 x 为一个2-D Tensor,y 为一个表示类别索引的1-D Tensor, \(0 \leq y \leq \text{x.size}(1)-1\)。 |
|
|
计算预测值和目标值之间的负对数似然损失。 |
|
|
计算泊松负对数似然损失。 |
|
|
RMSELoss用来测量 \(x\) 和 \(y\) 元素之间的均方根误差,其中 \(x\) 是输入Tensor, \(y\) 是目标值。 |
|
|
抽样交叉熵损失函数。 |
|
|
SmoothL1损失函数,如果预测值和目标值的逐个元素绝对误差小于设定阈值 beta 则用平方项,否则用绝对误差项。 |
|
|
针对二分类问题的损失函数。 |
|
|
计算预测值与真实值之间的交叉熵。 |
|
|
执行三元组损失函数的操作。 |
|
优化器
接口名 |
概述 |
支持平台 |
Adadelta算法的实现。 |
|
|
Adagrad算法的实现。 |
|
|
Adaptive Moment Estimation (Adam)算法的实现。 |
|
|
AdaMax算法是基于无穷范数的Adam的一种变体。 |
|
|
此优化器在主机CPU上运行Adam优化算法,设备上仅执行网络参数的更新,最大限度地降低内存成本。 |
|
|
权重衰减Adam算法的实现。 |
|
|
Adaptive Summation (AdaSum)算法的实现,根据更新前后的参数差计算。 |
|
|
Adaptive Summation (AdaSum)算法的实现,根据梯度计算。 |
|
|
随机平均梯度下降(ASGD)算法的实现。 |
|
|
FTRL算法实现。 |
|
|
LAMB(Layer-wise Adaptive Moments optimizer for Batching training,用于批训练的分层自适应矩优化器)算法的实现。 |
|
|
LARS算法的实现。 |
|
|
Adaptive Moment Estimation (Adam)算法的实现。 |
|
|
Momentum算法的实现。 |
|
|
ProximalAdagrad算法的实现。 |
|
|
均方根传播(RMSProp)算法的实现。 |
|
|
弹性反向传播(Rprop)算法的实现。 |
|
|
随机梯度下降的实现。 |
|
|
通过二阶算法THOR更新参数。 |
|
实验性优化器
接口名 |
概述 |
支持平台 |
用于参数更新的优化器基类。 |
|
|
Adaptive Moment Estimation (Adam)算法的实现。 |
|
|
Adaptive Moment Estimation Weight Decay(AdamW)算法的实现。 |
|
|
随机梯度下降算法。 |
|
动态学习率
LearningRateSchedule类
本模块中的动态学习率都是LearningRateSchedule的子类,将LearningRateSchedule的实例传递给优化器。在训练过程中,优化器以当前step为输入调用该实例,得到当前的学习率。
import mindspore.nn as nn
min_lr = 0.01
max_lr = 0.1
decay_steps = 4
cosine_decay_lr = nn.CosineDecayLR(min_lr, max_lr, decay_steps)
net = Net()
optim = nn.Momentum(net.trainable_params(), learning_rate=cosine_decay_lr, momentum=0.9)
接口名 |
概述 |
支持平台 |
基于余弦衰减函数计算学习率。 |
|
|
基于指数衰减函数计算学习率。 |
|
|
基于逆时衰减函数计算学习率。 |
|
|
基于自然指数衰减函数计算学习率。 |
|
|
基于多项式衰减函数计算学习率。 |
|
|
预热学习率。 |
|
Dynamic LR函数
本模块中的动态学习率都是function,调用function并将结果传递给优化器。在训练过程中,优化器将result[current step]作为当前学习率。
import mindspore.nn as nn
min_lr = 0.01
max_lr = 0.1
total_step = 6
step_per_epoch = 1
decay_epoch = 4
lr= nn.cosine_decay_lr(min_lr, max_lr, total_step, step_per_epoch, decay_epoch)
net = Net()
optim = nn.Momentum(net.trainable_params(), learning_rate=lr, momentum=0.9)
接口名 |
概述 |
支持平台 |
基于余弦衰减函数计算学习率。 |
|
|
基于指数衰减函数计算学习率。 |
|
|
基于逆时衰减函数计算学习率。 |
|
|
基于自然指数衰减函数计算学习率。 |
|
|
获取分段常量学习率。 |
|
|
基于多项式衰减函数计算学习率。 |
|
|
预热学习率。 |
|
LRScheduler类
本模块中的动态学习率都是LRScheduler的子类,此模块仅与mindspore.nn.optim_ex下的优化器配合使用,使用时将优化器实例传递给LRScheduler类。在训练过程中,LRScheduler子类通过调用 step 方法进行学习率的动态改变。
import mindspore
from mindspore import nn
# Define the network structure of LeNet5. Refer to
# https://gitee.com/mindspore/docs/blob/r2.1/docs/mindspore/code/lenet.py
net = LeNet5()
loss_fn = nn.SoftmaxCrossEntropyWithLogits(sparse=True)
optimizer = nn.optim_ex.Adam(net.trainable_params(), lr=0.05)
scheduler = nn.StepLR(optimizer, step_size=2, gamma=0.1)
def forward_fn(data, label):
logits = net(data)
loss = loss_fn(logits, label)
return loss, logits
grad_fn = mindspore.value_and_grad(forward_fn, None, optimizer.parameters, has_aux=True)
def train_step(data, label):
(loss, _), grads = grad_fn(data, label)
optimizer(grads)
return loss
for epoch in range(6):
# Create the dataset taking MNIST as an example. Refer to
# https://gitee.com/mindspore/docs/blob/r2.1/docs/mindspore/code/mnist.py
for data, label in create_dataset():
train_step(data, label)
scheduler.step()
接口名 |
概述 |
支持平台 |
每 step_size 个epoch按 gamma 衰减每个参数组的学习率。 |
|
|
线性改变用于衰减参数组学习率的乘法因子,直到 last_epoch 数达到预定义的阈值 total_iters。 |
|
|
动态学习率的基类。 |
|
图像处理层
接口名 |
概述 |
支持平台 |
对 input 应用像素重组操作,它实现了步长为 \(1/r\) 的子像素卷积。 |
|
|
对 input 应用逆像素重组操作,这是像素重组的逆操作。 |
|
|
nn.ResizeBilinear 从2.0版本开始已被弃用,并将在未来版本中被移除,建议使用 |
Deprecated |
|
详情请参考 |
|
工具
接口名 |
概述 |
支持平台 |
将shape为 \((*, C, H, W)\) 的Tensor的通道划分成 \(g\) 组,得到shape为 \((*, C \frac g, g, H, W)\) 的Tensor,并沿着 \(C\) 和 \(\frac{g}{}\), \(g\) 对应轴进行转置,将Tensor还原成原有的shape。 |
|
|
沿着从 start_dim 到 end_dim 的维度,对输入Tensor进行展平。 |
|
|
网络占位符,返回与输入完全一致。 |
|
|
根据 axis 和 unflattened_size 折叠指定维度为给定形状。 |
|