Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Models consisting only of layers included in this list can be converted.

Table of contents

...

Table of Contents
minLevel1
maxLevel4

Caffe

Support version (Caffe)

V1.0

Support Layer (Caffe)

Caffe Layer Type

Comments

Convolution

 

Deconvolution

 

Pooling - MAX, AVG

 

Crop

 

InnerProduct

 

LRN

 

BatchNormalization

 

ReLU

 

Leaky-ReLU

 

PReLU

 

ELU

 

Sigmoid

 

TanH

 

AbsVal

 

Bias

 

Scale

 

Power

 

Exp

 

Log

 

BNLL

 

Flatten

 

Reshape

 

Concat

 

Eltwise - SUM

 

Eltwise - MAX

 

Eltwise - PROD

 

Reduction - SUM

 

Reduction - MEAN

 

Reduction - ASUM

 

Reduction - SUMSQ

 

Softmax

 

Input

 

Split

Parser maps output to input

Slice

 

ArgMax

Only K=1 is supported.

Dropout

Parser maps output to input

Tensorflow

Support version (Tensorflow)

V1.10.1 ~ V1.15

Support Layer (Tensorflow)

TensorFlow Op Type

TensorFlow Function

Comments

MatMul, BatchMatMulV2

tf.linalg.matmul

tf.matmul

adjoint_a, adjoint_b, a_is_sparse, b_is_sparse not supported

AvgPool

tf.nn.avg_pool

 

MaxPool

tf.nn.max_pool

 

Conv2D

tf.nn.conv2d

Filter has to be constant

DepthwiseConv2dNative

tf.nn.depthwise_conv2d

 

Conv2DBackpropInput

tf.nn.conv2d_backprop_input

Assumptions:

  1. ignoring input_sizes tensor

  2. order of tensors

Conv2DBackpropFilter

tf.nn.conv2d_backprop_filter

Assumptions:

  1. ignoring input_sizes tensor

  2. order of tensors

LRN

tf.nn.local_response_normalization

 

Softmax

tf.nn.softmax

 

Reshape

tf.reshape

Pre- and Post- transpose ops are added in case reshape involves depth dim

Sigmoid

tf.sigmoid

 

Tanh

tf.nn.tanh

 

 

tf.nn.atrous_conv2d

Expands to SpaceToBatchND-> Conv2D -> BatchToSpaceND

SpaceToBatchND

tf.space_to_batch_nd

[SpaceToBatchND -> Conv2D -> BatchToSpaceND] works

BatchToSpaceND

tf.batch_to_space_nd

[SpaceToBatchND -> Conv2D -> BatchToSpaceND] works

Const

tf.constant

 

Placeholder

tf.placeholder

 

Max

tf.reduce_max

keepdims supported using transpose node

Min

tf.reduce_min

keepdims supported using transpose node

Sum

tf.reduce_sum

keepdims supported using transpose node

Prod

tf.reduce_prod

keepdims supported using transpose node

Mean

tf.reduce_mean

keepdims supported using transpose node

Squeeze

tf.squeeze

axis parameter not supported

BatchNorm

tf.nn.batch_normalization

 

FusedBatchNorm

tf.nn.fused_batch_norm

 

Relu

tf.nn.relu

 

Elu

tf.nn.elu

 

Relu6

tf.nn.relu6

 

LeakyRelu

tf.nn.leaky_relu

 

Concat

tf.concat

 

ConcatV2

tf.concatv2

 

Add

tf.add

 

BiasAdd

tf.nn.bias_add

 

AddN

tf.addn

 

Sub

tf.subtract

 

Abs

tf.abs

 

Neg

tf.negative

 

Ceil

tf.ceil

 

Floor

tf.floor

 

Exp

tf.exp

 

Log

tf.log

 

Reciprocal

tf.reciprocal

 

Pow

tf.pow

 

Mul

tf.multiply

 

Square

tf.square

 

Sqrt

tf.sqrt

 

Rsqrt

tf.rqrt

 

Div

tf.div

 

TrueDiv

