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删除不需要的节点

导出过程将删除许多不需要进行推理的节点,但不幸的是会留下一些剩余的节点。应该手动删除的节点:

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

TensorFlow Frontend前端的更多相关文章

  1. front-end 前端发展学习路线参考图

    front-end 前端发展学习路线参考图 学习的路程还很长~!

  2. 大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app

    大前端技术系列:TWA技术+TensorFlow.js => 集成原生和AI功能的app ( 本文内容为melodyWxy原作,git地址:https://github.com/melodyWx ...

  3. Magento2.X 前端&综合 简要

    主题是Magento的应用程序,它提供了整个应用的前端部分: 主题旨在覆盖或自定义视图层资源,通过模块和库最初提供.主题由不同的供应商(前端开发人员)实施,并拟分配为类似于其他组件的Magento系统 ...

  4. Vue(三)之前端路由

    01-前端路由 1.前端路由的实现原理 vue+vue-router 主要来做单页面应用(Single Page Application) 为什么我们要做单页面应用? (1)传统的开发方式 url改变 ...

  5. windows10(64位)Anaconda3+Python3.6搭建Tensorflow(cpu版本)及keras

    转自:windows10(64位)Anaconda3+Python3.6搭建Tensorflow(cpu版本)及keras 1.本来电脑安装的是anaconda3 5.3.1,但安装的python版本 ...

  6. 前端路由vue-router介绍

    一.前端路由vue-router介绍 Vue-Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌.包含的功能有: 嵌套的路由/视图表 模 ...

  7. TensorFlow基础剖析

    TensorFlow基础剖析 一.概述 TensorFlow 是一个使用数据流图 (Dataflow Graph) 表达数值计算的开源软件库.它使 用节点表示抽象的数学计算,并使用 OP 表达计算的逻 ...

  8. TVM 架构设计

    TVM 架构设计 本文面向希望了解TVM体系结构和/或积极参与项目开发的开发人员. 主要内容如下: 示例编译流程概述了TVM将模型的高级概念转换为可部署模块的步骤. 逻辑架构组件部分描述逻辑组件.针对 ...

  9. Magento学习第一课——目录结构介绍

    Magento学习第一课--目录结构介绍 一.Magento为何强大 Magento是在Zend框架基础上建立起来的,这点保证了代码的安全性及稳定性.选择Zend的原因有很多,但是最基本的是因为zen ...

随机推荐

  1. 【cypress】6. cypress的默认文件结构介绍

    通过之前的一些介绍,已经大概其明白cypress是个啥,但是具体使用的细节点还有很多,需要一步步的去学习. 在安装好cypress之后,会生成一个默认项目,这个项目结构里的各个文件夹是干嘛使的呢? 一 ...

  2. shopify 学习链接整理

    shopify shopify packagist https://help.shopify.com/zh-CN/manual/apps/apps-by-shopify/script-editor/s ...

  3. 【find】linux文件搜索命令find/locate

    参考链接:https://mp.weixin.qq.com/s/y8LeZ0-9D56TWsD-ivPaHQ 一.按文件名称查找 按照文件名称查找是 find 最常见的用法,需要注意的是,搜索的文件名 ...

  4. 发现个利器--FastAPI(Py3.6+版本)

    from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"H ...

  5. 【MySQL】Mysql避免索引失效的情况有哪些

    1.使用多列作为索引,则需要遵循最左前缀匹配原则(查询从索引的最左前列开始并且不跳过索引中的列) 2.不再索引列上做任何操作,例如(计算,函数,(自动 or 手动的类型转换)),会导致索引失效而转向全 ...

  6. hdu2158 最短区间版大家来找碴

    题意:                  最短区间版大家来找碴 Problem Description 给定一个序列,有N个整数,数值范围为[0,N).有M个询问,每次询问给定Q个整数,可能出现重复值 ...

  7. hdu4291 暴力循环节+矩阵快速幂

    题意:       给你一个关系式,x[n] = 3*x[n-1] + x[n-2],求x(x(x[n]))%1000000007. 思路:       做这个题目要明确一点,就是对于取余操作大多数时 ...

  8. Python脚本破解Linux口令(crypt模块)

    环境 Kali Linux ,python版本2.7.13 . 我们利用Linux系统中的 crypt 模块模拟了Linux系统中用户密码的加密,在Windows中是不存在这个库的. 在Linux系统 ...

  9. [CTF]ROT5/13/18/47位移密码

    [CTF]ROT5/13/18/47位移密码 ---------------转换网站 https://www.qqxiuzi.cn/bianma/ROT5-13-18-47.php ROT5:只对数字 ...

  10. 【maven】下载阿里云上没有的依赖

    问题截图 去maven仓库找了,也没有找到这个项目(github中拉去的项目)中的,然后以为这个仓库没有,不知道要去哪里下载. <dependency> <groupId>or ...