megengine.functional¶
import megengine.functional as F
注解
顾名思义,megengine.functional 模块中包含着所有与 Tensor 有关的计算接口:
- 与神经网络(Neural Network)相关的算子统一封装在 - megengine.functional.nn中;
- 分布式算子统一封装在 - megengine.functional.distributed中,方便调用;
- 其它的常见算子均可在 - megengine.functional中直接调用;
参见
用户指南中对于 使用 Functional 操作与计算 有另外一套分类逻辑,可作为参考。
全局tensor操作¶
注解
该部分的 API 设计接纳了 Python 数据 API 标准联盟 中的倡导, 尽可能地向 NumPy API 靠拢。
创建功能¶
| 返回半开区间 [start, stop) 内均匀间隔的值组成的1维Tensor。 | |
| 返回指定区间内均匀分布的数字。 | |
| 返回一个对角线全1而其他元素全0的二维张量。 | |
| 提取或者构造一个对角线向量 | |
| 返回一个特定形状的元素全为 0 的张量。 | |
| 返回一个跟输入tensor拥有相同shape和dtype的全零tensor。 | |
| 返回一个新创建的拥有指定shape且被1填充的tensor。 | |
| 使用输入 Tensor 来填充输出 Tensor,保持相同的形状和数据类型。 | |
| 返回一个新的拥有指定 shape 且全部元素均为指定值的张量。 | |
| 返回一个与输入张量形状相同的且值为给定值的零张量 | |
| Constructs a complex tensor with its real part equal to real and its imaginary part equal to imag. | |
| Constructs a complex tensor whose elements are Cartesian coordinates corresponding to the polar coordinates with absolute value abs and angle angle. | 
操作功能¶
| 把张量复制到另一个设备上。 | |
| 在不改变数据的情况下更改 Tensor 的形状。 | |
| 通过将子张量从  | |
| 根据给定模板交换形状和步长。 | |
| 交换一个 tensor 的两个坐标轴。 | |
| 将张量广播至指定的形状。 | |
| 在给定轴之前添加维度。 | |
| 移除形状中下标为1的维度。 | |
| 拼接一些张量 | |
| 沿新轴对张量进行拼接。 | |
| 将输入张量拆分成更小的张量。 | |
| 通过重复  | |
| 重复数组的元素。 | |
| 沿给定轴axis循环滚动张量 | |
| Returns a new tensor containing real values of the complex tensor. | |
| Returns a new tensor containing imaginary values of the complex tensor. | |
| Return the cross product of two (arrays of) vectors. | 
Arithmetic operations¶
| 逐元素相加。 | |
| 逐元素减法。 | |
| 逐元素乘法 | |
| 逐元素除法。 | |
| 逐元素取整除法 | |
| 逐元素取反。 | |
| 将函数 \(\operatorname{abs}(x)\) 应用于每一个元素。 | |
| 元素求 sign | |
| 逐元素幂。 | |
| 逐元素 \(\operatorname{mod}(x, y)\) 函数 | |
| 元素 \(\operatorname{sqrt}(x)\) 函数 | |
| 元素 \(x^2\) 函数 | |
| Tensor中的逐元素最大值。 | |
| Tensor中的逐元素最小值。 | |
| 逐元素的 \(\operatorname{round}(x)\) 函数. | |
| 逐元素 \(\lceil x \rceil\) 函数。 | |
| 逐元素 \(\lfloor x \rfloor\) 操作。 | |
| 逐元素裁切函数。 | |
| 逐元素 \(e^x\) 操作。 | |
| 逐元素 \(e^x - 1\) 操作。 | |
| Element-wise \(\operatorname{log}(x)\) 方法。 | |
| Element-wise \(\log(1 + x)\) 方法. | |
| Element-wise \(\log(e^x + e^y)\) 方法。 | 
三角函数¶
| 元素 \(\sin(x)\) 函数 | |
| 逐个元素的 \(\cos(x)\) 函数。 | |
| 元素 \(\tan(x)\) 函数 | |
| 逐元素 \(\arcsin(x)\) 函数。 | |
| 将函数 \(\arccos(x)\) 应用于每一个元素 | |
| 逐元素 \(\arctan(x)\) 函数。 | |
| 逐元素 \(\arctan(\frac{y}{x})\) 函数。 | 
双曲函数¶
| 元素 \(\sinh(x)\) 函数 | |
| Element-wise \(\cosh(x)\) function. | |
| 元素 \(\tanh(x)\) 函数 | |
| 将函数 \(\cosh^{-1}(x)\) 应用于每一个元素。 | |
| 逐元素 \(\sinh^{-1}(x)\) 函数。 | |
| 逐元素 \(\tanh^{-1}(x)\) 函数。t | 
位操作¶
| 逐个元素的左移。 | |
| 元素右移。 | 
逻辑函数¶
| 逐个元素的  | |
| 逐个元素的  | |
| Element-wise 逻辑与(AND)。 | |
| Element-wise 逻辑非(NOT)。 | |
| 逐元素逻辑或操作。 | |
| 逐元素逻辑异或。 | |
| 逐元素的大于比较。 | |
| 逐元素的大于或等于比较。 | |
| 逐元素的小于比较。 | |
| 逐元素的小于或等于比较。 | |
| 逐元素相等比较。 | |
| 逐元素的不等式比较。 | 
统计函数¶
| 计算给定维度 (或坐标轴) 元素的求和结果。 | |
| 计算给定轴上的向量元素的累积和。 | |
| 计算张量元素在给定轴上的乘积。 | |
| 计算tensor在给定轴(或所有轴)上的平均值。 | |
| 计算tensor在给定轴(或多个轴)上的最小值。 | |
| 计算tensor在给定轴(或多个轴)上的最大值。 | |
| 计算给定维度 (或坐标轴) 元素的方差 | |
| 在给定的维度 (或坐标轴) 上计算元素的标准差。 | |
| 计算张量在给定轴上的范数。 | |
| 返回在给定轴  | 
参见
想要返回 min, max 的索引而不是元素值,请参考 Searching Functions
线性代数函数¶
| 计算两个向量  | |
| 计算一批矩阵的逆;输入必须满足 [...,n,n] 的形状。 | |
| 对矩阵  | |
| 计算矩阵(或一组矩阵)  | 
Indexing Functions¶
| 使用  | |
| 把  | |
| 如果在满足特定条件,则从数据中获取元素。 | |
| 根据 mask 条件选择张量  | |
| When as_tuple is False (default): Returns a tensor including the indices of all non-zero elements of Tensor condition. | 
Searching Functions¶
| 返回沿给定轴的最小值的索引。 | |
| 返回沿给定轴的最大值的索引。 | 
Sorting Functions¶
| 返回经过排序后的张量。 | |
| 返回经过排序后的张量。 | |
| 按行排序,选出二维矩阵中 Top-K (默认情况下)个最小元素。 | 
度量函数¶
| 根据给定的预测的logits和真实值标签计算分类准确率。 | 
神经网络运算¶
卷积运算¶
| 一维卷积运算。 | |
| 二维卷积运算。 | |
| 三维卷积运算。 | |
| 对4D输入tensor进行通道分组并应用非统一kernel的空间卷积操作。 | |
| 二维转置卷积运算。 | |
| 3D 转置卷积算子。 | |
| 可变形卷积 | |
| 从多batch输入tensor中提取滑窗大小的局部分块。 | |
| 对滑动窗口对应的输入数据求和。 | 
池化函数¶
| 对输入进行二维平均池化。 | |
| 对输入张量进行二维最大池化。 | |
| 对输入进行二维平均池化。 | |
| 对输入数据进行2D最大池化。 | |
| 可变形的位置敏感的感兴趣区域池化 | 
非线性激活函数¶
| 逐元素计算 1 / ( 1 + exp( -x ) ). | |
| 逐元素计算 relu6(x + 3) / 6. | |
| 逐元素计算 x * relu6(x + 3) / 6. | |
| Applies the rectified linear unit function element-wise. | |
| 逐元素计算 min(max(x, 0), 6). | |
| 逐元素进行 max(x, 0) + y * min(x, 0) 操作。 | |
| LeakyReLU 函数。 | |
| 逐元素应用 SiLU 函数: x * sigmoid(x) 。 | |
| 逐元素应用函数: | |
| 逐元素应用函数: | |
| 应用 \(\text{softmax}(x)\) 函数 | |
| 将 \(\log(\text{softmax}(x))\) 函数应用于一个 n 维 Tensor 输入上 | |
| 逐元素应用函数: | |
| 计算输入数据沿给定维度  | 
标准化函数¶
| 对输入进行批标准化。 | |
| 对输入进同步批标准化。 | |
| 对输入应用 layer normalization。 | |
| 对输入 Tensor 进行局部响应归一化。 | 
线性函数¶
| 对输入张量进行线性变换。 | 
multi-head attention functions¶
| Allows the model to jointly attend to information from different representation subspaces. | 
Dropout 函数¶
| 返回一个新的张量,其中每个元素以 P =  | 
Sparse 函数¶
| 对输入张量进行 one-hot 编码。 | |
| 对一些轴进行 One-hot 索引。 | |
| 应用查找表进行 embedding。 | 
损失函数¶
| 计算预测值 \(x\) 和标签值 \(y\) 的每个元素之间的平均绝对误差(MAE)。 | |
| 计算预测值 \(x\) 和标签值 \(y\) 之间的均方误差(平方L2范数)。 | |
| 计算支持向量机 SVM 中经常使用的 hinge loss。 | |
| 计算 binary cross entropy loss(默认使用 logits)。 | |
| 计算 multi-class cross entropy loss(默认使用 logits)。 | |
| 计算 Connectionist Temporal Classification loss 。 | 
视觉运算¶
| 将图像从一种格式转化成另一种格式。 | |
| 填充输入张量。 | |
| 将形状为 (..., C * r^2, H, W) 的张量的元素重排为一个形状为 (..., C, H * r, W * r) 的张量,其中 r 是一个放大系数, ... 是零个或更多的 batch 维度。 | |
| 根据给定的大小或缩放因子将输入张量进行上/下采样。 | |
| 对按批组织的二维图像进行重映射变换。 | |
| 二维图像的批量仿射变换。 | |
| 对按批组织的二维图像进行透视变换。 | |
| 在指定输入的感兴趣区域上执行池化,并获得固定大小的特征图, 如Faster RCNN中所述 | |
| RoI Align 是在指定输入的感兴趣区域上获得特征图,如 Mask R-CNN 论文中所述。 | |
| 根据小方框的 IoU 值进行 非最大值抑制(NMS)。 | |
| 对输入进行相关性计算。 | |
| NVIDIA光流SDK的实现 | 
量化函数¶
| 带有激活函数的卷积偏置操作,仅用于推理 | |
| 带有激活函数的批量卷积偏置,仅用于推理 | |
| 
 | 
分布式算子¶
| 在指定的组中收集张量,并沿第一维对其进行拼接。 | |
| 在指定组中以 max 操作来对张量进行规约操作。 | |
| 在指定组中以 min 操作来对张量进行规约操作。 | |
| 在指定组中以求和操作来对张量进行规约操作。 | |
| 每个进程将输入张量分散到所有进程,并返回收集的张量。 | |
| 从根进程向其他进程广播张量数据。 | |
| 通过求和规约指定组中的张量,并在第一维度将其拆分。 | |
| 用于集合通信的辅助函数。 | |
| 发送张量到另一个进程。 | |
| 从另一个进程接收张量。 | |
| 在指定组中以 sum操作来对张量进行规约操作。 | |
| 在指定的组中收集张量。 | |
| 在根进程中沿第一维度切分张量。 | 
External 函数¶
| 加载序列化的extern opr子图并假执行运算符。 | |
| 将一个序列化后的寒武纪模型加载成 MegEngine 中的一个运行时算子。 | |
| 加载  | |
| 加载序列化的MagicMind模型作为MegEngine中的运行时操作符。 |