前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Win10系统编译Tensorflow Lite 2.3为动态链接库tensorflowlite_c.dll

Win10系统编译Tensorflow Lite 2.3为动态链接库tensorflowlite_c.dll

原创
作者头像
superhua
修改于 2021-01-02 06:43:24
修改于 2021-01-02 06:43:24
4.9K6
举报
文章被收录于专栏:CNNCNN

Tensorflow Lite官方在移动端提供了官方编译好的库,我们直接拿来用就好。TensorflowLinux平台与Mac平台下编译也非常轻松,基本不会遇到太多问题(据说Google内部只用LinuxMac)。但是在Windows下编译真是一波三折,好在已经编译成功了,记录一下Windows 10Tensorflow Lite编译过程,帮助一下跟我一样被Tensorflow折腾的不行的人。

最近看到一个巨牛的人工智能教程,分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。平时碎片时间可以当小说看,【点这里可以去膜拜一下大神的“小说”】

1 前期准备

1.1 安装 MSYS2

MSYS2官方下载地址为【https://www.msys2.org】,直接下载安装即可。安装完成后,将安装路径的**usr\bin**添加到环境变量:假设安装目录为E:\msys64,则要将E:\msys64\usr\bin加入到环境变量%PATH%中。

打开控制台cmd.exe,输入如下命令:

代码语言:txt
AI代码解释
复制
pacman -S git patch unzip

用于安装gitpatch以及unzip

1.2 安装visual studio

visual studio可以安装2019版本或者最新版本即可。

1.3 安装python

编译过程中,需要用python运行一些脚本,去python官网下载最新版python安装即可,这里不介绍python安装。这里我本机已经安装了Anaconda,使用的python版本为3.6.3

代码语言:txt
AI代码解释
复制
E:\>python --version
Python 3.6.3 :: Anaconda 4.4.0 (64-bit)

理论上python版本直接安装最新的即可。

值得注意的是,安装完python后,还需要安装numpy库。否则编译期间会报错找不到numpynumpy可以通过pip install numpy来安装。

1.4 下载tensorflow源码

前往github下载tensorflow源码:【https://github.com/tensorflow/tensorflow】。目前最新版本是2.4.02.4.0c_api变动比较大,因此选择2.3.1版本,等2.4.x版本稳定后再考虑用更新的,如下图所示:

下载2.3.2版本tensorflow
下载2.3.2版本tensorflow

1.5 安装bazel

每个版本的tensorflow都有其对应的bazel版本,如果版本不一致,可能会在编译期间出现错误,这种错误还很难排查,-_-||。因此,要确认好当前的tensorflow源码应该使用哪个bazel版本。

解压缩tensorflow-2.3.1.zip文件后,打开cmd,进入tensorflow-2.3.1。输入命令cat configure.py | grep -i bazel_ver。如下:

代码语言:txt
AI代码解释
复制
 E:\>cd tensorflow-2.3.1
 E:\tensorflow-2.3.1>cat configure.py | grep -i bazel_ve
_TF_CURRENT_BAZEL_VERSION = None
_TF_MIN_BAZEL_VERSION = '3.1.0'
_TF_MAX_BAZEL_VERSION = '3.99.0'

def check_bazel_version(min_version, max_version):
      'TF_IGNORE_MAX_BAZEL_VERSION' not in os.environ):
  global _TF_CURRENT_BAZEL_VERSION
    current_bazel_version = check_bazel_version(_TF_MIN_BAZEL_VERSION,
                                                _TF_MAX_BAZEL_VERSION)
  _TF_CURRENT_BAZEL_VERSION = convert_version_to_int(current_bazel_version)

可以看到,最小的bazel版本为3.1.0。最大版本是3.99.0,这里看最大的版本意义不大,本意应该是希望在3.1.0以上。按照我对tensorflow官方的尿性的了解, 他们每个版本都会使用当前最新的bazel,换言之,在编译tensorflow 2.3.1期间很有可能最新的bazel版本是3.1.0,也就是说官方用的是bazel 3.1.0编译的。为了确保编译不出问题,跟官方保持一致的版本是最明智的选择。

前往【https://github.com/bazelbuild/bazel/releases】下载bazel-3.1.0-windows-x86_64.exe,如下所示:

bazel-3.1.0-windows-x86_64.exe
bazel-3.1.0-windows-x86_64.exe

下载后,放入到E:\bazel目录中,并把E:\bazel加入到环境变量PATH中,同时,把bazel-3.1.0-windows-x86_64.exe重命名为bazel.exe。做完这一切后,打开cmd,输入bazel --version确认bazel是否安装成功,以及版本是否正确。

