更新时间:2021-03-18 GMT+08:00
分享

Caffe算子规格

总体限制说明:

  1. 如果没有特别说,输入和输出的 w<=4096,h<=4096。

算子名称

Classify

Name

Type Range

Required

Doc

规格限制

Pooling

INPUT

x

float16

TRUE

对输入x做Pooling,输出y

支持float16

OUTPUT

y

float16

TRUE

支持float16

ATTR

pool

int

FALSE

pooling的类型,包括两种:

  • MAX(取值为0),默认为MAX
  • AVE(取值为1)

支持配置0或1

ATTR

kernel_size

int

FALSE

kernel大小

当global_pooling==False,pool==1,x_w(Padding后)>kernel_w时,有如下约束:

  1. Filter_h*filter_w*32+feature_w*(31*stride_h+filter_w)<=32768
  2. 满足kernel_size(kernel_h,kernel_w)配置范围在1~255

ATTR

kernel_h

int

FALSE

kernel高。(在global_pooling==False时,kernel_size、kernel_h/kernel_w是二选一的,不能两者都提供)

ATTR

kernel_w

int

FALSE

kernel宽

ATTR

stride

int

FALSE

stride (在高和宽方向)(default = 1)(如果提供了Stride_h,则优先取值Stride_h和Stride_w)

支持,配置范围1~63,且stride <= 2 * kernel_size

ATTR

stride_h

int

FALSE

stride高,默认值为1

ATTR

stride_w

int

FALSE

stride宽,默认值为1

ATTR

pad

int

FALSE

padding大小(在高和宽方向)(default = 0),如果提供了Pad_h,则以Pad_h为准

pad<kernel

ATTR

pad_h

int

FALSE

padding高(默认值 0)

ATTR

pad_w

int

FALSE

padding宽(默认值 0)

ATTR

global_pooling

int

FALSE

默认为false,是否全平面做

支持配置True或False

ATTR

round_mode

int

FALSE

pooling ceil的模式

  • 0:DOMI_POOLING_CEIL,默认为0
  • 1:DOMI_POOLING_FLOOR

支持配置0或1

Eltwise

DYNAMIC_INPUT

x

float16,float32

TRUE

输入tensor,tensor的数据类型和shape必须相同,其Tensor的size最大支持32

支持float16,bottom num<=32

OUTPUT

y

float16,float32

TRUE

输出tensor,与输入tensor的数据类型和shape相同,对输入Tensor做element-wise的操作,加、乘、求最大

支持float16

ATTR

operation

int

FALSE

element-wise的操作:加、乘、求最大,取值如下:

  • 0:product
  • 1:sum,默认值为1
  • 2:max

支持,配置范围0~2

ATTR

coeff

ListFloat

FALSE

如果输入,则长度必须等于bottom NUm。默认为空,在sum时乘以对应的系数,默认值为{}

支持,配置时其向量长度必须等于bottom num

InnerProduct

INPUT

x

float16

TRUE

输入tensor

float16

INPUT

w

float16

TRUE

weight的tensor

float16

OPTIONAL_INPUT

b

float16,float32

FALSE

bias

float16

OUTPUT

y

float16,float32

TRUE

输出tensor

float16

ATTR

num_output

Int

TRUE

InnerProduct后的神经元数量

最大支持32768

ATTR

transpose

bool

FALSE

是否转置,默认False

True或者False

ATTR

bias_term

bool

FALSE

是否有bias,默认为True

True或者False

ATTR

axis

int

FALSE

InnerProduct的轴,当前支持1或者2。

1

Softmax

INPUT

x

float16, float32

TRUE

输入Tensor

float16

OUTPUT

y

float16, float32

TRUE

输出Tensor

float16

ATTR

axis

int

FALSE

axis : softmax的轴

vector c<=16384(cs)/24576(ES)

tensor c<=4096

ReLU ,

LeakyReLU,

RReLU

INPUT

x

float16, float32

TRUE

输入

float16

OUTPUT

y

float16, float32

TRUE

输出

y = max(0, x) +negative_slope * min(0, x)

float16

ATTR

negative_slope

float

FALSE

默认为0,负值的斜率

float16

Proposal

INPUT

cls_prob

float16,fp32

TRUE

前景和背景的概率,[batch,2*num_anchors,height,width] ,*2表示背景和前景概率(第一个是背景概率(bg prob),第二个是前景概率(fg probs) 。

float16

INPUT

bbox_delta

float16,fp32

TRUE

预选框位置(Preselected box position),(batch,num_anchors*4,height,Width)

float16

INPUT

im_info

-

FALSE

输入图片的大小(高和宽),默认值为{375, 1240}

-

OUTPUT

rois

float16,fp32

TRUE

输出框信息,Tensor[batch, 5, N],其中N 是post_nms_topn对齐到16的倍数的值,5表示(batchID ,x1,y1,x2,y2,),实际每个batch按actual_rois_num输出

float16

OUTPUT

actual_rois_num

int32

FALSE

[batch,8],只有第一个有效,数据类型是int32,实际每个batch输出的bbox数量

int32

ATTR

feat_stride

float

TRUE

滑块滑动的大小,默认值16

-

ATTR

base_size

float

FALSE

generate_anchors中生成基本框的大小,默认值16

-

ATTR

min_size

float

FALSE

box的最小大小,默认值:{16,16}

-

ATTR

ratio

ListFloat

FALSE

generate_anchors中生成框的高宽比例,默认值为[0.5,1,2]

-

ATTR

scale

ListFloat

FALSE

generate_anchors中生成框的高宽相对于base_size的大小,默认值为{8,16,32}

-

ATTR

pre_nms_topn

int

FALSE

Topk中的K,在float16场景下,非昇腾AI处理器场景中最大为6008,昇腾AI处理器场景中最大3008;当采用FP32时,非昇腾AI处理器场景中最大为3004,昇腾AI处理器场景中最大1502(默认值1502)

不超过1502

ATTR

post_nms_topn

int

FALSE

最终的输出数量,非昇腾AI处理器场景中最大为6000,昇腾AI处理器场景最大3000;当采用FP32时,非昇腾AI处理器场景中最大为3000,昇腾AI处理器场景中最大1502(默认值304)

不超过1502

ATTR

iou_threshold

float

FALSE

交并比(Intersection over Union)的阈值,必须是 (0,1],默认为(0.7)

(0,1]

ATTR

output_actual_rois_num

bool

FALSE

是否输出actual_rois_num:

False:不输出,默认为False

True:输出

-

BatchNorm

INPUT

x

float16,float32

TRUE

输入tensor

-

INPUT

mean

float16,float32

TRUE

均值

float16

INPUT

variance

float16,float32

TRUE

方差

float16

INPUT

scale_factor

float16,float32

TRUE

滑动平均的衰减系数,用于前一次计算的mean和variance的影响(除以此值)。

float16

INPUT

scale

float16,float32

FALSE

接口保留

-

INPUT

offset

float16,float32

FALSE

接口保留

-

OUTPUT

y

float16,float32

FALSE

输出tensor

float16

ATTR

eps

float

FALSE

分母附加值,防止除以方差时出现除0操作,默认为1e-5

支持配置

ATTR

use_global_stats

bool

FALSE

是否使用mean variance参数,固定取值为True

支持True

ROIPooling

INPUT

x

float16,float32

TRUE

输入feature Map[batch,C,H,W]

float16;且h和w随着pooled_h/pooled_w取值不同,其范围也不相同:

1)pooled_h=pooled_w:2,17:h和w<=50

