megengine.functional

import megengine.functional as F

注解

顾名思义,megengine.functional 模块中包含着所有与 Tensor 有关的计算接口:

Standard tensor operations

注解

该部分的 API 设计接纳了 Python 数据 API 标准联盟 中的倡导, 尽可能地向 NumPy API 靠拢。

Creation Functions

arange

返回一个数值从 startstop ,相邻间隔为 step 的张量。

linspace

返回指定间隔的等距数列。

eye

返回一个二维张量,其对角线上值均为1,其他位置值为0。

zeros

根据给定形状返回元素全为 0 的 Tensor

zeros_like

返回一个和参数同维度,且数值全为 0 的 Tensor

ones

返回一个具有给定形状的全1张量。

ones_like

返回一个与输入张量形状相同的全1张量

full

Creates a tensor of shape shape filled with value.

full_like

返回一个与输入张量形状相同的且值为给定值的零张量

Manipulation Functions

copy

把张量复制到另一个设备上。

reshape

将一个张量重塑为给定的目标形状;逻辑元素的总数必须保持不变

flatten

通过将子张量从 start_axis 维展平到 end_axis 维,实现对张量的重塑(reshape)。

broadcast_to

将张量广播至指定的形状。

expand_dims

在给定轴之前添加维度。

squeeze

移除形状中下标为1的维度。

concat

拼接一些张量

stack

沿新轴对张量进行拼接。

split

将输入张量拆分成更小的张量。

tile

通过重复 inp 数据 reps 次来构造一个数组。

repeat

重复数组的元素。

roll

Roll the tensor along the given axis(or axes).

gather

使用 indexaxis 上的 inp 聚合数据。

scatter

source 张量中所有的值通过 index 张量指定的索引位置上写入到输入张量中。

cond_take

如果在满足特定条件,则从数据中获取元素。

Arithmetic operations

add

逐元素相加。

sub

逐元素相减。

mul

逐元素相乘。

div

逐元素相除。

floor_div

逐元素相除并下取整。

neg

逐元素取相反数。

abs

逐元素取绝对值。

sign

返回一个新的张量,该张量表明每个元素的符号。

pow

逐元素进行指数运算。

mod

返回逐元素相除所得的余数。

sqrt

逐元素取平方根。

square

返回一个包含输入张量中各元素平方的新的张量

maximum

逐元素的最大数组元素。

minimum

逐元素的最小数组元素。

round

逐元素四舍五入到整数。

ceil

逐元素上取整。

floor

逐元素计算下取整函数。

clip

把每个元素的值限定在范围 [ lower, upper ] 然后返回该张量:

exp

逐元素计算 ex 次方。

expm1

逐元素计算 expm1 函数。

log

逐元素计算以 e 为底的对数。

log1p

逐元素计算 (x+1)e 为底的对数。

Trigonometric functions

sin

逐元素计算正弦函数。

cos

逐元素计算余弦函数。

tan

逐元素计算正切函数。

asin

逐元素计算反正弦函数。

acos

逐元素计算反余弦函数。

atan

逐元素计算反正切函数。

atan2

逐元素计算两个参数的反正切函数。

Hyperbolic functions

sinh

逐元素计算双曲正弦函数。

cosh

逐元素计算双曲余弦函数。

tanh

逐元素计算双曲正切值。

acosh

逐元素计算反双曲余弦函数。

asinh

逐元素计算反双曲正弦函数。

atanh

逐元素计算反双曲正切函数。

Bit operations

left_shift

逐元素计算 x << y。

right_shift

逐元素计算 x >> y。

Logic functions

logical_and

逐元素进行逻辑与运算。

logical_not

逐元素进行逻辑非运算。

logical_or

逐元素进行逻辑或运算。

logical_xor

逐元素进行逻辑异或运算。

Comparison functions

isnan

返回一个新的张量,该张量表明每个元素是否为非数值类型 NaN.

isinf

返回一个张量,它表示每个元素是否是无穷大值 Inf.

equal

逐元素判断是否相等。

not_equal

逐元素计算 x 不等于 y.

less

逐元素的计算 x 小于 y.

less_equal

逐元素计算 x 小于或等于 y.

greater

逐元素计算 x 大于 y.

greater_equal

逐元素判断 x 大于或者等于 y.

Statistical Functions

sum

返回输入张量在给定轴上所有元素求和后的结果。

prod

返回输入张量在给定轴上所有元素求乘积后的结果。

mean

返回输入张量在给定轴上所有元素求平均后的结果。

min

返回输入张量在给定轴上所有元素求最小值后的结果。

max

返回输入张量在给定轴上所有元素求最大值后的结果。

var

返回输入张量在给定轴上所有元素求方差后的结果。

std

返回输入张量在给定轴上所有元素求标准差后的结果。

Linear Algebra Functions

transpose

根据给定模板交换形状和步长。

dot

计算两个向量 inp1inp2 的点积。

matinv

计算一批矩阵的逆;输入必须满足 […,n,n] 的形状。