代码语言:txt
AI代码解释
复制
E:\tensorflow-2.3.1>bazel --version
bazel 3.1.0

2 开始编译

2.1 执行configure.py

configure.py文件会预先设置python等一些相关可选项,需要先运行这个文件。

代码语言:txt
AI代码解释
复制
E:\tensorflow-2.3.1>python configure.py
You have bazel 3.1.0 installed.
Please specify the location of python. [Default is E:\Anaconda3\python.exe]:


Found possible Python library paths:
  E:\Anaconda3\lib\site-packages
Please input the desired Python library path to use.  Default is [E:\Anaconda3\lib\site-packages]

Do you wish to build TensorFlow with ROCm support? [y/N]: n
No ROCm support will be enabled for TensorFlow.

Do you wish to build TensorFlow with CUDA support? [y/N]: n
No CUDA support will be enabled for TensorFlow.

Please specify optimization flags to use during compilation when bazel option "--config=opt" is specified [Default is /arch:AVX]:


Would you like to override eigen strong inline for some C++ compilation to reduce the compilation time? [Y/n]: n
Not overriding eigen strong inline, some compilations could take more than 20 mins.

Would you like to interactively configure ./WORKSPACE for Android builds? [y/N]: n
Not configuring the WORKSPACE for Android builds.

Preconfigured Bazel build configs. You can use any of the below by adding "--config=<>" to your build command. See .bazelrc for more details.
        --config=mkl            # Build with MKL support.
        --config=monolithic     # Config for mostly static monolithic build.
        --config=ngraph         # Build with Intel nGraph support.
        --config=numa           # Build with NUMA support.
        --config=dynamic_kernels        # (Experimental) Build kernels into separate shared objects.
        --config=v2             # Build TensorFlow 2.x instead of 1.x.
Preconfigured Bazel build configs to DISABLE default on features:
        --config=noaws          # Disable AWS S3 filesystem support.
        --config=nogcp          # Disable GCP support.
        --config=nohdfs         # Disable HDFS support.
        --config=nonccl         # Disable NVIDIA NCCL support.

运行期间,会确认python路径、是否配置android等等,因为我这边是编译精简CPU版的tflite,且是为了编译dll。因此androidcudaROCm等我都选择了N

2.2 编译

直接执行bazel进行编译即可:

代码语言:txt
AI代码解释
复制
bazel build -c opt --config=mkl  //tensorflow/lite/c:tensorflowlite_c.dll

稍等片刻,等待自动下载相关库,并完成编译:

代码语言:txt
AI代码解释
复制
····
INFO: From Linking tensorflow/lite/c/tensorflowlite_c.dll:
LINK : warning LNK4044: 无法识别的选项“/s”;已忽略
  正在创建库 bazel-out/x64_windows-opt/bin/tensorflow/lite/c/tensorflowlite_c.dll.if.lib 和对象
bazel-out/x64_windows-opt/bin/tensorflow/lite/c/tensorflowlite_c.dll.if.exp
Target //tensorflow/lite/c:tensorflowlite_c.dll up-to-date:
  bazel-bin/tensorflow/lite/c/tensorflowlite_c.dll
INFO: Elapsed time: 291.250s, Critical Path: 60.46s
INFO: 305 processes: 305 local.
INFO: Build completed successfully, 444 total actions

打开E:\tensorflow-2.3.1\bazel-out\x64_windows-opt\bin\tensorflow\lite\c路径即可得看到tensorflowlite_c.dlltensorflowlite_c.dll.if.lib两个文件。这里个文件即为我们最终的结果。

2.3 抠出头文件

光有dlllib还不够,我们还需要头文件才能在c++代码里面引用。最简单的方法是直接将整个tensorflow源码根路径加入到include路径中,这样的话整个项目会过于庞大。

最佳做法是将E:\tensorflow-2.3.1\tensorflow目录下,只保留lite目录,其他目录删除。在lite目录中只保留ccore两个子目录,其他的删除。在ccore两个子目录中,只保留.h文件,其他的文件删除。

简而言之,只需要E:\tensorflow-2.3.1\tensorflow\lite\cE:\tensorflow-2.3.1\tensorflow\lite\core两个目录下的.h文件。

3 打包下载