2)pooled_h=pooled_w:4,5,10-16,h和w<=70

3)pooled_h=pooled_w:7,8,h和w<=80

4)pooled_h=pooled_w:3,h和w<=60

5)pooled_h=pooled_w:18-20, h和w<=40

INPUT

rois

float16,float32

TRUE

ROIS的输入[batch,5,N],其中的N必须是16的倍数。

支持float16

INPUT

roi_actual_num

int

FALSE

Tensor的Shape为[batch,8],表示每个batch实际的rois数量

int32

OUTPUT

y

float16,float32

TRUE

从feature map中根据rois 的坐标crop出对应部分后再根据输出size的配置进行max pooling[batch*N,C,pooled_h,pooled_w]

支持float16

ATTR

pooled_h

int

TRUE

roi_pooling的高,必须大于0

[2,20]

ATTR

pooled_w

int

TRUE

roi_pooling的宽,必须大于0

[2,20]

ATTR

spatial_scale

float

FALSE

rois映射到原始Feature Map的缩放比例系数,如果有spatial_scale_h和spatial_scale_w,则以spatial_scale_h和spatial_scale_w为准,如果不提供spatial_scale_h和spatial_scale_w,则在caffe插件中把spatial_scale转换为spatial_scale_h和spatial_scale_w

-

ATTR

spatial_scale_h

float

FALSE

rois映射到原始Feature Map的高缩放比例系数,默认值为0.0625

-

ATTR

spatial_scale_w

float

FALSE

rois映射到原始Feature Map的宽缩放比例系数,默认值为0.0625

-

AbsVal

INPUT

x

float16,float32,int32

-

功能:求绝对值

计算公式:y=|x|

float16

OUTPUT

y

float16,float32,int32

-

float16

Bias

INPUT

x

float32, float16

TRUE

输入Tensor

float16

INPUT

bias

float32, float16

TRUE

bias

-

OUTPUT

y

float32, float16

TRUE

输出Tensor

-

ATTR

axis

int

FALSE

默认值为1,不同的值对应的维度不同

例如,bottom[0]是4维的,Shape为100x3x40x60,输出 top[0]有同样的Shape,而输入bottom[1] 根据axis的值确定,可以有如下的Shape:

(axis == 0 == -4) 100; 100x3; 100x3x40; 100x3x40x60

(axis == 1 == -3) 3; 3x40; 3x40x60

(axis == 2 == -2) 40; 40x60

(axis == 3 == -1) 60

并且bottom[1] 的Shape为空表示输入的是标量bias,与axis无关.

[-rank(x), rank(x)),遵循caffe 规则

ATTR

num_axes

int

FALSE

指定训练的bias参数维度大小,-1表示axis 开始全部,如果是0表示标量。如果是在线数据bottom[1]输入,则忽略此参数,默认值为1

[-1, rank(x)),设axis_=axis>0:axis,axis+rank(x),则要求 num_axes+axis_<=rank(x)

BNLL

INPUT

x

float16,float32

TRUE

激活函数

计算公式:if x >0: y = x + log(1 + exp(-x))

else: y = log(1 + exp(x))

float16

OUTPUT

y

float16,float32

TRUE

float16

Crop

INPUT

x

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

对输入tensor x进行裁剪,裁剪成size的shape大小。

计算公式:

(1)x—要进行裁剪的bottom,A的size为(20,50,512,512)

(2)size—裁剪的参考输入,size为(20,10,256,256)

(3)y—输出top,它是在x的基础上按照size的Shape裁剪而来,所以Shape和size是一样的。

Crop里有两个重要的参数:axis(决定从哪个轴开始裁剪)和offsets(给出三个维度,决定裁剪位置的偏移),裁剪的长度和x2中对应的轴的长度是对应的。例如:

(1)给出axis=1,offset=(25,128,128)

(2)裁剪操作:C = A[:,25:25+size.shape[1],128:128+size.shape[2],128:128+size.shape[3]]

-

INPUT

size

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

-

OUTPUT

y

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

-

ATTR

axis

int,默认值为2

FALSE

-

ATTR

offset

ListInt

TRUE

-

Power

INPUT

x

float16, float32

TRUE

幂函数,计算公式: y = (shift + scale * x) ^ power

float16

OUTPUT

y

float16, float32

TRUE

float16

ATTR

power

float

FALSE

默认值1.0

power是有小数位的,要求底数大于0,其它按caffe定义

ATTR

scale

float

FALSE

默认值1.0

-

ATTR

shift

float

FALSE

默认值0.0

-

TanH

INPUT

x

float16, float32

TRUE

y=tanh(x)

float16

OUTPUT

y

float16, float32

TRUE

float16

Reverse

INPUT

x

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

输入Tensor

-

OUTPUT

y

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

输出tensor,与输入Tensor的数据类型和Shape相同

-

ATTR

axis

int

TRUE

是一个向量,表示反向的轴,取值范围在 [-rank(x), rank(x))

[-rank(x), rank(x))

Normalize

INPUT

x1

float32, float16

TRUE

需要normalized的输入Tensor

float16

INPUT

x2

float32, float16

TRUE

normalized的scale输入Tensor,是一个N维的向量。

如果channel_shared==True,则N=1;否则channel_shared==False,N=channel

float16

OUTPUT

y

float32, float16

TRUE

输出Tensor

float16

ATTR

across_spatial

bool

FALSE

True表示在CHW 维度做normalize,False表示只在C维度上做normalize,默认为True

True或者False

ATTR

channel_shared

bool

FALSE

用于控制x2的参数,默认为True

True或者False

ATTR

eps

-

FALSE

为了防止除0,默认值1e-10

-

PSROIPooling

INPUT

x

float16

TRUE

feature Map,[batch,C,H,W], 其中的C=rois_num*group_size^2

float16

INPUT

rois

float16

TRUE

Shape是 [batch,5,rois_num],其中的5表示(batchID,x1,y1,x2,y2)

float16