tf.truediv

 

RealDiv

tf.realdiv

 

Divide

tf.divide

 

Maximum

tf.maximum

 

Minimum

tf.minimum

 

Pad, MirrorPad

tf.pad

Limited support.
VP can do zero replicate (CONSTANT with const value 0) or edge pixel replicate (SYMMETRIC with pad length 1). Data might not match in other modes.

Transpose

tf.transpose

conjugate = True not supported

ResizeBilinear

tf.image.resize_bilinear

 

ResizeNearestNeighbor

tf.image.resize_nearest_neighbor

align_corners = True not supported half_center_pixels = True not supported

Resamp

tf.contrib.resampler

 

Slice

tf.slice

begin and size dtype int64 not supported

StridedSlice

tf.strided_slice

  • ellipsis_mask and new_axis_mask not supported

  • begin and strides cannot have negative indices

Split, SplitV

tf.split

only "num_split" attr is supported

ArgMin

tf.argmin

 

ArgMax

tf.argmax

 

OneHot

tf.one_hot

 

SquaredDifference

tf.squared_difference

 

Pack

tf.stack

 

Unpack

tf.unstack

 

Range

tf.range

 

ClipByValue

tf.clip_by_value

 

ScatterND

tf.scatter_nd

Duplicate indices values will be overwritten to the last index value.

Gather

tf.gather

Only axis = 0 is supported

 

tf.nn.l2_normalize

Expands to math operators

TopKV2

tf.math.top_k

 

Cast

tf.dtypes.saturate_cast

tf.cast might fail.
Use only saturate cast

ZerosLike

tf.zeros_like

 

OnesLike

tf.ones_like

 

Tile

tf.tile

 

Softplus

tf.math.softplus

 

Identity

tf.identity

 

ExpandDims

tf.expand_dims

 

FakeQuantWithMinMaxArgs

tf.fake_quant_with_min_max_args

 

FakeQuantWithMinMaxVars

tf.fake_quant_with_min_max_vars

 

Shape

tf.Shape

 

CheckNumerics

tf.check_numerics

 

NoOp

tf.no_op

 

Assert

tf.Assert

 

Mish

 

 

Swish

 

 

Sign

tf.math.sign

 

Level Curve

Custom op

 

FloorMod

tf.math.floormod

Tensorflow Lite

Support version (Tensorflow Lite)

V1.10.1 ~

Support Layer (Tensorflow Lite)

 TFLite Op

TensorFlow API

Comments

ABS

tf.abs

 

ADD

tf.add

ARG_MAX

tf.argmax

ARG_MIN

tf.argmin

AVERAGE_POOL_2D

tf.nn.avg_pool

 

BATCH_MATMUL

tf.matmul

BATCH_TO_SPACE

tf.batch_to_space

SpaceToBatch ->Conv ->BatchToSpace

patterns are detected and fused into Conv primitive.

CAST

tf.identity

Optimized during conversion to protobuf

CONCATENATION

tf.concat

 

CONV_2D

tf.nn.conv2d

Filter has to be constant.

Use surgery with ConstantifyShapes to make it constant

DENSIFY

tf.Variable

Optimized during conversion to protobuf

DEPTHWISE_CONV_2D

tf.nn.depthwise_conv2d

 

DEPTH_TO_SPACE

tf.nn.depth_to_space

Evaluates to multiple reshape and transpose SGL nodes

DEQUANTIZE

tf.identity

Optimized during conversion to protobuf

DIV

tf.divide

 

EQUAL

tf.equal

EXP

tf.exp

 

EXPAND_DIMS

tf.expand_dims

Parser maps output to input

FAKE_QUANT

tf.quantization.fake_quant_with_min_max_vars

Parser maps output to input with quantization information captured.

FILL

tf.fill

Depends on fill value. Defaults to 0

FLOOR_DIV

tf.math.floordiv

Div followed by Floor

FLOOR_MOD

tf.math.floormod

Mod(x,y)=x-Floor(x*Rexiprocal(y))*y

FULLY_CONNECTED

