作家
登录

深度学习利器:TensorFlow在智能终端中的应用

作者: 来源: 2017-09-22 09:11:54 阅读 我要评论

 
  • --dataset_split_name=train  --model_name=alexnet_v2  
  •  --preprocessing_name=vgg  
    • 生成Inference Graph的PB文件
    1. python export_inference_graph.py  --alsologtostderr   
    2. --model_name=alexnet_v2  --dataset_name=flowers --dataset_dir=${DATASET_DIR}  
    3.  --output_file=alexnet_v2_inf_graph.pb  
    • 结合CheckPoint文件和Inference GraphPB文件,生成Freeze Graph的PB文件 
    1. python freeze_graph.py  --input_graph=alexnet_v2_inf_graph.pb  
    2. --input_checkpoint= ${TRAIN_DIR}/model.ckpt-36618  --input_binary=true  
    3. --output_graph=frozen_alexnet_v2.pb --output_node_names=alexnet_v2/fc8/squeezed 
    • 对Freeze Graph的PB文件进行数据量化处理,削减模型文件的大年夜小,生成的quantized_alexnet_v2_graph.pb为智能终端中应用的模型文件
    1. bazel-bin/tensorflow/tools/graph_transforms/transform_graph   
    2. --in_graph=frozen_alexnet_v2.pb  --outputs="alexnet_v2/fc8/squeezed"  
    3. --out_graph=quantized_alexnet_v2_graph.pb --transforms='add_default_attributes 
    4.  strip_unused_nodes(type=float, shape="1,224,224,3")  remove_nodes(op=Identity,  
    5. op=CheckNumerics) fold_constants(ignore_errors=true)  fold_batch_norms  
    6. fold_old_batch_norms quantize_weights quantize_nodes  
    7.  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开辟对象路径
    1. android_sdk_repository(name = "androidsdk", api_level = 23, build_tools_version = "25.0.2", path = "/opt/android",) 
    2. android_ndk_repository(name=

        推荐阅读

        从0开始的微服务架构:(一)重识微服务架构

      【沙龙】51CTO诚邀您9月23号和多位技巧大年夜咖一路聊智能CDN的优化之路,抓紧时光哦!对于我小我,我更爱好一种延续性的解释,微办事架构 ≈ 模块化开辟 + 分布式计算。不管微办事架构的定义怎么>>>详细阅读


      本文标题:深度学习利器:TensorFlow在智能终端中的应用

      地址:http://www.17bianji.com/lsqh/37558.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)