Op Name | Input | Output | 参数 | 功能 | 支持的精度 | 支持的设备 |
---|---|---|---|---|---|---|
activation | 1 tensor | 1 tensor | type(std::string):选择TanH、Sigmoid、Stanh、ClippedRelu、Relu、PRelU中的一种. clip_relu_num(int):type="ClippedRelu"时的上限值. alpha(int):type="Relu"时alpha的值. channel_shared(bool):type="PReLU"时通道是否共享。 |
激活函数 | FP32 | NVGPU, X86, ARM, BITMAIN, MLU, AMDGPU |
affine_channel | 1 tensor | 1 tensor | weights(void):传入的weights. bias(void): 传入bias. affine_channel(int):表示axis,默认是1。 |
dout[i] = din[i] * weights[c] + biias[c] | FP32 | NVGPU, X86 |
aligned_mat_mul | 2 tensor: tensor-0是 A,tensor-1是 B | 1 tensor | transpose_x(bool):行方向是否转置. transpose_y(bool):列方向是否转置. scale(float):矩阵乘系数alpha。 |
C = alphaAB | FP32 | NVGPU, X86 |
anchor_generator | 1 tensor | 2 tensor: tensor-0是输入的anchor, tensor-1是anchor的扩展布局 | anchor_sizes(std::vector):生成anchor的anchor大小,以绝对像素的形式表示. aspect_ratios(std::vector):生成anchor的高宽比. variance(std::vector):变量,在框回归delta中使,默认:[0.1,0.1,0.2,0.2]. stride(std::vector):anchor在宽度和高度方向上的步长. offset(float): 先验框的中心位移,默认:0.5. mode(std::string):先验框操作符名称,默认:default. |
为Faster RCNN算法生成anchor,输入的每一位产生N个anchor,N=size(anchor_sizes)*size(aspect_ratios)。生成anchor的顺序首先是aspect_ratios循环,然后是anchor_sizes循环 | FP32 | NVGPU, X86, MLU |
arg_max | 1 tensor | 1 tensor | out_max_val(bool):是否输出Max的下标. top_k(int): 显示前top_k的数目. axis_term(bool):表示是否按轴进行求Max. |
求前top_k个的最大数据 | FP32 | NVGPU, X86, ARM, MLU, AMDGPU |
arithmetic | 2 tensor: tensor-0是第一个输入数据,tensor-1是第二个输入数据 | 1 tensor | op_type(int): 计算类型. | 最简单的数学计算,目前支持+、- 和 X 运算 | FP32 | NVGPU, X86 |
attension_lstm | 1 tensor | 1 tensor | attention_fc_w_0(tensor): fc_0的weights. attention_fc_b_0(tensor): fc_0的bias. attention_fc_w_1(tensor): fc_1的weights. attention_fc_b_1(tensor): fc_1的bias. lstm_w(tensor): lstm的weights. lstm_b(tensor): lstm的bias. |
实现两个fc+lstm的功能 | FP32 | NVGPU, X86 |
axpy | 3 tensor: tensor-0是输入的scale, tensor-1是输入数据din, tensor-2是输入的bias | 1 tensor | dout = din * scale + bias | FP32 | NVGPU, X86, ARM, BITMAIN, MLU, AMDGPU | |
batch_norm | 1 tensor | 1 tensor | scale(float):系数. eps(float):加在分母上为了数值稳定的值, 默认值为1e-5. mean(std:vector): 均值. var(std:vector): 方差. |
批正则化--归一化 | FP32 | NVGPU, X86 |
box_clip | 2 tensor: tensor-0: 是输入框din, tensor-1是输入框的图像信息im_info | 1 tensor | 将box框剪切为 im_info 给出的大小 | FP32 | NVGPU, X86 | |
box_coder | 2 tensor 或 3 tensor: tensor-0是先验框信息,tensor-1是priorbox信息,tensor-2是variance信息 | 1 tensor | axis(int): 在PriorBox中为axis指定的轴broadcast以进行框解码. box_normalized(bool):是否将先验框作为正则框,默认为true. var_tensor(tensor):存放variance的list. |
编码/解码带有先验框信息的目标边界框 | FP32 | NVGPU, X86, MLU |
cast | 1 tensor | 1 tensor | in_type(int):输入数据类型. out_type(int):输出数据类型 |
类型转换 | FP32 | NVGPU, X86, ARM, MLU, AMDGPU |
concat | n tensor:多输入,输入tensor个数大于2 | 1 tensor | axis(int):concat操作的轴. | 按照axis轴将输入的数据连接在一起 | FP32 | NVGPU, X86, ARM, BITMAIN, MLU, AMDGPU |
convolution.cpp | 1 tensor | 1 tensor | group(int): 卷积的组数. bias_term(bool):是否有bias. padding(std::vector):填充大小. strides(std::vector):步长大小. dilation_rate(std::vector):膨胀大小. kernel_size(std::vector):滤波器大小. filter_num(int):滤波器数,与输出通道相同. axis(int):表示轴 |
卷积计算 | FP32 | NVGPU, X86, ARM, BITMAIN, MLU, AMDGPU |
coord2patch | ||||||
cos_sim | ||||||
crf_decoding | 1 tensor | 1 tensor | weight_1(PBlock) 特征权重 | FP32、INT8 | NVGPU, X86, AMGGPU, ARM |
|
crop | 1 tensor | 1 tensor | axis(int):处理的轴。 cropping(int):保留系数。 |
crop保留大小 | FP32、INT8 | NVGPU, X86, MLU, ARM |
ctc_align | ||||||
deconvolution | 1 tensor | 1 tensor | filter_num(int):过滤器个数. kernel_size(std::vector):核的大小. strides(std::vector):步长. padding(std::vector)):padding大小. group(int):分组个数. axis(int):处理维度. bias_term(bool):是否有bias. weight_1(tensor):权重 weight_2(tensor):bias权重. |
反卷积操作 | FP32、INT8 | NVGPU, X86, AMGGPU, ARM, BITMAIN |
deformconvolution | 1 tensor | 1 tensor | filter_num(int):过滤器个数. kernel_size(std::vector):核的大小. strides(std::vector):步长. padding(std::vector)):padding大小. group(int):分组个数. dilation_rate(std::vector):膨胀系数. axis(int):处理维度. bias_term(bool):是否有bias. weight_1(tensor):权重 weight_2(tensor):bias权重. |
可变形卷积操作 | FP32、INT8 | NVGPU, X86, AMGGPU, ARM, BITMAIN |
dense | 1 tensor | 1 tensor | out_dim(int):输出维度大小. axis(int):处理维度. bias_term(bool):是否存在bias. weight_1(tensor):权重 weight_2(tensor):bias权重. |
全连接 | FP32、INT8 | NVGPU, X86, AMGGPU, ARM, BITMAIN |
depwise_seq_convolution | ||||||
detection_output | 1 tensor | shatre_location(bool):不同类别间是否共享框的位置. variance_encode_in_target(bool)::variance是否被解码. class_num(int):类别个数. background_id(int):背景色的id. keep_top_k(int):保留框的个数. code_type(std::string):选择CORNER、CENTER_SIZE、CORNER_SIZE中的一种. conf_thresh(float): 检测置信阈值. nms_top_k(int): nms保留框的个数. nms_thresh(float): nms阈值. nms_eta(float): 动态阈值. |
ssd网络最后一层,输出目标检测框、label和score。 | FP32 | NVGPU, X86, ARM, MLU, BITMAIN |
|
dfm_ps_roi_align | ||||||
dot | ||||||
dropout | ||||||
eltwise | 2 tensor | type(std::sting):选择Add、Max、Prob、Multiply、Div、Mul中的一种. coeff(std::vector): 扩展系数,输入在基本的操作上增加系数的操作. axis(int): 操作的轴. |
元素进行加、取最大值、点乘、除、乘等运算。 | FP32 | NVGPU, X86, ARM, MLU, AMDGPU |
|
elu | ||||||
embedding | 1 tensor | 1 tensor | word_num(int): 输入词的数量 emb_dim(int): 嵌入向量维度 padding_idx(int): 一旦padding_idx存大,则input中的padding_idx用0填充输出向量 |
该层用于查找由输入提供的id在查找表中的嵌入矩阵,查找的结果是input里每个ID对应的嵌入矩阵 | fp32 | NVGPU X86 ARM MLU |
flatten | 1 tensor | 1 tensor | start_axis(int): 开始的维度 end_axis(int): 结束的维度 |
将输入张量指定维度压成一维 | FP32,INT8 | NVGPU X86 ARM MLU |
gather | 2 tensor(2tensor互相share) | 1 tensor | -- | 将其中一个tensor作为输出 | FP32,INT8 | NVGPU X86 ARM MLU |
generate_proposals | 2 tensor | 1 tensor | pre_nms_top_n(int): 前处理nms的top_k post_nms_top_n(int): 后处理nms的top_k nms_thresh(float): nms的阈值 min_size(float): 框的最小尺寸 eta(float): 其他参数 |
根据anchor和对应score进行生成roi | FP32 | NVGPU X86 MLU |
group_norm | 1 tensor | 1 tensor | p(int): normalize 指数 group(int): 分组数 has_bias(bool): 是否有bias has_scale(bool): 是否有scale bias(tensor): 偏置项 scale(tensor): 缩放项 eps(float): 正则项 |
对输入进行分组normalize | FP32 | NVGPU X86 ARM MLU |
gru | ||||||
im2sequence | 1 tensor | 1 tensor | padding(vector): pad数量 stride(vector): 扫描步长 window_size(vector): 扫描窗口大小 dilation(vector): 膨胀系数 |
将输入图片类似im2col进行转换 | FP32 | NVGPU X86 ARM MLU |
input | -- | 1 tensor | input_shape(Shape): 输入的默认shape |
接收模型输入 | FP32 | NVGPU X86 ARM MLU BIT |
interp | 1 tensor | 1 tensor | shrink_factor(int): 缩小倍数 zoom_factor(int): 放大倍数 |
对图像利用缩小和放大倍数进行缩放 | FP32 | NVGPU X86 ARM MLU BIT |
layer_norm | 1 tensor | 1 tensor | begin_norm_axis(int): 从begin_norm_axis起进行normalize eps(float): 正则项 weight_1(tensor): 偏置项 weight_2(tensor): 缩放项 |
对输入从指定维度开始进行normalize | FP32 | NVGPU X86 ARM MLU |
lrn | 1 tensor | 1 tensor | local_size(int): 需要归一化的范围大小 alpha(float): 缩放参数 beta(float): 指数 norm_region(string): 归一化区域类型 k(float): 位移 |
对局部输入区域正则化,执行一种侧向抑制 | FP32 | NVGPU X86 ARM MLU |
lstm | ||||||
mat_mul | 2 tensor | 1 tensor | transpose_x(bool):是否转置X矩阵 transpose_y(bool):是否转置Y矩阵 scale(float):缩放因子 | 矩阵相乘 | FP32 | NV、X86、ARM、MLU |
maxout | 1 tensor | 1 tensor | groups(int):输入tensor的channel的组数 | 激活函数 | FP32 | NV、X86、ARM、AMD |
mean | 1 tensor | 1 tensor | / | 取均值 | FP32 | NV、X86、ARM、AMD |
multi_roi_align | 1 in_roi 和 n in_data | 1 tensor | pooled_height(int):池化输出高度 pooled_width(int):池化输出宽度 sampling_ratio(int):采样点数目,如果小于0则自适应宽和高 finest_scale(float):最佳缩放因子 spatial_scale(tensor*):多个输入对应的缩放因子 | 多输入的区域特征对齐 | FP32 | NV、X86 |
negative | 1 tensor | 1 tensor | / | 取负 | FP32、INT8(NV、ARM) | NV、X86、ARM、AMD |
normalize | 1 tensor | 1 tensor | p(int):p=1,L1 normalize; p=2,L2 normalize across_spatial(bool):是否归一化 has_scale(bool):是否有缩放 has_bias(bool):是否有偏移 channel_shared(bool):是否共享一个缩放因子 scale(tensor*):缩放因子 bias(tensor*):偏移 eps(float):1e-6f,防止溢出参数 group(int):组数 | 归一化 | FP32 | NV、X86、ARM、AMD、BM、MLU |
one_hot | 1 tensor | 1 tensor | depth(int):编码深度 | 独热编码 | FP32 | NV、X86、ARM |
output | 1 tensor | 1 tensor | / | 输出 | FP32 | NV、X86、ARM、AMD、BM、MLU |
pad | 1 tensor | 1 tensor | pad_c(vector<int>):2个整数分别代表前后填充长度 pad_h(vector<int>):2个整数分别代表上下填充高度 pad_w(vector<int>):2个整数分别代表左右填充宽度 | 填充 | FP32 | NV、X86、ARM、AMD、MLU |
pad2d | 1 tensor | 1 tensor | _mode(PadMode):三种模式:PAD_CONSTANT(默认)、PAD_EDGE、PAD_REFLECT _pad_h(vector<int>):2个整数分别代表上下填充高度 _pad_w(vector<int>):2个整数分别代表左右填充宽度 _pad_value(float):填充区域的值 | 二维填充 | FP32 | NV、X86、ARM、AMD |
permute | 1 tensor | 1 tensor | order(vector<int>): 维度序列 | 维度换位,将tensor的维度重新排列 | FP32 | NV、X86、ARM、AMD、BM、MLU |
pixel_shuffle | 1 tensor | 1 tensor | rh(int):高度增大因子 rw(int):宽度增大因子 channel_first(bool):true则输出NCHW,false则输出NHWC | 像素重组,将一个形为[N,C,H,W]的tensor重新排列成形为[N,C/rh/rw,H*rh, W*rw]的tensor | FP32 | NV、X86、ARM |
pooling | 1 tensor | 1 tensor | window_h(int):窗口高度 window_w(int):窗口宽度 pad_h(int):高度填充 pad_w(int):宽度填充 stride_h(int):高度步长 stride_w(int):宽度步长 global_pooling(bool):是否全局池化,若true则输出宽高为1 cmp_out_shape_floor_as_conv(bool): pooling_type(PoolingType):池化类型,包括MAX,AVG,SUM | 池化 | FP32、INT8(NV、X86、ARM) | NV、X86、ARM、AMD、BM、MLU |
power | 1 tensor | 1 tensor | shift(float) 偏移量 scale(float) 放大系数 power(float) 指数 |
output = ( shift + scale * x ) ^ power | FP32 | NVGPU, X86, ARM |
priorbox | 1 tensor | 1 tensor | min_size(vector<float>) 最小尺寸 max_size(vector<float>) 最大尺寸 aspect_ratio(vector<float>) 纵横比 is_flip(bool) 是否忽略ratio is_clip(bool) 是否使用clip variance(vector<float>) 解码 img_h(int) 输入图片高 img_w(int) 输入图片宽 step_h(float) height步长 step_w(float) width步长 offset(float) 位移 order(vector<string>) prioribox的方式,参数内容候选如下(MIN MAX COM) |
SSD算法生成先验框 | FP32 | NVGPU X86 ARM MLU BITMAIN |
reduce | 1 tensor | 1 tensor | reduce_type(std::string) reduce的方法, 参数候选(Reduce_min, Reduce_max, Reduce_sum, Reduce_avg, Reduce_prod) keep_dim(bool) Reduce后dim是否跟input保持一致。 reduce_all(bool) 是否进行整个tensor的Reduce reduce_dim(vector) 进行Reduce的维度 coeff(float) 扩展用 |
对tensor进行reduce操作,支持min,max,sum,avg,prod操作 | FP32 | NVGPU, X86, ARM |
relu | 1 tensor | 1 tensor | alpha(float) 负数部分的系数,标准relu为0 | output = input > 0 ? input : input * alpha | FP32 | NVGPU, X86, ARM, MLU, BITMAIN, AMDGPU |
reshape | 1 tensor | 1 tensor | dims(vector<int>) 维度信息 | 对tensor的shape按照dims重新设置 | FP32 | NVGPU, X86, ARM, MLU, BITMAIN, AMDGPU |
resize | 1 tensor | 1 tensor | method(string) default(RESIZE_CUSTOM) resize方法,参数候选(BILINEAR_ALIGN, BILINEAR_NO_ALIGN, RESIZE_CUSTOM, NEAREST_ALIGN) width_scale(float) default(0.f) 输入高度乘数因子 height_scale(float) default(0.f) 输入宽度乘数因子 out_width(int) default(-1) 输出指定宽度 out_height(int) default(-1) 输出指定高度 |
按照指定方法完成resize功能,可以指定scale自己计算,也可以指定output的height和width,两种参数指定方法选其中一种 | FP32 | NVGPU, X86, ARM, MLU, AMDGPU |
reverse_input | 1 tensor | 1 tensor | 无 | 根据seq_offset的batch,对输入tensor的每个batch都进行reverse操作 | FP32 | NVGPU, X86, AMDGPU |
roi_aligh | 1 tensor | 1 tensor | 无 | 根据seq_offset的batch,对各个batch内的序列进行倒序操作 | FP32 | NVGPU, X86, AMDGPU |
roi_pool | in_data和in_rois 2tensor | 1 tensor | spatial_scale(float) 缩放因子 pooled_w(int) 池化输出宽度 pooled_h(int) 池化输出高度 |
Faster-RCNN的roi_pool, 对非均匀的输入执行最大池化以获得固定输出 | FP32 | NVGPU, X86, ARM, MLU, AMDGPU |
scale | tensor num:1 |
tensor num:1 |
axis: 指定维度 num_axes: bias_term: 偏置项 weights: 权值 |
out = scale * x + bias | FP32 | CPU NV AMD ARM MLU(寒武纪) BM(比特大陆) |
sequence_concat | tensor num:1 |
tensor num: 2 |
param_sequence_concat(default): 该op默认参数,无实际参数 | concat向量序列 | FP32 | X86 NV AMD |
sequence_conv | tensor num: 1 |
tensor num: 1 |
context_length: context_start: context_stride: padding_trainable: bias_term: 偏置 filter_tensor: filter |
对每个序列做卷积操作 | FP32 INT8 |
X86 NV ARM MLU AMD |
sequence_depadding | tensor num: 2 |
tensor num: 1 |
param_sequence_depadding(default):该op默认参数,无实际参数 | 删除输入中的padding值 | FP32 | X86 NV ARM AMD |
sequence_padding | tensor num: 1 |
tensor num: 1 |
param_sequence_padding(default):该op默认参数,无实际参数 | 对输入进行填充0 | FP32 | X86 NV ARM AMD |
sequence_pool | tensor num: 1 |
tensor num: 1 |
pool_tyle: null: 未定义 AVERAGE: avg pool SUM: sum pool SQRT: sqrt pool LAST: 取最后一行 FIRST: 取第一行 |
对指定类型pool | FP32 | X86 NV ARM AMD MLU |
sequence_pool_concat | tensor num: 1 |
tensor num: 1 |
pool_tyle: null: 未定义 AVERAGE: avg pool SUM: sum pool SQRT: sqrt pool LAST: 取最后一行 FIRST: 取第一行 |
对输入做指定类型pool,然后concat | FP32 | X86 NV ARM |
shuffle_channel | tensor num: 1 |
tensor num: 1 |
无实际参数 | 该算子将输入的通道混洗重排 | FP32 | X86 NV ARM |
slice | tensor num: 1 |
tensor num: 1 |
slice_dim: slice_point: axis: |
沿多个轴生成输入张量的切片 | FP32 | X86 NV ARM MLU BM |
softmax | tensor num: 1 |
tensor num: 1 |
无实际参数 | out = exp(x)/sigma(exp(x)) | FP32 | X86 NV ARM MLU BM AMD |
split | 1 tensor | split_num tensor | split_num(int):切分的份数。 | 切分得到split_num份的output,每份与input shape相同,且共享数据 | FP32、INT8(ARM) | NV、X86、ARM、AMD、MLU、BM |
topk_avg_pooling | 3 tensor | 1 tensor | top_ks(vector):top_k列表。 feat_map_num(int):feature map数。 is_pooling_by_row(bool):为true时按行池化,false按列。 |
topK平均池化 | FP32 | NV、X86、ARM |
topk_pooling | 2 tensor | 1 tensor | top_k(int):获取前top_k个数用于池化。 feat_map_num(int):feature map数。 |
topK池化 | FP32 | NV、X86、ARM、AMD |
yolo_box | 2 tensor | 2 tensor | anchors(vector):anchor宽和高。 class_num(int):预测的分类数。 conf_thresh(float):检测盒的置信度阈值。 downsample_ratio(int):降采样率。 |
从YOLOv3网络的输出中生成YOLO检测盒 | FP32 | NV、X86、ARM |