Tensorflow算子边界
序号 |
Python API |
C++ API |
边界 |
---|---|---|---|
1 |
tf.nn.avg_pool |
AvgPool Type:Pooling |
【参数】
global pool模式只支持下列场景 1) outputH==1 && outputW==1 && kernelH>=inputH && kernelW>=inputW 2) inputH*inputW<=10000 【输出】 1个tensor,数据类型与value相同 【量化工具支持】 是 |
2 |
tf.math.reduce_mean |
Mean |
【参数】 参数同AvgPool算子的参数 【约束】 Mean适配AvgPool,约束条件:
1个tensor,数据类型与value相同 【是否支持量化推理】 是 |
3 |
tf.nn.max_pool |
MaxPool |
同tf.nn.avg_pool |
4 |
tf.nn.conv2d |
Conv2D |
【参数】
数据类型:float32
【量化工具支持】 是 |
5 |
tf.concat |
Concat |
【参数】
【量化工具支持】 是 |
6 |
tf.matmul |
MatMul |
【参数】
【量化工具支持】 否 |
7 |
tf.nn.fused_batch_norm |
FusedBatchNorm |
【参数】
【量化工具支持】 否 |
8 |
tf.abs |
Abs |
【参数】
【量化工具支持】 是 |
9 |
tf.image.resize_nearest_neighbor |
ResizeNearestNeighbor |
【参数】
【量化工具支持】 否 |
10 |
tf.image.resize_bilinear |
ResizeBilinear |
【参数】
【量化工具支持】 否 |
11 |
tf.cast |
Cast |
【输入】
【量化工具支持】 无需支持 |
12 |
tf.nn.depthwise_conv2d |
DepthwiseConv2dNative |
【参数】
(W+15)/16*16)*filter.W*32 <= 32*1024,其中W是算子输入的W,filter.W是filter的W。 【输出】 4维tensor,形状与data_format一致,例如,对于NHWC格式,形状是[batch, out_height, out_width, in_channels * channel_multiplier] 【量化工具支持】 是 |
13 |
tf.reshape |
Reshape |
【参数】
【量化工具支持】 是 |
14 |
tf.squeeze |
Squeeze |
【参数】
【量化工具支持】 是 |
15 |
tf.expand_dims |
ExpandDims |
【参数】
【量化工具支持】 是 |
16 |
tf.greater |
Greater |
【输入】 2 输入
【量化工具支持】 无需支持 |
17 |
tf.nn.relu |
Relu |
【参数】
【量化工具支持】 是 |
18 |
tf.nn.relu6 |
Relu6 |
【参数】
【量化工具支持】 是 |
19 |
tf.nn.leaky_relu |
/ |
【参数】
【量化工具支持】 是 |
20 |
tf.exp |
exp |
【参数】
【约束】 无限制 【输出】 1个tensor,类型同x 【量化工具支持】 否 |
21 |
tf.nn.conv2d_transpose |
Conv2DBackpropInput |
【输入】
【参数】
【约束】
1、a = ALIGN(filter_num,16) * ALIGN(filter_c,16) * filter_h * filter_w * 2 ; 如果ALIGN(filter_c,16)%32 = 0,a = a/2; 2、conv_input_width=(反卷积输入w - 1) * strideW + 1; 3、b = (conv_input_width) * filter_h * ALIGN(filter_num,16) * 2 * 2; 4、a + b <= 1024*1024。 【输出】 1个tensor,类型同value 【量化工具支持】 是 |
22 |
tf.sigmoid |
Sigmoid |
【参数】
【量化工具支持】 是 |
23 |
tf.add |
Add |
【参数】
【约束】 支持两组输入的维度不一致,进行广播操作(广播即维度补齐), 目前支持以下几种广播场景: NHWC+ NHWC, NHWC+scalar 或者NHWC +1 1 1 1, 或者NHWC+W 和HWC+W 和HW+W(备注, W维度做广播), 或者NCHW + NH1C 和HWC + H1C 和HW + H1, 还有HWC + 1 WC(备注,H维度做广播); 说明:两个tensor的输入顺序可以互换。 【输出】 1个tensor,类型同y 【量化工具支持】 是 |
24 |
tf.add_n |
- |
tf.add_n算子内部调用Eltwise算子实现所有输入tensor按元素相加,关于输入、约束、属性等说明,请参考Caffe算子边界中Eltwise算子。 |
25 |
tf.multiply |
Multiply Type:Mul |
【参数】
【约束】 支持两组输入的维度不一致,进行广播操作(广播即维度补齐), 目前支持以下几种广播场景: NHWC+ NHWC, NHWC+scalar 或者NHWC +1 1 1 1, 或者NHWC+W 和HWC+W 和HW+W(备注, W维度做广播), 或者NCHW + NH1C 和HWC + H1C 和HW + H1, 还有HWC + 1 WC(备注,H维度做广播); 说明:两个tensor的输入顺序可以互换。 【输出】 1个tensor 【量化工具支持】 是 |
26 |
tf.subtract |
Subtract Type:Sub |
【参数】
【约束】 支持两组输入的维度不一致,进行广播操作(广播即维度补齐), 目前支持以下几种广播场景: NHWC+ NHWC, NHWC+scalar 或者NHWC +1 1 1 1, 或者NHWC+W 和HWC+W 和HW+W(备注, W维度做广播), 或者NCHW + NH1C 和HWC + H1C 和HW + H1, 还有HWC + 1 WC(备注,H维度做广播); 说明:两个tensor的输入顺序可以互换。 【输出】 1个tensor 【量化工具支持】 是 |
27 |
tf.nn.bias_add |
BiasAdd |
【参数】
【量化工具支持】 是 |
28 |
tf.nn.lrn |
LRN |
【参数】
【量化工具支持】 是 |
29 |
tf.nn.elu |
Elu |
【参数】
【量化工具支持】 否 |
30 |
tf.rsqrt |
Rsqrt |
【参数】
【量化工具支持】 是 |
31 |
tf.log |
Log |
【参数】
【约束】 无限制 【输出】 输出tensor,类型同x 【量化工具支持】 否 |
32 |
tf.tanh |
Tanh |
【参数】
【量化工具支持】 是 |
33 |
tf.slice |
Slice |
【参数】
【量化工具支持】 是 |
34 |
tf.split |
Split |
【参数】
【约束】 无限制 【输出】 List,包含split 后的各Tensor 【量化工具支持】 是 |
35 |
tf.nn.softplus |
Softplus |
【参数】
【约束】 无限制 【输出】 输出Tensor,数据类型与features相同 【量化工具支持】 否 |
36 |
tf.nn.softsign |
Softsign |
【参数】
【约束】 无限制 【输出】 输出Tensor,数据类型与features相同 【量化工具支持】 否 |
37 |
tf.pad |
Pad/MirrorPad/ PadV2 |
【参数】
或"SYMMETRIC"
标量,数据类型与tensor相同 【约束】 CONSTANT模式时,0=<PAD<=128,0<W<=3000, 【输出】 输出Tensor,数据类型与tensor相同 【量化工具支持】 是 |
38 |
tf.fake_quant_with_min_max_vars |
FakeQuantWithMinMaxVars |
【参数】
【约束】 -65504<=min<=65504,-65504<=max<=65504。 【输出】 输出Tensor,数据类型:`float32` 【量化工具支持】 否 |
39 |
tf.reduce_max |
Max |
【参数】
`int64`,`int32`,`uint8`, `uint16`,`int16`,`int8`
【约束】
输出reduce 后的Tensor,数据类型同input_tensor 【量化工具支持】 否 |
40 |
tf.strided_slice |
StridedSlice |
【参数】
【约束】 strides不允许为0 【输出】 输出Tensor,数据类型同input_ 【量化工具支持】 否 |
41 |
tf.reverse |
Reverse |
【参数】
【约束】 无限制 【输出】 1个Tensor,数据类型同tensor 【量化工具支持】 否 |
42 |
tf.realdiv |
RealDiv |
【参数】
【约束】 无限制 【输出】 输出Tensor,数据类型同x 【量化工具支持】 是 |
43 |
tf.stack |
Stack |
【参数】
【约束】 无限制 【输出】 堆叠后的tensor,类型同values 属性T、N和axis必须存在 【量化工具支持】 否 |
44 |
tf.transpose |
Transpose |
【参数】
【量化工具支持】 是 |
45 |
tf.space_to_batch_nd |
SpaceToBatchND |
【参数】
【量化工具支持】 否 |
46 |
tf.batch_to_space_nd |
BatchToSpaceND |
【参数】
【量化工具支持】 否 |
47 |
tf.extract_image_patches |
ExtractImagePatches |
【参数】
1个Tensor,与images具有相同的类型 【量化工具支持】 否 |
48 |
tf.floormod |
FloorMod |
【参数】
由于支持广播broadcast,对比x和y的shape,在同一纬度上,dim[x]只能相同或者一方为1或者一方缺失。 【输出】 1个Tensor,与x具有相同的类型 【量化工具支持】 否 |
49 |
tf.nn.softmax |
Softmax |
【参数】
根据分类的轴不同,计算边界分别为: axis=1时,C<=((256*1024/4)-8*1024-256)/2; axis=0时,N<=(56*1024-256)/2; axis=2时,W=1, 0<H<(1024*1024/32); axis=3时,0<W<(1024*1024/32)
【量化工具支持】 是 |
50 |
tf.math.pow |
Power |
【参数】
power!=1 scale*x+shift>0。 【输出】 1个 Tensor 【量化工具支持】 是 |
51 |
tf.nn.leaky_relu |
LeakyRelu |
【参数】
【量化工具支持】 是 |
52 |
tf.placeholder |
- |
【参数】
【量化工具支持】 否 |
53 |
tf.shape |
Shape |
【参数】
1个Tensor,输出数据类型为out_type 【量化工具支持】 无需支持 |
54 |
tf.math.argmax |
ArgMax |
【参数】
`uint16`, `int32`,`int64`,`float32`
【量化工具支持】 否 |
55 |
tf.gather |
Gather GatherV2 |
【参数】
【量化工具支持】 否 |
56 |
tf.gather_nd |
GatherNd |
【参数】
【量化工具支持】 是 |
57 |
tf.math.floordiv |
FloorDiv |
【参数】
【量化工具支持】 否 |
58 |
tf.range |
Range |
【参数】
【量化工具支持】 否 |
59 |
tf.tile |
Tile |
【参数】
`int8`,`uint8`,`int16`, `uint16`, `int32`,`int64`,`float32`
【约束】 无限制 【输出】 1个Tensor 【量化工具支持】 是 |
60 |
tf.size |
Size |
【参数】
【约束】 无限制 【输出】 1个Tensor,类型由out_type指定 【量化工具支持】 否 |
61 |
tf.fill |
Fill |
【参数】
数据类型:`int32`,
【约束】 支持Constant、GivenTensor、Range、Diagonal、Gaussian、MSRA、Uniform、UniformInt、UniqueUniform、XavierFill这些填充模式,在Uniform填充、UniformInt填充、UniqueUniform填充、xavier填充时,生成的数值区间最大范围介于[min,max)之间 【输出】 1个Tensor,类型同value数据类型 【量化工具支持】 否 |
62 |
tf.concat |
Concat |
【参数】
【约束】
1个Tensor 【量化工具支持】 是 |
63 |
tf.reverse |
Reverse |
【参数】
【约束】 无限制 【输出】 1个Tensor,数据类型同tensor 【量化工具支持】 否 |
64 |
tf.reduce_sum |
sum |
【参数】
【约束】 无约束 【输出】 输出Tensor,数据类型同tensor 【量化工具支持】 否 |
65 |
tf. math.maximum |
Maximum |
【参数】
【约束】 由于支持广播broadcast,对比x和y的shape,在同一纬度上,dim[x]只能相同或者一方为1或者一方缺失 【输出】 输出Tensor,返回值(x > y ? x : y) 数据类型同x 【量化工具支持】 否 |
66 |
tf. math.minimum |
Minimum |
【参数】
【约束】 广播场景只支持下面两种: NHWC+scaler,NHWC+NHWC 【输出】 输出Tensor,返回值(x < y ? x : y) 数据类型同x 【量化工具支持】 否 |
67 |
tf.clip_by_value |
ClipByValue |
【参数】
【约束】 min值要小于或者等于max值 【输出】 输出Tensor,返回值范围【clip_value_min。clip_value_max】 【量化工具支持】 否 |
68 |
tf.math.logical_not |
LogicalNot |
【参数】
【约束】 无限制 【输出】 输出Tensor,数据类型bool 【量化工具支持】 否 |
69 |
tf.math.logical_and |
LogicalAnd |
【参数】
输出Tensor,数据类型bool 【量化工具支持】 否 |
70 |
tf.equal |
Equal |
【参数】
【量化工具支持】 否 |
71 |
tf.square |
Square |
【参数】
【约束】 无限制 【输出】 输出Tensor,数据类型同x 【量化工具支持】 否 |
72 |
tf.image.crop_and_resize |
CropAndResize |
【参数】
`int8`, `int32`,`int64`, shape: `[num_boxes, 4]`
【约束】 无限制 【输出】
【量化工具支持】 否 |
73 |
tf.math.top_k |
TopKV2 |
【参数】
【约束】 K一定要以常量传入 【输出】
【量化工具支持】 否 |
74 |
tf.invert_permutation |
InvertPermutation |
【参数】
【约束】 无限制 【输出】 Tensor,数据类型同x 【量化工具支持】 否 |
75 |
tf.multinomial |
Multinomial |
【参数】
【约束】 seed为0时产生随机数是动态的 输出数据行数等于输出数据的行,输出数据的列数等num_samples 【输出】
【量化工具支持】 否 |
76 |
tf.reverse_sequence |
ReverseSequence |
【参数】
【约束】
【量化工具支持】 否 |
77 |
tf.math.reciprocal |
Reciprocal |
【参数】
【约束】 不支持输入数据中包含0 【输出】 Tensor,数据类型同x 【量化工具支持】 否 |
78 |
tf.nn.selu |
Selu |
【参数】
【约束】 无约束 【输出】 Tensor,数据类型同features 【量化工具支持】 否 |
79 |
tf.math.acosh |
Acosh |
【参数】
【约束】 无约束 【输出】 Tensor,数据类型同x 【量化工具支持】 否 |
80 |
tf.math.asinh |
Asinh |
【参数】
【约束】 无约束 【输出】 Tensor,数据类型同x 【量化工具支持】 否 |
81 |
tf.math.reduce_prod |
Prod |
【参数】
【约束】 无约束 【输出】 Tensor,raduce 后的Tensor 【量化工具支持】 否 |
82 |
tf.math.sqrt |
Sqrt |
【参数】
【约束】 无约束 【输出】 Tensor,数据类型同x 【量化工具支持】 否 |
83 |
tf.math.reduce_all |
All |
【参数】
【约束】 无约束 【输出】 Tensor,数据类型同input_tensor 【量化工具支持】 否 |
84 |
tf.nn.l2_normalize |
L2Normalize |
【参数】
sqrt(epsilon)作为除数.
【约束】 H*W*2 < 256*1024/4; 【输出】 Tensor,数据类型同x 【量化工具支持】 否 |
85 |
tf.keras.backend.hard_sigmoid |
Hardsigmoid |
【参数】
【约束】 无限制 【输出】 输出Tensor,返回值:`0.` if `x < -2.5`, `1.` if `x > 2.5`. 当 `-2.5 <= x <= 2.5`, 返回 `0.2 * x + 0.5`. 【量化工具支持】 否 |
86 |
tf.keras.layers.ThresholdedReLU |
ThresholdedReLU |
【参数】 theta: 标量>=0,数据类型:;`float32` 【约束】 无限制 【输出】 Tensor 【量化工具支持】 否 |
87 |
tf.math.acos |
Acos |
【参数】
【约束】 输入数据范围(-1<=x<=1),输出数据范围(0<=y<=π) 【输出】 Tensor,数据类型同x 【量化工具支持】 否 |
88 |
tf.math.atan |
Arctan |
【参数】
【约束】 输入数据范围(-65504<=x<=65504),输出数据范围(-π/2<y<π/2)。 【输出】 Tensor,数据类型同x 【量化工具支持】 否 |
89 |
tf.math.asin |
Asin |
【参数】
【约束】 输入数据范围(-1<=x<=1),输出数据范围(-π/2<=y<=π/2)。 【输出】 Tensor,数据类型同x 【量化工具支持】 否 |
90 |
tf.math.atanh |
Atanh |
【参数】
【约束】 输入数据范围:x∈(-1,1) 【输出】 Tensor,数据类型同x 【量化工具支持】 否 |
91 |
tf.math.tan |
Tan |
【参数】
【约束】 无限制 【输出】 Tensor,数据类型同x 【量化工具支持】 否 |
92 |
tf.math.logical_or |
LogicalOr |
【参数】
【约束】 由于支持广播broadcast,对比x和y的shape,在同一纬度上右对齐的情况下,xdim[i]和ydim[i]只能相同或者一方为1或者一方缺失。 【输出】 Tensor,数据类型: `bool` 【量化工具支持】 否 |
93 |
tf.math.reduce_min |
ReduceMin |
【参数】
【约束】
Tensor,数据类型同input_tensor 【量化工具支持】 否 |
94 |
tf.math.negative |
Neg |
【参数】
【约束】 输入数据范围(-65504<=x<=65504),输出数据范围(-65504<=y<=65504) 【输出】 Tensor,输出= -x 【量化工具支持】 否 |
95 |
tf.math.greater_equal |
Greaterequal |
【参数】
`int64`,`int32`,`uint8`,`uint16`,`int8`,`int16`,
【约束】 输入数据范围(-65504<=x<=65504) 【输出】 Tensor,输出类型bool 【量化工具支持】 否 |
96 |
tf.space_to_depth |
SpaceToDepth |
【参数】
【约束】 blockSize的大小必须大于等于1,且能被H和W整除 【输出】 Tensor,输出类型input 【量化工具支持】 否 |
97 |
tf.depth_to_space |
DepthToSpace |
【参数】
`int64`,`int32`,`uint8`,`int8`,
【约束】 blockSize必须大于等于1,且blockSize* blockSize必须能被C整除 【输出】 Tensor,输出类型input 【量化工具支持】 否 |
98 |
tf.math.round |
Round |
【参数】
【约束】 无限制 【输出】 Tensor,输出类型同x,输出shape 同x 【量化工具支持】 否 |
99 |
tf.math.rint |
Rint |
【参数】
`uint8`,`int8`
【约束】 无限制 【输出】 Tensor,输出类型同x,输出shape 同x 【量化工具支持】 否 |
100 |
tf.math.less |
Less |
【参数】
`int64`,`int32`,`uint8`,`uint16`,`int8`,`int16`,
【约束】 无限制 【输出】 Tensor,输出类型bool 【量化工具支持】 否 |
101 |
tf.math.sinh |
Sinh |
【参数】
【约束】 无限制 【输出】 Tensor,输出类型同x 【量化工具支持】 否 |
102 |
tf.math.cosh |
Cosh |
【参数】
【约束】 无限制 【输出】 Tensor,输出类型同x 【量化工具支持】 否 |
103 |
tf.math.squared_difference |
Squared_difference |
【参数】
【约束】 广播模式只支持下列场景: 第1个的tensor_format是NCHW,另1个的dim{}可以是[1,1,1,1],[N,C,H,W],[N,1,H,W],[1,C,H,W],[N,C,1,1],[1,C,1,1],[1,1,H,W],[N,1,1,1]这几种情况。 【输出】 Tensor,数据类型同x 【量化工具支持】 否 |