tf.matmul

adjoint_a, adjoint_b, a_is_sparse, b_is_sparse not supported

GATHER

tf.gather

GATHER_ND

tf.gather_nd

GREATER

tf.greater

GREATER_EQUAL

tf.greater_equal

IDENTITY

tf.identity

Optimized during conversion to protobuf

LEAKY_RELU

tf.nn.leaky_relu

 

LESS

tf.less

LESS_EQUAL

tf.less_equal

LOG

tf.math.log

 

LOGICAL_AND

tf.logical_and

LOGICAL_NOT

tf.logical_not

LOGICAL_OR

tf.logical_or

LOGISTIC

tf.sigmoid

 

MAXIMUM

tf.maximum

 

MAX_POOL_2D

tf.nn.max_pool

 

MEAN

tf.reduce_mean

 

MINIMUM

tf.minimum

 

MUL

tf.multiply

 

NEG

tf.math.negative

 

PACK

tf.stack

 

PAD

tf.pad

 

PRELU

-

This op is exanded to Relu, Neg, Mul, Add in protobuf.

Parser groups them into Prelu SGL

QUANTIZE

tf.identity

Optimized during conversion to protobuf

RANGE

tf.range

Constant SGL node created

REDUCE_MAX

tf.reduce_max

 

REDUCE_MIN

tf.reduce_min

 

REDUCE_PROD

tf.reduce_prod

RELU

tf.nn.relu

 

RELU6

tf.nn.relu6

 

RESHAPE

tf.reshape

 

RESIZE_BILINEAR

tf.image.resize_bilinear

 

RESIZE_NEAREST_NEIGHBOR

tf.image.resize_nearest_neighbor

 

RSQRT

tf.math.rsqrt

Square Root followed by Reciprocal

SELECT

tf.where

SHAPE

tf.Shape

Shape values are computed in first pass of parser

SLICE

tf.slice

 

SOFTMAX

tf.nn.softmax

 

SPACE_TO_BATCH

tf.space_to_batch

SpaceToBatch -> Conv ->BatchToSpace

patterns are detected and fused into Conv primitive.

SPACE_TO_DEPTH

tf.nn.space_to_depth

SPLIT

tf.split

 

SPLIT_V

tf.split

 

SQRT

tf.sqrt

SQUARED_DIFFERENCE

tf.math.squared_difference

Sub followed by Mul

SQUEEZE

tf.squeeze

 

STRIDED_SLICE

tf.strided_slice

 

SUB

tf.subtract

 

SUM

tf.reduce_sum

 

TANH

tf.math.tanh

 

TILE

tf.tile

TOPK_V2

tf.math.top_k

TRANSPOSE

tf.transpose

 

TRANSPOSE_CONV

tf.nn.conv2d_transpose

Assumptions:

  1. ignoring input_sizes tensor

  2. order of tensors

UNPACK

tf.unstack

 

WHERE

tf.where

ZEROS_LIKE

tf.zeros_like

Fill const node with zeros

ONNX

Support version (ONNX)

V1.3.0 ~ V1.11.0

Support Layer (ONNX)

Operator

Operator Set

Comments

Add

1,6,7,13,14

 

Abs

1,6

 

And

1,7

BitVector data-format needs to be specified for inputs using layer-level sideband.

ArgMax

1,11,12,13

Since operator set 12, the 'select_last_index' attribute must be 0.

ArgMin

1,11,12,13

Since operator set 12, the 'select_last_index' attribute must be 0.

AveragePool

1,7,10,11

Supports up to 3 spatial dimensions.

BatchNormalization

1,6,7,9

 

Cast

1,6,9,13

Passthrough.

Ceil

1,6

 

Celu

12

 

Constant

1,9,11,12,13

'sparse_value' attribute is not supported.

*ConstantOfShape

9

All inputs must be constants.

Conv

1,11

All inputs except for 'X' must be constants. Supports up to 3 spatial dimensions.

ConvTranspose

1,11

All inputs except for 'X' must be constants. Supports up to 3 spatial dimensions.

