美文网首页
bazel编译graph_transforms

bazel编译graph_transforms

作者: haoshengup | 来源:发表于2019-03-29 19:16 被阅读0次

一、安装bazel
  1、安装MSYS2 shell
  根据系统选择需要下载的版本,安装之后配置环境变量,例如:\msys64\usr\bin
  2、安装Microsoft Visual C++ Redistributable for Visual Studio 2015
  3、根据系统从GitHub下载bazel,例如:bazel-0.16.1-windows-x86_64.exe,下载后,改名为bazel.exe方便使用,并将所在位置添加到环境变量
  4、如果需要用到python,那么需要把python添加到环境变量;如果需要用到java,那么需要下载jdk,安装之后添加到环境变量

二、编译graph_transforms
1、从cmd打开tensorflow目录,输入以下指令编译:bazel build tensorflow/tools/graph_transforms:transform_graph,编译成功会显示:


2、编译的时候,有可能会出现各种问题,根据实验猜测可能的原因:bazel有bug,bazel和tensorflow的版本不匹配。
  (1)tf1.9和tf1.10,使用bazel-0.24.0和bazel-0.17.2都无法编译
  (2)tf1.9和tf1.10,使用bazel-0.19.0编译到一半出现错误
  (3)tf1.5,使用bazel-0.19.0编译到一半出现错误
  (4)tf1.5,使用bazel-0.17.2编译成功

3、使用tf1.5和bazel-0.17.2,编译quantize_graph,输入的指令为:bazel build tensorflow/tools/quantization:quantize_graph
  经过测试,在使用quantize_graph的时候,只有默认的round模式可以使用,其他的模式(quantize, eightbit, weights, weights_rounded)都会报错。猜测原因:版本有bug

4、使用tf1.5和bazel-0.17.2,编译optimize_for_inference,输入的指令为:

  经过测试,optimize_for_inference可以使用。

三、简单的方式使用quantize_graph
  实际上,在tensorflow的工具箱里有quantize_graph的python版本,可以直接使用,存放的位置:
  tensorflow\tensorflow\tools\quantization,如果下载的是tf1.5,在使用的时候和bazel编译出来的版本一样,会出现错误。接下来测试了tf1.10版本,round模式和weights模式没有问题,但是eightbit模式会出现如下错误:ValueError: zero-size array to reduction operation minimum which has no identity,找到代码错误的地方,发现是min_value = np.min(float_tensor.flatten()), max_value = np.max(float_tensor.flatten())这两行代码出错,原因是因为这个矩阵是空矩阵,在这个地方进行如下修改:

np_modify = float_tensor.flatten()
  if np_modify.size == 0:
      min_value = 0
      max_value = 0
  else:
    min_value = np.min(float_tensor.flatten())
    max_value = np.max(float_tensor.flatten())

修改之后,eightbit模式可以正常运行。

相关文章

  • bazel编译graph_transforms

    一、安装bazel  1、安装MSYS2 shell  根据系统选择需要下载的版本,安装之后配置环境变量,例如:\...

  • Bazel Remote Cache 缓存问题

    Bazel Remote Cache 缓存问题 简介 公司 iOS 项目使用 bazel 使用编译,同时 baze...

  • 风格迁移模型压缩 第三期

    1 安装bazel Bazel是google推出的一款工程编译工具,并且已经将其开源。 Bazel可以快速地构建可...

  • Bazel-创建静态framework

    Bazel 生成静态Framework , 并且打包一个Bundle资源文件 BUILD文件 编译 bazel b...

  • [bazel]-如何编译

    Change log 目录 [bazel]-导读[bazel]-概念和术语[bazel]-bazel的使用[baz...

  • bazel 并行编译

    ARM 服务器编译 TensorFlow 按照官方文档非常慢,可以在 bazel build 时将机器性能完全利用...

  • bazel build说明笔记

    bazel笔记: bazel的编译是基于工作区,也就是项目的根目录 1. workspace文件:制定当前文件夹就...

  • Bazel构建基础

    一、Bazel是什么 Bazel是一个构建工具,即一个可以运行编译和测试来组装软件的工具,跟Make、Ant、Gr...

  • tensorflow编译工具bazel的安装和使用

    前段时间项目组想要编译tensorflow源码,让我去折腾环境,现在对tensorflow的编译工具bazel的安...

  • Bazel-iOS Error 系列 (一) Could not

    错误详情 错误现象 Bazel iPhone真机编译调试 , 可以编译通过, 安装成功, 但是最后报错 我的BUI...

网友评论

      本文标题:bazel编译graph_transforms

      本文链接:https://www.haomeiwen.com/subject/onylbqtx.html