ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TensorFlow Frontend前端

2021-03-14 14:02:10  阅读:32  来源: 互联网

标签:sort Frontend graph 前端 attribute TensorFlow execution def


TensorFlow Frontend前端
TensorFlow前端有助于将TensorFlow模型导入TVM。
Supported versions:
• 1.12 and below
Tested models:
• Inception (V1/V2/V3/V4)
• Resnet (All)
• Mobilenet (V1/V2 All)
• Vgg (16/19)
• BERT (Base/3-layer)
Preparing a Model for Inference准备推理模型
Remove Unneeded Nodes删除不需要的节点
导出过程将删除许多不需要进行推理的节点,但不幸的是会留下一些剩余的节点。应该手动删除的节点:
• Dropout, including Dropout and DropoutWrapper
• Assert
Convert None Dimensions to Constants将无尺寸Dimensions转换为常数
TVM对动态张量形状的支持最少。None应将尺寸替换为常量。例如,模型可以接受带有shape的输入(None,20)。这应转换为的形状(1,20)。应该相应地修改模型,以确保这些形状在整个图形中都匹配。
Export
TensorFlow前端需要冻结的protobuf(.pb)或保存的模型作为输入。不支持检查点(.ckpt)。TensorFlow前端所需的graphdef,可以从活动会话中提取,可以使用TFParser帮助器类提取。
应该导出该模型并进行许多转换,以准备模型进行推理。设置add_shapes=True也很重要,因为这会将每个节点的输出形状嵌入到图形中。这是一个给定会话将模型导出为protobuf的函数:
import tensorflow as tf
from tensorflow.tools.graph_transforms import TransformGraph

def export_pb(session):
with tf.gfile.GFile(“myexportedmodel.pb”, “wb”) as f:
inputs = [“myinput1”, “myinput2”] # replace with your input names
outputs = [“myoutput1”] # replace with your output names
graph_def = session.graph.as_graph_def(add_shapes=True)
graph_def = tf.graph.util.convert_variables_to_constants(session, graph_def, outputs)
graph_def = TransformGraph(
graph_def,
inputs,
outputs,
[
“remove_nodes(op=Identity, op=CheckNumerics, op=StopGradient)”,
“sort_by_execution_order”, # sort by execution order after each transform to ensure correct node ordering
“remove_attribute(attribute_name=_XlaSeparateCompiledGradients)”,
“remove_attribute(attribute_name=_XlaCompile)”,
“remove_attribute(attribute_name=_XlaScope)”,
“sort_by_execution_order”,
“remove_device”,
“sort_by_execution_order”,
“fold_batch_norms”,
“sort_by_execution_order”,
“fold_old_batch_norms”,
“sort_by_execution_order”
]
)
f.write(graph_def.SerializeToString())
Another method is to export and freeze the graph.
Import the Model
Explicit Shape:
确保可以在整个图形中知道形状,将shape参数传递给from_tensorflow。该词典将输入名称映射到输入形状。
Data Layout
大多数TensorFlow模型以NHWC布局发布。NCHW布局通常提供更好的性能,尤其是在GPU上。该TensorFlow前端可以通过传递参数自动转换模型的数据布局layout='NCHW'from_tensorflow
Best Practices
• 使用静态张量形状代替动态形状(删除None尺寸)。
TensorArray目前尚不支持使用静态RNN代替动态RNN。
Supported Ops
• Abs
• Add
• AddN
• All
• Any
• ArgMax
• ArgMin
• AvgPool
• BatchMatMul
• BatchMatMulV2
• BatchNormWithGlobalNormalization
• BatchToSpaceND
• BiasAdd
• BroadcastTo
• Cast
• Ceil
• CheckNumerics
• ClipByValue
• Concat
• ConcatV2
• Conv2D
• Cos
• Tan
• CropAndResize
• DecodeJpeg
• DepthwiseConv2dNative
• DepthToSpace
• Dilation2D
• Equal
• Elu
• Enter
• Erf
• Exit
• Exp
• ExpandDims
• Fill
• Floor
• FloorDiv
• FloorMod
• FusedBatchNorm
• FusedBatchNormV2
• Gather
• GatherNd
• GatherV2
• Greater
• GreaterEqual
• Identity
• IsFinite
• IsInf
• IsNan
• LeakyRelu
• LeftShift
• Less
• LessEqual
• Log
• Log1p
• LoopCond
• LogicalAnd
• LogicalOr
• LogicalNot
• LogSoftmax
• LRN
• LSTMBlockCell
• MatMul
• Max
• MaxPool
• Maximum
• Mean
• Merge
• Min
• Minimum
• MirrorPad
• Mod
• Mul
• Neg
• NextIteration
• NotEqual
• OneHot
• Pack
• Pad
• PadV2
• Pow
• Prod
• Range
• Rank
• RealDiv
• Relu
• Relu6
• Reshape
• ResizeBilinear
• ResizeBicubic
• ResizeNearestNeighbor
• ReverseV2
• RightShift
• Round
• Rsqrt
• Select
• Selu
• Shape
• Sigmoid
• Sign
• Sin
• Size
• Slice
• Softmax
• Softplus
• SpaceToBatchND
• SpaceToDepth,
• Split
• SplitV
• Sqrt
• Square
• SquareDifference
• Squeeze
• StridedSlice
• Sub
• Sum
• Switch
• Tanh
• TensorArrayV3
• TensorArrayScatterV3
• TensorArrayGatherV3
• TensorArraySizeV3
• TensorArrayWriteV3
• TensorArrayReadV3
• TensorArraySplitV3
• TensorArrayConcatV3
• Tile
• TopKV2
• Transpose
• TruncateMod
• Unpack
• UnravelIndex
• Where
• ZerosLike

标签:sort,Frontend,graph,前端,attribute,TensorFlow,execution,def
来源: https://blog.csdn.net/wujianing_110117/article/details/114785641

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有