OUTPUT

y

float16

TRUE

类似ROIPooling,不同位置的输出来自不同channel 的输入[batch*rois_num,output_dim,group_size,group_size]

float16

ATTR

spatial_scale

float

TRUE

进行ROIPooling特征输入的尺寸相比原始输入的比例

大于0

ATTR

output_dim

int

TRUE

输出channels,必须大于0

支持,输出ROI 的channel

维度大小

ATTR

group_size

int

TRUE

输出Feature的高和宽

支持,输出ROI 的H 和W

大小,H=W;要求原始的input_channel= =out_channel*group_size^2

Permute

INPUT

x

float16,fp32

TRUE

对输入数据进行转置操作

float16

OUTPUT

y

float16,fp32

TRUE

float16

ATTR

order

listInt

TRUE

转置的顺序

-

PRelu

INPUT

x

int8,uint8,float16,float32

TRUE

激活函数,y=weight min(x,0)+max(x,0)

float16

INPUT

weight

int8,uint8,float16,float32

TRUE

只根据weight的维度区分是否为channe_shared场景 ,如果 weight只有一个数,则为channe_shared==True,如果 weight是 channel维度 ,则channel_shared==False

支持Float16,是channel维度的向量或者标量

OUTPUT

y

int8,uint8,float16,float32

TRUE

-

float16

PassThrough

INPUT

x

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

将通道数据转移到平面上,或反过来操作,如下为reverse==TRue,输入Shape为 [batch,C,H*stride,W*stride],输出Shape为 [batch,stride*stride*C,H,W]

-

OUTPUT

y

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

-

ATTR

stride

int

FALSE

平面或通道数扩大的倍数,默认2

float16

ATTR

reverse

bool

FALSE

为true时相当于Depthtospace,为false时相当于spacetoDepth

float16

scale

INPUT

x

float32, float16

TRUE

输入Tensor

-

INPUT

scale

float32, float16

TRUE

scale的tensor

-

INPUT

bias

float32, float16

FALSE

bias tensor

-

OUTPUT

y

float32, float16

TRUE

输出tensor

-

ATTR

axis

int

FALSE

默认为1,输入的bottom[0]做scale的起始维度,axis 不同则bottom[1]

的shape 不同,例如,如果 bottom[0] 是4维,shape为 100x3x40x60,输出 top[0] shape相同,且给定axis,bottom[1] 可以有如下的Shape:

(axis == 0 == -4) 100; 100x3; 100x3x40; 100x3x40x60

(axis == 1 == -3) 3; 3x40; 3x40x60

(axis == 2 == -2) 40; 40x60

(axis == 3 == -1) 60

并且,bottom[1] 的shape可以为空,表示scale是一个标量(这时axis就没有意义).

[-rank(x), rank(x))

ATTR

num_axes

int

FALSE

默认是1,当只有一个bottom 的时候有效,表示做scale 的维度,-1

表示axis 开始全部,0 表示是参数只有一个scalar

[-1, rank(x)),设axis_=axis>0:axis,axis+rank(x),则要求 num_axes+axis_<=rank(x)

Convolution(DepthwiseConv,ConvolutionDepthwise)

INPUT

x

float16

TRUE

对输入x做卷积

-

INPUT

filter

float16

TRUE

卷积核

DepthwiseConv和ConvolutionDepthwise都通过转换为Convolution算子来使用,例如ConvolutionDepthwise算子:

layer {
   name: "resx1_conv2"
   type: "ConvolutionDepthwise"
   bottom: "resx1_conv1"
   top: "resx1_conv2"
   convolution_param {
     num_output: 54
     kernel_size: 3
     stride: 2
     pad: 1
     bias_term: false
     weight_filler {
       type: "msra"
     }
   }
 }

需要修改为:

layer {
   name: "resx1_conv2"
   type: "Convolution"
   bottom: "resx1_conv1"
   top: "resx1_conv2"
   convolution_param {
     num_output: 54
     group: 54
     kernel_size: 3
     stride: 2
     pad: 1
     bias_term: false
     weight_filler {
       type: "msra"
     }
   }
 }

如果DepthwiseConv和ConvolutionDepthwise中已携带group属性,则只修改type为Convolution即可;如果没有携带group属性,则需添加group属性:group==num_output(group、out_channel和input_channel必须相同)

说明:

修改后的模型文件(.prototxt)和权重文件(.caffemodel)的op name、op type必须保持名称一致(包括大小写)。

如下的场景限制:

1)如果out_w==out_h==1:feature_w==feature_h==filter_w==filter_h,且取值范围在1~11

2)不支持输出的W==1,输出的H不等于1的场景

3)如果group==Channel,则要求 Filter_h*filter_w*32+feature_w*(31*stride_h+filter_w)<=32768,且满足Filter_w,filter_h配置范围在1~255.

3)其它场景:Filter_W和Filter_h配置范围在1~255

INPUT

bias

float16

FALSE

bias,可以为None(表示不需要bias)

-

OUTPUT

y

float16

TRUE

-

-

ATTR

pad

ListInt

FALSE

高和宽轴开始和结束的Padding, pad和pad_h/pad_w不能同时提供,默认值为0;pad的List长度最大为2

pad<filter.size

ATTR

pad_h

int

FALSE

ATTR

pad_w

int

FALSE

ATTR

stride

ListInt

FALSE

高和宽轴的stride.stride和stride_h/stride_w不能同时提供,默认值为1;stride的List长度最大为2

1<=stride<=63

ATTR

stride_h

int

FALSE

ATTR

stride_w

int

FALSE

ATTR

dilation

ListInt

FALSE

Filter的高和宽轴的放大系数,List长度最大为2,默认值为1

支持1~255,配置后(kernel-

1)*dilation+1<256;

ATTR

group

int

FALSE

-

group能被channel整除

Deconvolution

INPUT

x

float16

TRUE

输入Tensor

float16

INPUT

filter

float16

TRUE

卷积核,shape为 [H,W,filter_channel,filter_number],filter_channel必须与 x channel相等

如下的场景限制:

1)如果out_w==out_h==1:feature_w==feature_h==filter_w==filter_h,且取值范围在1~11

2)不支持输出的W==1,输出的H不等于1的场景

3)如果group==Channel,则要求 Filter_h*filter_w*32+feature_w*(31*stride_h+filter_w)<=32768,且满足Filter_w,filter_h配置范围在1~255.

3)其它场景:Filter_W和Filter_h配置范围在1~255

INPUT

bias

float16

FALSE

-

float16

OUTPUT

y

float16

TRUE

-

-

ATTR

pad

ListInt

FALSE

高和宽轴开始和结束的Padding,pad和pad_h/pad_w不能同时提供,默认值为0

pad List的长度最大为2