由于各种因素问题,可能有些读者会遇到各种问题没法解决。问题不大,我这里提供已经编译好的直接下载。

  1. bazel 3.1.0下载:http://askonline.tech/download/2.html
  2. tensorflow 2.3.1源码:http://askonline.tech/download/3.html
  3. tflite dll 2.3.1包含头文件dlllib文件:http://askonline.tech/download/1.html

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
6 条评论
热度
最新
您的这些链接都失效了 请问还有哪可以下载
您的这些链接都失效了 请问还有哪可以下载
回复回复点赞举报
你好,请问下运行 bazel build -c opt --config=mkl //tensorflow/lite/c:tensorflowlite_c.dll 的时候 一直出现 Loading:0 package loaded 是什么意思呢?无法下载还是下载慢
你好,请问下运行 bazel build -c opt --config=mkl //tensorflow/lite/c:tensorflowlite_c.dll 的时候 一直出现 Loading:0 package loaded 是什么意思呢?无法下载还是下载慢
回复回复点赞举报
hi你好,想请问一下,用这种方法编译出来的是64位的dll和lib,请问如何编译32位的呢?
hi你好,想请问一下,用这种方法编译出来的是64位的dll和lib,请问如何编译32位的呢?
33点赞举报
64位的,tensorflow不支持32位
64位的,tensorflow不支持32位
回复回复点赞举报
这样的呀,之前我们用Linux编译的话,是有32和64位的,那tensorflow是只在windows下是不支持32位的吗?
这样的呀,之前我们用Linux编译的话,是有32和64位的,那tensorflow是只在windows下是不支持32位的吗?
回复回复点赞举报
查看全部3条回复
推荐阅读
编辑精选文章
换一批
【原创】记录我一次详细的TensorFlow源代码编译构建安装包总结
最近公司给我们分配了2台虚拟机服务器用于强化学习训练,我们在虚拟环境中安装好了TensorFlow环境后,在import tensorflow时发现报了下面的错误:
黄鸿波
2020/11/19
2.4K0
【原创】记录我一次详细的TensorFlow源代码编译构建安装包总结
【Ubuntu】Tensorflow对训练后的模型做8位(uint8)量化转换
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
superhua
2019/10/22
1.8K0
【Ubuntu】Tensorflow对训练后的模型做8位(uint8)量化转换
Electron9.x +vue+ffi-napi 调用Dll动态链接库
本文主要介绍在 Electron9.x 中,使用ffi-napi,ref-array-napi,ref-napi 加载 Windows 动态链接库,并在Vue 渲染进程中使用。使用过程中会遇到一系列的坑,本文将会一一解决,并解释原因。如有同行兄弟遇到此问题可以借鉴。
治电小白菜
2022/09/08
5.1K0
【TensorFlow实战——笔记】第3章:TensorFlow第一步_TensorFlow的编译及安装
不管哪种情况,我们都推荐使用Anaconda作为Python的环境,因为可以避免大量的兼容性问题。
石瞳禅
2018/09/18
8150
【TensorFlow实战——笔记】第3章:TensorFlow第一步_TensorFlow的编译及安装
TensorFlow的安装
在本篇文章中,我们将会介绍TensorFlow的安装,TensorFlow是Google公司在2015年11月9日开源的一个深度学习框架。
夜雨飘零
2020/05/06
1.9K0
使用GitHub镜像加速TensorFlow编译
由于GitHub的访问不是很稳定,速度经常很慢,这就给某些需要编译TensorFlow的同学带来了问题,因为TensorFlow主代码库放在GitHub上,更麻烦的是TensorFlow有很多第三方依赖库也在GitHub上,即使通过访问gitee等国内代码库把TF的代码clone下来,编译的时候也可能出问题,因为bazel需要在编译的时候动态下载GitHub上的第三方库。
windmaple
2022/03/30
2K0
编译tensorflow-lite-with-select-tf-ops遇到的坑
官方没有直接给出AAR,而是让自己用巴泽尔去编译一个,实在是有点坑啊。
vell001
2018/12/28
5.8K0
编译tensorflow-lite-with-select-tf-ops遇到的坑
Tensorflow(GPU) 在Win10+Cuda8.0环境下安装以及Cudnn包配置 图文详细教程
原本安装好之后并不会有以上四个环境变量,有两个需要自己加上。 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\libnvvp 附配置环境变量教程 最后在cmd里输入 echo %path% 就能查看你的是否添加进环境变量了
大鹅
2021/06/15
1.5K0
Tensorflow(GPU) 在Win10+Cuda8.0环境下安装以及Cudnn包配置 图文详细教程
tensorflow GPU版本配置加速环境
环境:Anaconda 、tensorflow_gpu==1.4.0 (这里就用1.4.0版本做演示了,虽然现在的已经是2.0版本了)
陶陶name
2022/05/12
7750
想提高棋艺?试试这款围棋AI
作为一名围棋渣渣,时不时会上对弈平台下下棋。围棋太博大精深,非常惭愧,虽然在下棋上花的时间很多,但一直处在菜鸟阶段,长期在1级和1段之间徘徊(腾讯野狐围棋上的排位)。要提升水平,需要下功夫去记定式、做死活题,但那太枯燥了,相较而言,我更喜欢上网厮杀,屠龙或被屠,爽一把再说。我等初级选手,经常会碰到那种不按套路的对手,有时明明觉得对方下了无理手,但就是不知道如何反击。再就是棋盘太空旷,不知如何选点。这些虽然在书上可以学到一些基本技巧,但一到实战,往往不知如何下手。
云水木石
2019/11/07
3.5K0
想提高棋艺?试试这款围棋AI
TensorFlow下载与安装
TensorFlow简介 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。 TensorFlow可被用于语音识别或图像识别等多项机器深度学习领域,对2011年开发的深度学习基础架构DistBelief进行了各方面的改进,它可在
xiangzhihong
2018/02/08
2K0
TensorFlow下载与安装
TensorFlow 入门指南
但在开始之前,先来看看一个最简单的使用 TensorFlow Python API 的示例代码,这样你就会对我们接下来要做的事情有所了解。
竹清
2018/08/31
1.4K0
TensorFlow 入门指南
TensorFlow2.0 系列开篇: Windows下GPU版本详细安装教程
1. Anaconda a. 下载 首先进入Anaconda的官网: https://www.anaconda.com/distribution 选择Windows下Python3.7(注意:必须选择64位,因为TF不支持Python32位的)
Datawhale
2019/07/08
7.7K0
TensorFlow2.0 系列开篇: Windows下GPU版本详细安装教程
1.3 centos7源码编译tensorflow-gpu版
很巧的是编译安装tensorflow-gpu版成功了。 tensorflow已经更新到1.13版,官方的linux安装文件采用的是glibc2.23, 而centos只支持到glibc2.17,所以在使用pip install tensorflow-gpu安装后的使用过程中会报错:
锦小年
2019/05/26
2.2K0
win10下配置Tensorflow1.4
本文介绍了如何配置Windows系统以支持TensorFlow 1.4,包括安装Python 3.5或更高版本、CUDA 8.0或更高版本、cuDNN 7.6或更高版本,以及TensorFlow 1.4。安装完成后,可以测试是否成功安装并运行TensorFlow。
GavinZhou
2018/01/02
1.4K0
win10下配置Tensorflow1.4
0490-如何为GPU环境编译CUDA9.2的TensorFlow1.8与1.12
从CDSW1.1.0开始支持GPU,具体可以参考Fayson之前的文章《如何在CDSW中使用GPU运行深度学习》,从最新的CDSW支持GPU的网站上我们可以查到相应的Nvidia Drive版本,CUDA版本以及TensorFlow版本,如下:
Fayson
2019/01/02
3.7K1
Tensorflow | win10中安装tensorflow-0.12.1 (0.12.1以后的版本安装均适用)
本文首发在CSDN博客:http://blog.csdn.net/xxzhangx/article/details/54379255 前几天,谷歌推出了windows对tensorflow的支持,我参考下面两篇博文来安装了我的tensorflow。 为表示对原作者的尊敬,先列出参考的文章。 参考文献 https://m.aliyun.com/yunqi/articles/68435 http://blog.csdn.net/zhuxiaoyang2000/article/details/5
努力在北京混出人样
2018/05/14
3.2K0
Win10+RTX2080深度学习环境搭建:tensorflow、mxnet、pytorch、caffe
笔者通过官网、通过conda、通过豆瓣镜像源安装tensorflow在import时都会失败,报“ImportError: DLL load failed: 找不到指定的模块”的错误,最终成功的安装方式如下:
李拜六不开鑫
2018/12/28
2.9K2
Windows下从零搭建深度学习环境Tensorflow+PyTorch(附深度学习入门三大名著)
首先安装python环境,推荐Anaconda+jupyter,而不是Pycharm
自学气象人
2023/06/21
8590
Windows下从零搭建深度学习环境Tensorflow+PyTorch(附深度学习入门三大名著)
TensorFlow开发环境搭建(Ubuntu16.04+GPU+TensorFlow源码编译)
作者:刘才权 编辑:田 旭 安装平台 1 平台 目前TensorFlow已支持Mac、Ubuntu和Windows三个主流平台(64位平台), 2 GPU vs CPU 在安装时可以选择安装版本是否
机器学习算法工程师
2018/03/06
1.8K0
TensorFlow开发环境搭建(Ubuntu16.04+GPU+TensorFlow源码编译)
推荐阅读
相关推荐
【原创】记录我一次详细的TensorFlow源代码编译构建安装包总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档