- 生成Inference Graph的PB文件
- python export_inference_graph.py --alsologtostderr
- --model_name=alexnet_v2 --dataset_name=flowers --dataset_dir=${DATASET_DIR}
- --output_file=alexnet_v2_inf_graph.pb
- 结合CheckPoint文件和Inference GraphPB文件,生成Freeze Graph的PB文件
- python freeze_graph.py --input_graph=alexnet_v2_inf_graph.pb
- --input_checkpoint= ${TRAIN_DIR}/model.ckpt-36618 --input_binary=true
- --output_graph=frozen_alexnet_v2.pb --output_node_names=alexnet_v2/fc8/squeezed
- 对Freeze Graph的PB文件进行数据量化处理,削减模型文件的大年夜小,生成的quantized_alexnet_v2_graph.pb为智能终端中应用的模型文件
- bazel-bin/tensorflow/tools/graph_transforms/transform_graph
- --in_graph=frozen_alexnet_v2.pb --outputs="alexnet_v2/fc8/squeezed"
- --out_graph=quantized_alexnet_v2_graph.pb --transforms='add_default_attributes
- strip_unused_nodes(type=float, shape="1,224,224,3") remove_nodes(op=Identity,
- op=CheckNumerics) fold_constants(ignore_errors=true) fold_batch_norms
- fold_old_batch_norms quantize_weights quantize_nodes
- strip_unused_nodes sort_by_execution_order'
为了削减智能终端上模型文件的大年夜小,TensorFlow中常用的办法是对模型文件进行量化处理,本文对AlexNet CheckPoint文件进行Freeze和Quantized处理后的文件大年夜小变更如下图所示:

量化操作的重要思惟是在模型的Inference阶段采取等价的8位整数操作代替32位的浮点数操作,调换的操作包含:卷积操作、矩阵相乘、激活函数、池化操作等。量化节点的输入、输出为浮点数,然则内部运算会经由过程量化计算转换为8位整数(范围为0到255)的运算,浮点数和8位量化整数的对应关系示例如下图所示:


量化Relu操作的根本思惟如下图所示:

TensorFlow Android应用开辟情况构建
在Android体系上应用TensorFlow模型做Inference依附于两个文件libtensorflow_inference.so和libandroid_tensorflow_inference_java.jar。这两个文件可以经由过程下载TensorFlow源代码后,采取bazel编译出来,如下所示:
- 下载TensorFlow源代码git clone –recurse-submodules https://github.com/tensorflow/tensorflow.git
- 下载安装Android NDK
- 下载安装Android SDK
- 设备tensorflow/WORKSPACE中android开辟对象路径
- android_sdk_repository(name = "androidsdk", api_level = 23, build_tools_version = "25.0.2", path = "/opt/android",)
- android_ndk_repository(name=
推荐阅读
【沙龙】51CTO诚邀您9月23号和多位技巧大年夜咖一路聊智能CDN的优化之路,抓紧时光哦!对于我小我,我更爱好一种延续性的解释,微办事架构 ≈ 模块化开辟 + 分布式计算。不管微办事架构的定义怎么>>>详细阅读
本文标题:深度学习利器:TensorFlow在智能终端中的应用
地址:http://www.17bianji.com/lsqh/37558.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示