pad<filter.size

ATTR

pad_h

int

FALSE

ATTR

pad_w

int

FALSE

ATTR

stride

ListInt

FALSE

高和宽轴的stride,stride和stride_h/stride_w不能同时提供,默认值为1

stride List的长度最大为2

0<=stride<=63

ATTR

stride_h

int

FALSE

ATTR

stride_w

int

FALSE

ATTR

dilation

ListInt

FALSE

Filter的高和宽轴的放大系数,List长度最大为2,默认值为1

支持1~255,配置后(kernel-

1)*dilation+1<256;

ATTR

group

int

FALSE

-

group能被channel整除

ELU

INPUT

x

float16,float32

TRUE

激活函数,融合了sigmoid和ReLU。

计算公式:if x >0: y = x

else: y = alpha*(exp(x)-1)

float16

OUTPUT

y

float16,float32

TRUE

float16

ATTR

alpha

float,默认值为1

FALSE

float16

Slice

INPUT

x

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

沿某个维度切割输入的blob,输出多个切割的blob

-

OUTPUT

y

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

-

ATTR

slice_dim

uint

-

默认为1,跟axis 含义相同

支持配置 [1, rank(x)),遵循caffe 规则;

ATTR

slice_point

uint

-

表示输出的各个blob 的切割点,不定义的则均分

支持,切割点数小于32;

ATTR

axis

int

-

默认为1,表示切块的维度

[-rank(x), rank(x)),遵循caffe 规则;

Exp

INPUT

x

float16,float32

TRUE

指数运算

计算公式:

if base>0: y = base ^ (shift + scale * x)

if base == -1: y = exp(shift + scale * x)

Float16

OUTPUT

y

float16,float32

TRUE

Float16

ATTR

base

float

FALSE

默认为-1.0,底数

base=-1或者大于0

ATTR

scale

float

FALSE

默认为1.0

-

ATTR

shift

float

FALSE

默认为0

-

Flatten

INPUT

x

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

输入Tensor

-

OUTPUT

y

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

输出tensor

-

ATTR

axis

int

FALSE

需要flatten的开始轴,可以为负数,如果为-1表示最后一个轴,默认值为1

[-rank(x), rank(x))

ATTR

end_axis

int

FALSE

需要flatten的结束轴,可以为负数,如果为-1表示最后一个轴,默认值1

[0, rank(x))

INPUT

INPUT

images

uint8

TRUE

输入的tensor

-

INPUT

params

uint8

FALSE

动态aipp结构体数据流,kAippDynamicPara + (batchNum - 1) * kAippDynamicBatchPara

/**
* @ingroup dnn
* @brief struct define of dynamic aipp batch parameter.
*/
typedef struct tagAippDynamicBatchPara
{
int8_t cropSwitch;              //crop switch
int8_t scfSwitch;               //resize switch
int8_t paddingSwitch;           //0: unable padding, 1: padding config value,sfr_filling_hblank_ch0 ~  sfr_filling_hblank_ch2
//2: padding source picture data, single row/collumn copy
//3: padding source picture data, block copy
//4: padding source picture data, mirror copy
int8_t rotateSwitch;            //rotate switch,0: non-ratate,1: ratate 90° clockwise,2: ratate 180° clockwise,3: ratate 270° clockwise
int8_t reserve[4];
int32_t cropStartPosW;          //the start horizontal position of cropping
int32_t cropStartPosH;          //the start vertical position of cropping
int32_t cropSizeW;              //crop width
int32_t cropSizeH;              //crop height
int32_t scfInputSizeW;          //input width of scf
int32_t scfInputSizeH;          //input height of scf
int32_t scfOutputSizeW;         //output width of scf
int32_t scfOutputSizeH;         //output height of scf
int32_t paddingSizeTop;         //top padding size
int32_t paddingSizeBottom;      //bottom padding size
int32_t paddingSizeLeft;        //left padding size
int32_t paddingSizeRight;       //right padding size
int16_t dtcPixelMeanChn0;       //mean value of channel 0
int16_t dtcPixelMeanChn1;       //mean value of channel 1
int16_t dtcPixelMeanChn2;       //mean value of channel 2
int16_t dtcPixelMeanChn3;       //mean value of channel 3
uint16_t dtcPixelMinChn0;       //min value of channel 0
uint16_t dtcPixelMinChn1;       //min value of channel 1
uint16_t dtcPixelMinChn2;       //min value of channel 2
uint16_t dtcPixelMinChn3;       //min value of channel 3
uint16_t dtcPixelVarReciChn0;   //sfr_dtc_pixel_variance_reci_ch0
uint16_t dtcPixelVarReciChn1;   //sfr_dtc_pixel_variance_reci_ch1
uint16_t dtcPixelVarReciChn2;   //sfr_dtc_pixel_variance_reci_ch2
uint16_t dtcPixelVarReciChn3;   //sfr_dtc_pixel_variance_reci_ch3
int8_t reserve1[16];            //32B assign, for ub copy
}kAippDynamicBatchPara;

/**
* @ingroup dnn
* @brief struct define of dynamic aipp parameter. lite:64+96*batchNum byte ; tiny:64+64*batchNum byte
*/
typedef struct tagAippDynamicPara
{
uint8_t inputFormat;            //input format:YUV420SP_U8/XRGB8888_U8/RGB888_U8
int8_t cscSwitch;               //csc switch
int8_t rbuvSwapSwitch;          //rb/ub swap switch
int8_t axSwapSwitch;            //RGBA->ARGB, YUVA->AYUV swap switch
int8_t batchNum;                //batch parameter number
int8_t reserve1[3];
int32_t srcImageSizeW;          //source image width
int32_t srcImageSizeH;          //source image height
int16_t cscMatrixR0C0;          //csc_matrix_r0_c0
int16_t cscMatrixR0C1;          //csc_matrix_r0_c1
int16_t cscMatrixR0C2;          //csc_matrix_r0_c2
int16_t cscMatrixR1C0;          //csc_matrix_r1_c0
int16_t cscMatrixR1C1;          //csc_matrix_r1_c1
int16_t cscMatrixR1C2;          //csc_matrix_r1_c2
int16_t cscMatrixR2C0;          //csc_matrix_r2_c0
int16_t cscMatrixR2C1;          //csc_matrix_r2_c1
int16_t cscMatrixR2C2;          //csc_matrix_r2_c2
int16_t reserve2[3];
uint8_t cscOutputBiasR0;        //output Bias for RGB to YUV, element of row 0, unsigned number
uint8_t cscOutputBiasR1;        //output Bias for RGB to YUV, element of row 1, unsigned number
uint8_t cscOutputBiasR2;        //output Bias for RGB to YUV, element of row 2, unsigned number
uint8_t cscInputBiasR0;         //input Bias for YUV to RGB, element of row 0, unsigned number
uint8_t cscInputBiasR1;         //input Bias for YUV to RGB, element of row 1, unsigned number
uint8_t cscInputBiasR2;         //input Bias for YUV to RGB, element of row 2, unsigned number
uint8_t reserve3[2];
int8_t reserve4[16];            //32B assign, for ub copy

kAippDynamicBatchPara aippBatchPara;  //allow transfer several batch para.
} kAippDynamicPara;