matmul

对矩阵 inp1inp2 进行矩阵乘法。

svd

对输入矩阵 inp 进行奇异值分解。

norm

计算在给定轴 axisinp 张量每一行的 p-范数。

normalize

返回在给定轴 axisinp 张量每一行进行 \(L_p\) 归一化后的结果。

Searching and Sorting Functions

argmin

返回沿给定轴的最小值的索引。

argmax

返回沿给定轴的最大值的索引。

argsort

返回经过排序后的张量。

where

根据 mask 条件选择张量 xy 作为对应的输出。

sort

返回经过排序后的张量。

topk

按行排序,选出二维矩阵中 Top-K (默认情况下)个最小元素。

Neural network operations

Convolution functions

conv1d

一维卷积运算。

conv2d

二维卷积运算。

conv3d

三维卷积运算。

local_conv2d

使用 untied kernels 对图像进行二维空域卷积。

conv_transpose2d

二维转置卷积运算。

conv_transpose3d

3D transposed convolution operation.

deformable_conv2d

可变形卷积

sliding_window

Extracts sliding local blocks from a batched input tensor.

sliding_window_transpose

Sum over the sliding windows on the corresponding input location.

Pooling functions

avg_pool2d

对输入进行二维平均池化。

max_pool2d

对输入张量进行二维最大池化。

adaptive_avg_pool2d

对输入进行二维平均池化。

adaptive_max_pool2d

对输入数据进行2D最大池化。

deformable_psroi_pooling

可变形的位置敏感的感兴趣区域池化

Non-linear activation functions

sigmoid

逐元素计算 1 / ( 1 + exp( -x ) ).

hsigmoid

逐元素计算 relu6(x + 3) / 6.

hswish

逐元素计算 x * relu6(x + 3) / 6.

relu

逐元素计算 max(x, 0).

relu6

逐元素计算 min(max(x, 0), 6).

prelu

逐元素计算 PReLU.

leaky_relu

逐元素计算 Leaky_ReLU.

softplus

逐元素应用函数:

softmax

Applies a \(\text{softmax}(x)\) function.

logsoftmax

Applies the \(\log(\text{softmax}(x))\) function to an n-dimensional input tensor.

logsigmoid

逐元素应用函数:

logsumexp

计算输入数据沿给定维度 axis 的指数之和的对数。该计算是数值稳定的。

Normalization functions

batch_norm

对输入进行批标准化。

sync_batch_norm

对输入进同步批标准化。

Linear functions

linear

对输入张量进行线性变换。

Dropout functions

dropout

返回一个新的张量,其中每个元素以 P = drop_prob 的概率随机设置为零。

Sparse functions

one_hot

对输入张量进行 one-hot 编码。

indexing_one_hot

对一些轴进行 One-hot 索引。

embedding

应用查找表进行 embedding。

Metric functions

topk_accuracy

根据给定的预测的logits和真实值标签计算分类准确率。

Loss functions

l1_loss

计算预测值 \(x\) 和标签值 \(y\) 的每个元素之间的平均绝对误差(MAE)。

square_loss

计算预测值 \(x\) 和标签值 \(y\) 之间的均方误差(平方L2范数)。

hinge_loss

计算支持向量机 SVM 中经常使用的 hinge loss。

binary_cross_entropy

计算 binary cross entropy loss(默认使用 logits)。

cross_entropy

计算 multi-class cross entropy loss(默认使用 logits)。

Vision functions

cvt_color

将图像从一种格式转化成另一种格式。

interpolate

根据给定的大小或缩放因子将输入张量进行上/下采样。

remap

对按批组织的二维图像进行重映射变换。

warp_affine

对按批处置的二维图像进行仿射变换。

warp_perspective

对按批组织的二维图像进行透视变换。

roi_pooling

对输入进行 roi pooling。

roi_align

对输入进行 roi align。

nms

根据小方框的 IoU 值进行 非最大值抑制(NMS)。

correlation

Applies correlation to inputs.

nvof

NVIDIA光流SDK的实现

Distributed functions

all_reduce_max

创建用于聚合通信的 all_reduce_max 算子。

all_reduce_min

创建用于聚合通信的 all_reduce_min 算子。

all_reduce_sum

创建用于聚合通信的 all_reduce_sum 算子。

broadcast

创建用于聚合通信的广播算子。

remote_send

发送一个张量到远端进程。

remote_recv

从远端进程接收一个张量。

all_gather

创建用于聚合通信的 all_gather 算子。

all_to_all

创建用于聚合通信 all_to_all 算子。

reduce_sum

创建用于聚合通信的 reduce_sum 算子

gather

创建用于聚合通信的 gather 算子。

scatter

创建用于聚合通信的 scatter 算子。

reduce_scatter_sum

创建用于聚合通信的 reduce_scatter_sum 算子

Debug Setting

get_execution_strategy

Returns the execution strategy of Conv2d and matmul

set_execution_strategy

Sets the execution strategy of Conv2d and matmul