Concat

1,4,11,13

 

Cos

7

Clip

1,6,11,12,13

 

CumSum

11,14

All inputs except for 'x' must be constants.

DepthToSpace

1,11,13

 

DequantizeLinear

10,13

All inputs except for 'x' must be constants.

Div

1,6,7,13,14

 

Dropout

1,6,7,10,12,13

Passthrough. Since operator set 12, the 'training_mode' input must evaluate to false.

Elu

1,6

 

Equal

1,7,11,13

 

Erf

9,13

 

Exp

1,6

 

Expand

8,13

 

Flatten

1,9,11,13

 

Floor

1,6

 

Gather

1,11,13

Negative index values will not be interpreted correctily for dynamic ‘indices’ input. Significant rank of gathered entries cannot exceed 3, i.e. if gathering 4-dimensional entries, the outermost dimension of each entry must have size 1.

GatherElements

11

'indices' input must be a constant.

GatherND

11,12,13

Negative index values will not be interpreted correctly for dynamic 'indices' input. Since operator set 12, the 'batch_dims' attribute must be 0.

Gemm

1,6,7,9,11,13

'C' input must be a constant.

GlobalAveragePool

1

 

GlobalMaxPool

1

 

Greater

1,7,9,13

 

GreaterOrEqual

12,16

 

HardSigmoid

1,6

 

HardSwish

14

Identity

1

Passthrough.

InstanceNormalization

1,6

 

LeakyRelu

1,6

 

Less

1,7,9,13

 

LessOrEqual

12,16

 

Log

1,6

 

LogSoftmax

1,11,13

LRN

1

 

MatMul

1,9

 

Max

1,6,8,12,13

 

MaxPool

1,8,10,11,12

 

Mean

1,6,8

 

Min

1,6,8,12,13

 

Mul

1,6,7

 

Neg

1,6

 

OneHot

9,11

All inputs except for 'indices' must be constants.

Pad

1,2,11,13

If the 'mode' attribute is 'constant', padding value must be 0. Since operator set 11, all inputs except for 'data' must be constants.

Pow

1,7,12,13,15

 

PRelu

1,6,7,9

 

QLinearConv

10

All inputs except for 'x' must be constants. Supports up to 3 spatial dimensions.

QLinearMatMul

10

All inputs except for 'a' and 'b' must be constants.

QuantizeLinear

10,13

All inputs except for 'x' must be constants.

RandomUniform

1

 

Reshape

1,5,13

Since operator set 5, the 'shape' input should be a constant.

Reciprocal

1,6

 

Relu

1,6,13,14

 

ReduceL1

1,11,13

 

ReduceL2

1,11,13

 

ReduceLogSumExp

1,11

 

ReduceMax

1,11,12,13

 

ReduceMean

1,11,13

 

ReduceMin

1,11,12,13

 

ReduceProd

1,11

 

ReduceSum

1,11,13

Since operator set 13, input tensor 'axes' must be constant.

Resize

10,11

All inputs except for 'x' must be constants.

Round

11

By default, halfs are rounded towards positive infinity. Rounding halfs to the nearest even integer is only supported in CV3.

ScatterElements

11

'indices' input must be a constant.

ScatterND

11

Selu

1,6

 

*Shape

1

'data' input must have constant shape.

Sigmoid

1,6

 

Sin

7

Slice

1,10,11,13

All inputs except for 'data' must be constants.

Softmax

1,11,13

 

Softplus

1

 

Split

1,2,11,13

All inputs except for 'input' must be constants.

Sqrt

1,6

 

Squeeze

1,11,13

Since operator set 13, the 'axes' input tensor must be a constant if it is specified.

Sub

1,6,7

 

Sum

1,6,8

 

Tanh

1,6

 

Tile

1,6

 

TopK

1,10,11

 

Transpose

1,13

 

Upsample

7,9

All inputs except for 'X' must be constants.

Unsqueeze

1,11,13

Since operator set 13, the 'axes' input tensor must be a constant if it is specified.

Where

9,16

...