-

OUTPUT

features

uint8,float16

TRUE

输出的tensor

-

ATTR

aipp_config_path

-

TRUE

aipp配置文件路径,默认为 './aipp.cfg'

-

ROIAlign

INPUT

features

float16,float32

TRUE

输入Tensor

-

INPUT

rois

float16,float32

TRUE

输入数据为[N,5]或者[N,8],其中的5表示batchID,x1,y1,x2,y2,8中前5个数据有效

-

INPUT

rois_n

int32

FALSE

Tensor的Shape为[batch,8],表示每个batch实际的rois数量,可选

-

OUTPUT

output

float16,float32

TRUE

-

-

ATTR

spatial_scale

float

TRUE

rois相对feature的缩放比例

-

ATTR

pooled_h

int

TRUE

输出y的height

-

ATTR

pooled_w

int

TRUE

输出y的width

-

ATTR

sampling_ratio

int

FALSE

用于确定每个bin中采样几个点求均值

2

SSDDetectionOutput

INPUT

bbox_delta

Float16,float32

TRUE

框位置偏移数据[batch,N*num_loc_classes*4]

其中num_loc_classes_= share_location==True ? 1 : num_classes,4表示(xmin,ymin,xmax,yman)

Float16

INPUT

score

Float16,float32

TRUE

置信度数据[batch,N*Num_classes]

Float16

INPUT

anchors

Float16,float32

TRUE

预选框数据[batch,2,N*4]或者[1,2,N*4],其中的2分别表示box和variance,如果variance_encoded_in_target==True,可以不需要variance(即里面的2可以更改为1) ,4表示(xmin,ymin,xmax,yman)

Float16

OUTPUT

out_boxnum

int32

TRUE

输出框的个数[batch,8],每个batch的第一个值是实际框的个数

-

OUTPUT

y

Float16,float32

TRUE

输出框数据,[batch,len,8],其中8表示(batchID,label(classID),score(类别概率),xmin,ymin,xmax,yman,null);len是keep_top_k 128对齐后的取值(如batch为2,keep_top_k 为200,则最后输出shape为(2,256,8)),前256*8个数据为第一个batch的结果。

Float16

ATTR

num_classes

int

TRUE

要预测的类数,当background_label_id==-1时,必须大于等于1,如果background_label_id>=0时,必须大于等于2;最大支持1024,默认值为2

最大支持1024

ATTR

share_location

bool

FALSE

表示不同类间共享框位置,默认值True

-

ATTR

background_label_id

int

FALSE

Background label id,必须为大于等于-1,默认为0

大于等于-1

ATTR

iou_threshold

float

FALSE

交并比(Intersection over Union)阈值, (0,1],默认值为0.3

(0,1]

ATTR

top_k

int

FALSE

在nms步骤前每个图像要保留的总bbox数 // (0,1024],默认为200

(0,1024]

ATTR

eta

float

FALSE

nms 参数,默认值为1(只支持1)

只支持1

ATTR

variance_encoded_in_target

bool

FALSE

方差是否被编码,默认为False

-

ATTR

code_type

int

FALSE

bbox的编解码方式,默认值为1,corner=1 center_size =2 corner_size=3

支持1,2,3

ATTR

keep_top_k

int

FALSE

在nms步骤后每个图像要保留的总bbox数,(0,1024],默认为200,如果为-1表示NMS后的框都保留

(0,1024]

ATTR

confidence_threshold

float

FALSE

仅考虑置信度大于阈值的检测 [0,1]

[0,1]

PriorBox

INPUT

x

float16, float32

TRUE

输入Tensor,只使用到shape中的 高H和宽W

Float16

INPUT

img

float16, float32

FALSE

图片信息,如果有输入,则使用到高和宽。就不需要指定attr中的 img_size nor img_h/img_w

Float16

OUTPUT

y

float16, float32

TRUE

输出Tensor[1,2,num_output*4],其中num_output=H *W*num_priors, num_priors表示 每个 栅格中rois的数量,其值为min_size的数量+aspect_ratio的数量*min_size的数量+max_size的数量

Float16

ATTR

min_size

ListFloat

TRUE

box的最小尺寸 (像素点)

-

ATTR

max_size

ListFloat

TRUE

box的最大尺寸 (像素点)

-

ATTR

aspect_ratio

ListFloat

TRUE

aspect ratios,生成box的宽高的比例,将去掉重复的值

listFloat,大于0

ATTR

flip

bool

FALSE

每个aspect_ratio是否flip,默认值为True

-

ATTR

clip

bool

FALSE

生成的box是否做clip处理,默认为False

-

ATTR

variance

ListFloat

FALSE

生成box的Variance

-

ATTR

step_h

float

FALSE

高的步长

-

ATTR

step_w

float

FALSE

宽的步长

-

ATTR

offset

float

FALSE

每个小栅格上相对左上角的Offset

-

ATTR

img_h

int

FALSE

图像的高

-

ATTR

img_w

int

FALSE

图像的宽

-

FSRDetectionOutput

INPUT

rois

Float16,float32

TRUE

Proposal的输出值,[batch, 5,max_rois_num],其中的5表示(batchID ,x1,y1,x2,y2),max_rois_num是每个batch最大的rois的个数,必须是16的倍数,实际每个batch按actual_rois_num处理数量。

Float16

INPUT

bbox_delta

Float16,float32

TRUE

bbox_delta的Tensor,[total_rois,num_classes*4],这里的4表示( delta_x,delta_y,delta_w,delta_h),total_rois指实际rois的总数

Float16

INPUT

score

Float16,float32

TRUE

[total_rois,num_classes],每个类别的概率(其中classes为0表示背景概率),total_rois指实际rois的总数

Float16

INPUT

im_info

Float16,float32

FALSE

输入图像的高和宽

-

INPUT

actual_rois_num

int

FALSE

[batch_rois,8],其中第一个有效,表示每个batch实际输出的rois数量。

-

OUTPUT

actual_bbox_num

int32

TRUE

[bacth,num_classes],数据类型是int32,实际输出的bbox数量

-

OUTPUT

box

Float16,float32

TRUE

实际输出的Proposal,[batch, numBoxes,8],其中的8表示 [x1, y1, x2, y2, score, label, batchID, NULL],numBoxes的最大 值是1024,即取min(输入框最大数量,1024)

Float16

ATTR

batch_rois

int

FALSE

rois中含有的batch数,默认值为1(接口保留,实际从shape中取值)

-

ATTR

num_classes

int

True

类的数量,包括背景

-

ATTR

score_threshold

float

True

score的阈值

-

ATTR

iou_threshold

float

True

交并比(Intersection over Union)阈值

-

Reshape

INPUT

x

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

输入Tensor

-

INPUT

shape

int32,int64

FALSE

指示输出的维度大小,0表示跟bottom 一致,-1 表示该维度由输入的blob 及输出的其他维度决定

-

OUTPUT

y

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

维度变换后的输出Tensor

-

ATTR

axis

int

TRUE

默认为0,表示shape 中第一数值与输出的第几个起始维度对应

[-rank(x), rank(x))

ATTR

num_axes

int

FALSE

计算输出Shape的维度数:

  • 当num_axes ==-1,输出Tensor的shape.size() = shape.size() + axis
  • 当num_axes<>-1时,输出Tensor的shape.size() = shape.size() + tensor.size() - num_axes

支持[-1,rank(x)范围内可配,默认

值-1 表示对axis 起始的所有

轴进行变换

Sigmoid

INPUT

x

float16, float32

TRUE

simoid 激活函数 y = (1 + exp(-x))^{-1}

Float16

OUTPUT

y

float16, float32

TRUE

Float16

Concat

INPUT

x

float16,fp32,int8,int16,int32,

int64,uint8,uint16,uint32,uint64

TRUE

将多个tensor按照指定轴合并为一个tensor。

其中x为变长的tensor list。

bottom Num最大为16.

OUTPUT

y

float16,fp32,int8,int16,int32,

int64,uint8,uint16,uint32,uint64

TRUE

-

ATTR

axis

int

FALSE

默认为1,表示哪个维度concat,可以为负数

支持配置,需要在维度范围之内

ATTR

concat_dim

int

FALSE

默认为1,跟axis 含义相同

跟axis 含义相同,不支持负值

Upsample(darknet)

INPUT

x

Float16,float32

TRUE

y[N,C,i,j]=scale*x[N,C,i/stride_h,j/stride_w],其中0<=i<=stride_h*x.h-1,0<=j<=stride_w*x.w-1

Float16

OUTPUT

y

Float16,float32

TRUE

Float16

ATTR

stride

int

FALSE

如果同时有stride、stride_h和stride_w,以stride的值为准

-

ATTR

stride_h

int

FALSE

默认值为2,h方向放大的比例

大于1

ATTR

stride_w

int

FALSE

默认值为2,w方向放大的比例

大于1

ATTR

scale

float

FALSE

默认值为1,输出值的比例系数

-

Yolo

INPUT

x

float16,float32

TRUE

[batch, boxes *(coords+1+classes),height,width]

Float16

OUTPUT

coord_data

float16,float32

TRUE

[batch, boxes*coords, ceil(height*width*2+32, 32)/2],表示预测的coords。

Float16

OUTPUT

obj_data

float16,float32

TRUE

[batch, ceil(boxes*height*width *2+32, 32)/2],这里的每个anchor的obj的数值只有1个。

Float16

OUTPUT

classes_data

float16,float32

TRUE

[bacth, classes, ceil(boxes*height*width *2+32, 32)/2],为便于内部计算已将每个anchor的score向16取整。

Float16

ATTR

boxes

int

FALSE

每个grid的anbox的数量,默认值3。

-

ATTR

coords

int

FALSE

coords的数量,固定为4,表示x、y、h、w

4

ATTR

classes

int

FALSE

类别数,默认为80,不能超过1024。

最大1024

ATTR

yolo_version

string

FALSE

“V2”或者“V3”,表示yolo V2和V3的版本;分别对应于detection_layer和Yolo_layer,默认值"V3"。

V2或者V3

ATTR

softmax

bool

FALSE

在YOLO V2和V3中,表示是否做softmax操作,默认值False

True或者False

ATTR

softmaxtree

bool

FALSE

softmaxtree 固定为False,接口保留(darknet中有定义)

False

ATTR

background

bool

FALSE

在YOLO V2和V3中,与“softmax”参数配合,用于确定对b、classes等做的操作类型,默认值False。

True或者False

YoloV2DetectionOutput

INPUT

coord_data

float16,float32

TRUE

[batch,coords *boxes,height,width],表示预测的coords

float16,height*width*Dtype_Size>=32 Byte

INPUT

obj_prob

float16,float32

TRUE

[batch,boxes,height,width],此处每个anchor的obj的数值只有1个

float16

INPUT

classes_prob

float16,float32

TRUE

[batch,boxes*classes,height,width] , 为了方便AICORE计算已将每个anchor的score向16取整

float16,height*width*Dtype_Size>=32 Byte

INPUT

img_info

float16,float32

TRUE

原图信息,[batch,4],4表示netH、netW、scaleH、scaleW四个维度。

其中netH,netW为网络模型输入的HW,scaleH,scaleW为原始图片的HW。

float16

OUTPUT

box_out

float16,float32

TRUE

[batch,6*post_nms_topn],在其中的6表示x1, y1, x2, y2, score, label(类别),实际按box_out_num的数量输出

float16

OUTPUT

box_out_num

int32

TRUE

[batch,8,1,1],数据类型为int32,8个数中仅第一个数有效,每个batch中有效框的数量,每个batch中有效框的数量最大为1024

-

ATTR

biases

ListFloat

TRUE

[boxes,2],其中2分别表示x(w)和y(h)方向。

-

ATTR

boxes

int

FALSE

每个grid的anbox的数量,默认为5

-

ATTR

coords

int

FALSE

Coords的数量,固定为4,表示x,y,h,w

固定为4

ATTR

classes

int

FALSE

类别数,默认为20

最大1024

ATTR

relative

bool

FALSE

在correct_region_boxes中表示是否为相对值,True

True或者False

ATTR

obj_threshold

float

FALSE

有物体概率的阈值,对应于clsProb中的阈值,默认值为0.5

[0,1]

ATTR

pre_nms_topn

int

FALSE

pre_nms_topn对应于multiClassNMS(对于每个类别,取前pre_nms_topn个数量进行处理,海思SoC最大支持512,Mini,Cloud最大支持1024,默认值512.

最大1024

ATTR

post_nms_topn

int

FALSE

经过nms之后返回全部还是postTopK个框,最大为1024;默认值512

最大1024

ATTR

score_threshold

float

FALSE

每个类别的阈值,默认值为0.5

[0,1]

ATTR

iou_threshold

float

FALSE

交并比(Intersection over Union)阈值,默认值是0.45

[0,1]

YoloV3DetectionOutput

INPUT

coord_data_low

float16,float32

TRUE

[batch,coords *boxes,ceil(height_low*width_low,16)+16],表示预测的coords。

float16,height_low*width_low*Dtype_Size>=32 Byte

INPUT

coord_data_mid

float16,float32

TRUE

[batch,coords *boxes,ceil(height_mid*width_mid,16)+16],表示预测的coords。

float16,height_mid*width_mid*Dtype_Size>=32 Byte

INPUT

coord_data_high

float16,float32

TRUE

[batch,coords *boxes,ceil(height_high*width_high,16)+16],表示预测的coords。

float16,height_high*width_high*Dtype_Size>=32 Byte

INPUT

obj_prob_low

float16,float32

TRUE

[batch,ceil(boxes*height_low*width_low,16)+16],这里的每个anchor的obj的数值只有1个。

float16

INPUT

obj_prob_mid

float16,float32

TRUE

[batch,ceil(boxes*height_mid*width_mid,16)+16],这里的每个anchor的obj的数值只有1个。

float16

INPUT

obj_prob_high

float16,float32

TRUE

[batch,ceil(boxes*height_high*width_high,16)+16],这里的每个anchor的obj的数值只有1个。

float16

INPUT

classes_prob_low

float16,float32

TRUE

[batch,classes,ceil(boxes*height_low*width_low,16)+16] , 为便于内部计算已将每个anchor的score向16取整。

float16,height_low*width_low*Dtype_Size>=32 Byte

INPUT

classes_prob_mid

float16,float32

TRUE

[batch,classes,ceil(boxes*height_mid*width_mid,16)+16] , 为便于内部计算已将每个anchor的score向16取整。

float16,height_low*width_low*Dtype_Size>=32 Byte

INPUT

classes_prob_high

float16,float32

TRUE

[batch,classes,ceil(boxes*height_high*width_high,16)+16] , 为便于内部计算已将每个anchor的score向16取整。

float16,height_low*width_low*Dtype_Size>=32 Byte

INPUT

img_info

float16,float32

TRUE

原图信息:[batch,4],4表示netH、netW、scaleH、scaleW四个维度。

其中netH,netW为网络模型输入的HW,scaleH,scaleW为原始图片的HW。

float16

OUTPUT

box_out

float16,float32

TRUE

[batch,6*post_nms_topn],在其中的6表示x1, y1, x2, y2, score, label(类别),实际按box_out_num的数量输出。

float16

OUTPUT

box_out_num

int32

TRUE

[batch,8,1,1],数据类型为int32,8个数中仅第一个数有效,每个batch中有效框的数量,每个batch中有效框的数量最大为1024。

float16

ATTR

biases_low

ListFloat

TRUE

[boxes*2],其中2分别表示x(w)和y(h)方向,对应box1。

-

ATTR

biases_mid

ListFloat

TRUE

[boxes*2],其中2分别表示x(w)和y(h)方向,对应box2。

-

ATTR

biases_high

ListFloat

TRUE

[boxes*2],其中2分别表示x(w)和y(h)方向,对应box3。

-

ATTR

boxes

int

FALSE

每个grid的anbox的数量,默认为3。

-

ATTR

coords

int

FALSE

coords的数量,固定为4,表示x、y、h、w

固定为4

ATTR

classes

int

FALSE

类别数,默认为80。

最大1024

ATTR

relative

bool

FALSE

在correct_region_boxes中表示是否为相对值,默认值为True。

True或者False

ATTR

obj_threshold

float

FALSE

有物体概率的阈值,对应于clsProb中的阈值,默认值为0.5。

[0,1]

ATTR

pre_nms_topn

int

FALSE

pre_nms_topn对应于multiClassNMS(对于每个类别,取前pre_nms_topn个数量进行处理,最大支持1024,默认值为1024最大支持512,默认为512。

最大1024

最大512

ATTR

post_nms_topn

int

FALSE

经过nms之后返回全部还是postTopK个框,最大为1024,默认值1024。

最大1024

ATTR

score_threshold

float

FALSE

每个类别的阈值,默认值为0.5

[0,1]

ATTR

iou_threshold

float

FALSE

交并比(Intersection over Union)阈值,默认值是0.45

[0,1]

Log

INPUT

x

float16,float32

TRUE

指数运算

计算公式:

if base>0: y = log_base(shift + scale * x)

if base == -1: y = log_e(shift + scale * x)

算子原型:tensorflow和caffe原型不一致,需要重新定义。

float16

OUTPUT

y

float16,float32

TRUE

float16

ATTR

base

float

FALSE

默认为-1.0

base>0或者-1

ATTR

scale

float

FALSE

默认为1.0

-

ATTR

shift

float

FALSE

默认为0.0

-

LRN

INPUT

x

float16,float32

TRUE

normalization 的方法;

计算公式:power(k + (alpha / n)*sum(square(x)),beta)

float16

OUTPUT

y

float16,float32

TRUE

float16

ATTR

local_size

uint

FALSE

默认为5,必须是奇数(LRN only supports odd values for local_size),local_size不大于255

必须是奇数,且不大于255

ATTR

alpha

float

FALSE

默认为1.0

-

ATTR

beta

float

FALSE

默认为0.75

-

ATTR

norm_region

int

FALSE

0:ACROSS_CHANNELS

1:WITHIN_CHANNEL

默认为0,只支持ACROSS_CHANNELS

只支持0

ATTR

k

float

FALSE

默认是1.0

-

MVN

INPUT

x

float16, float32

TRUE

输入Tensor

float16

OUTPUT

y

float16, float32

TRUE

y=(x-mean(x))/std(x)

float16

ATTR

normalize_variance

bool

FALSE

设为false时只减均值,默认为true,

True或者False

ATTR

across_channels

bool

FALSE

设为true时就是CHW视为一个向量,默认为flase

True或者False

ATTR

eps

float

FALSE

Epsilon为了防止除零,默认值 1e-9

可以配置

Reduction

INPUT

x

float16, float32

TRUE

-

float16

OUTPUT

y

float16, float32

TRUE

-

float16

ATTR

operation

int

FALSE

default = 1,含义如下:

1:SUM

2:ASUM

3:SUMSQ

4:MEAN

支持配置,配置范围1~4

ATTR

axis

int

FALSE

默认为0,表示从第几个维度开始

后面的维度全部reduction

[-rank(x), rank(x))

ATTR

coeff

float

FALSE

默认为1.0,输出的系数

支持配置

Split

INPUT

x

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

复制输入的blob 到多个节点

-

OUTPUT

y

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

-

SPP

INPUT

x

float16, float32

TRUE

根据输入的feature map确定pool的参数,依次输出1*1,2*2,4*4,…等平面大小的平面,多个pool结果依次排布

float16,H和W最大不能超过510

OUTPUT

y

float16, float32

TRUE

float16

ATTR

pyramid_height

int

TRUE

金字塔的层数,其取值范围为[1,7),且计算出来的Pooling的kernel_size和Pad_size需要满足caffe Pooling的约束(即Pad_size<kernel_size)

[1,7)

ATTR

pool_method

int

FALSE

0:max pooling

1:avg pooling

默认为max pooling

0,1

Threshold

INPUT

x

float16,float32

TRUE

输入与一个阈值相比较,大于则输出1,小于等于则输出0

float16

OUTPUT

y

float16,float32

TRUE

float16

ATTR

threshold

float

FALSE

默认为0,输出比较的结果,1或0

-

Tile

INPUT

x

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

输入tensor

-

OUTPUT

y

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

输出tensor

-

ATTR

axis

int

FALSE

指定扩展的轴,默认为1

-

ATTR

tiles

int

TRUE

扩展的倍数,比如x shape [n,c,h,w],axis=2,tiles=3,那么y shape [n,c,3*h,w]

-

ShuffleChannel

INPUT

x

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

-

-

OUTPUT

y

float16,float32,int8,uint8,int16,

uint16,int32,uint32,int64,uint64

TRUE

-

-

ATTR

group

uint

FALSE

必须大于0,且channel必须能被group整除,默认为1

必须大于0,且channel必须能被group整除

BatchedMatMul

INPUT

x1

fp16

TRUE

输入x1,维数必须大于2而小于等于8,如果adj_x1是False,表示[batch,…,M,K];如果adj_x1是True,[batch,…,K,M],其中batch,…, 需要与x2中的一致

-

INPUT

x2

fp16

TRUE

输入x2,维数必须大于2而小于等于8,如果adj_x2是False,shape表示为[batch,…,K,N];如果adj_x2是True,shape表示为[batch,…,N,K],其中batch,…, 需要与x1中的一致

-

OUTPUT

y

fp16

TRUE

输出y=x1*x2,Shape为[batch,…,M,N]

-

ATTR

adj_x1

bool

FALSE

x1是否转置,默认值为False

-

ATTR

adj_x1

bool

FALSE

x2是否转置,默认值为False

-

LSTM

INPUT

x

float16

TRUE

时间变化数据x,[T,N,input_size]

T最大支持256

INPUT

cont

float16,float32

TRUE

序列连续性标记,[T,N]

T最大支持256

INPUT

w_x

float16

TRUE

x权重,维度为[input_size, 4×num_output]

-

INPUT

bias

float16,float32

TRUE

偏置,维度为[4×num_output]

-

INPUT

w_h

float16

TRUE

h权重,维度为[4×num_output, num_output]

-

INPUT

x_static

float16

FALSE

时间不变的静态数据xstatic[N,input_size]; 接口当前保留

-

INPUT

h_0

float16,float32

FALSE

expose_hidden==True时输入,初始隐藏状态[1,N,num_output]

-

INPUT

c_0

float16,float32

FALSE

expose_hidden==True时输入,初始cell状态 [1,N,num_output]

-

INPUT

w_x_static

float16

FALSE

x_static权重,维度为[4×num_output,input_size]; 接口当前保留

-

OUTPUT

h

float16,float32

TRUE

输出的tensor (T×N×num_output)

-

OUTPUT

h_t

float16,float32

FALSE

最后timestep的隐藏状态 (1×N×num_output)

-

OUTPUT

c_t

float16,float32

FALSE

最后timestep的cell状态 (1×N×num_output)

-

ATTR

num_output

uint

TRUE

输出特征数,必须大于0

必须大于0

ATTR

expose_hidden

bool

FALSE

是否有初始隐藏状态和cell初始状态,默认为False

-

ArgMax

INPUT

x

fp32,fp16

TRUE

输入的tensor

-

OUTPUT

indices

int32

FALSE

输出的最大值的索引

-

OUTPUT

values

fp32,fp16

FALSE

输出的tensor,包含最大值索引或最大值

-

ATTR

axis

int

FALSE

指定在输入tensor做削减的轴,如果不提供此参数,则每个batch求topk

-

ATTR

out_max_val

bool

FALSE

是否需要输出最大值。

  • 如果是True,且有2个TOP,则输出最大值和索引:
    layer {
      name: "argmax"
      type: "ArgMax"
      bottom: "data"
      top: "indices"
      top: "values"
      argmax_param {
        out_max_val: True
        top_k: 1
      }
  • 如果是True,且有1个TOP,则输出最大值:
    layer {
      name: "argmax"
      type: "ArgMax"
      bottom: "data"
      top: "values"
      argmax_param {
        out_max_val: True
        top_k: 1
        axis: 1
      }
    }
  • 如果是False,则输出索引:
    layer {
      name: "argmax"
      type: "ArgMax"
      bottom: "data"
      top: "indices"
      argmax_param {
        out_max_val: False
        top_k: 1
        axis: 1
      }
    }

-

ATTR

topk

int

FALSE

默认是1,表示每个axis轴中前topk个数(取值大于等于1),其取值范围必须在[1,x.shape(axis)],对应于caffe中的top_k

当前只支持1

RNN

INPUT

x

fp16

TRUE

时间变化数据x,(T×N×...)

T最大支持256

INPUT

cont

fp16

TRUE

序列连续性标记cont,(T×N)

T最大支持256

OPTIONAL_INPUT

x_static

fp16

FALSE

时间不变的静态数据xstatic,(N×...)

-

OPTIONAL_INPUT

h_0

fp32,fp16

FALSE

初始隐藏状态 (1×N×num_output)

-

INPUT

w_xh

fp16

TRUE

xh权重,维度为[input_size,num_output]

-

INPUT

bias_h

fp32,fp16

TRUE

偏置,维度为[num_output,]

-

INPUT

w_sh

fp16

FALSE

sh权重,维度为[input_size,num_output]

-

INPUT

w_hh

fp16

TRUE

hh权重,维度为[num_output,num_output]

-

INPUT

w_ho

fp16

TRUE

ho权重,维度为[num_output,num_output]

-

INPUT

bias_o

fp32,fp16

TRUE

偏置,维度为[num_output,]

-

OUTPUT

o

fp32,fp16

TRUE

输出的tensor (T×N×num_output)

-

OUTPUT

h_t

fp32,fp16

TRUE

最后timestep的隐藏状态 (1×N×num_output)

-

ATTR

expose_hidden

bool

FALSE

是否暴露隐藏状态,默认false

-

ATTR

num_output

int

FALSE

输出特征数,如果为0,则在shape中取值

-

分享:

    相关文档

    相关产品

close