文档章节

Tensorflow 源码Windows下编译

shengjuntu
 shengjuntu
发布于 2016/12/17 17:43
字数 810
阅读 2019
收藏 4

我也一懒人,用pip install tensorflow未果,才决心编译源码。好在Tensorflow源码实在赏心阅目。加上今天上海阳光明媚。Just Do it ! :)

0 看看自己平台信息

这是我的:

OS: Windows 8.1 64 bits

GPU:NVIDIA GeForce M720 比较挫。聊胜于无。好歹是支持CUDA

已经安装了Python 3.6, Visual Studio 2015, GIT, CMake。

 

1 第一个准备环境

照这个提示做

https://github.com/tensorflow/tensorflow/tree/r0.12/tensorflow/contrib/cmake

==============================================================

re-requisites

  • CMake version 3.5 up to 3.6

  • Git

  • SWIG

  • Additional pre-requisites for Microsoft Windows:

    • Visual Studio 2015
    • Python 3.5
    • NumPy 1.11.0 or late

===============================================================

//说明:

1 .CMake:是跨平台的构建工具。在Windows下可以直接生成Visual Studio的工程文件。

2.GIT就不解释了。

3.SWIG: 一个绝妙工具,把C/C++写的库自动暴露给脚本。这里用来生成Python包装。须知神经网络这种耗CPU的东西,核心部分当然得用C/C++写。加上脚本只是为了应用的方便。

4. Visual Studio 2015, Python 3.5不解释了。 Numpy是Python中数值计算库,计算向量,矩阵用。

Known-good configurations

Microsoft Windows 10

Anaconda is the leading open data science platform powered by Python. The open source version of Anaconda is a high performance distribution of Python and R and includes over 100 of the most popular Python, R and Scala packages for data science.

********************************************************************************************************

OK 一通下载,NVidia CUDNN 5.1 需要注册。

1.1 先准备Python

安装Anaconda 4.1.1这个东西内置Python 3.5。感觉要冲突,不过Python环境集中在一个目录中。解决办法只需要PATH中保留一个即可。并且集成了numpy。如果不放心,可以操作一把:

打开命令行。

c:\python

import numpy

1.2 安装NVidia CUDA Toolkit 8.0

1.3 安装NVidia CUDNN 5.1

这个简单,就是库+头文件。解压到一个目录就可以。

********************************************************************************************************

2 编译的检查:

不要照搬Tensorflow的命令。可能不一样。要点是

a)设置Visual Studio环境变量:

到安装目录上找一下,这个是我的。

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\vcvars32.bat"

b ) 确保nvidia CUDA是否可用。

命令行中输入:c:\nvcc

如果能运行起来。说明可以。

c) CUDNN需要手动设置:

我cudnn放在这里。

C:\cudnn\cuda\bin

把这个目录添加到PATH中。

 

3 调用cmake生成工程。

进入tensorflow源码目录,我的在d:\project\tensorflow下。

如果用git clone 太慢,可以到github上直接下载zip文件。用迅雷。

cd  D:\project\tensorflow\tensorflow\contrib\cmake

mkdir build

cd build

此时工作目录为D:\project\tensorflow\tensorflow\contrib\cmake\build

输入命令:

cmake .. -A x64 -DCMAKE_BUILD_TYPE=Release -DSWIG_EXECUTABLE=C:/swig/swig.exe -DPYTHON_EXECUTABLE=C:/Users/%USERNAME%/Anaconda3/python.exe -DPYTHON_LIBRARIES=C:/Users/%USERNAME%/Anaconda3/libs/python35.lib -Dtensorflow_ENABLE_GPU=ON -DCUDNN_HOME="c:\cudnn"

 

4 编译

cmake会在build目录下生成一堆目录,先不用细看。今天的任务是编译。就是要找到tensorflow.sln。

打开。编译。先要选择Debug版本编译,因为快。

 

OK

让她编译吧。我去吃饭,看电影,如果有错误。下回分解。

 

 

 

 

 

 

 

 

 

 

 

 

 

© 著作权归作者所有

shengjuntu
粉丝 14
博文 86
码字总数 17009
作品 0
上海
程序员
私信 提问
加载中

评论(2)

itheima
itheima
werwer
itheima
itheima
werwer
TensorFlow GPU 与 源码编译

在深度学习中,服务器的GPU可以极大地加快算法的执行速度,不同版本的TensorFlow默认使用的GPU版本不同,导致与服务器无法兼容,这就需要根据服务器的GPU版本,重新编译TensorFlow源码。 欢迎...

SpikeKing
2018/06/30
0
0
TensorFlow平台的搭建

一、TensorFlow介绍 TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数...

qq_39525832
2018/05/28
0
0
TensorFlow in Android

首先说明以下,这只是把实践的过程叙述以下。 参考文章:在Android中借助TensorFlow使用机器学习(译) Android TensorFlow Machine Learning Example(科学上网你懂的 0、前言 环境 系统:D...

孟飞阳
2018/07/15
0
0
第3章 TensorFlow入门

第3章 TensorFlow入门 TensorFlow是Google创造的数值运算库,作为深度学习的底层使用。本章包括: TensorFlow介绍 如何用TensorFlow定义、编译并运算表达式 如何寻求帮助 注意:TensorFlow暂...

优惠券发放
2018/05/31
0
0
TensorFlow给机器学习在移动端的运用

人工智能、机器学习都已走进了我们的日常,尤其是愈演愈热的大数据更是跟我们的生活息息相关,做 人工智能、数据挖掘的人在其他人眼中感觉是很高大上的,总有一种遥不可及的感觉,在我司也经...

程序猿拿Q
2018/11/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

group by分组后获得每组中时间最大的那条记录

用途: GROUP BY 语句用于 对一个或多个列对结果集进行分组。 例子: 原表: 现在,我们希望根据USER_ID 字段进行分组,那么,可使用 GROUP BY 语句。 我们使用下列 SQL 语句: SELECT ID,US...

豆花饭烧土豆
51分钟前
2
0
android6.0源码分析之Camera API2.0下的Preview(预览)流程分析

本文将基于android6.0的源码,对Camera API2.0下Camera的preview的流程进行分析。在文章android6.0源码分析之Camera API2.0下的初始化流程分析中,已经对Camera2内置应用的Open即初始化流程进...

天王盖地虎626
今天
4
0
java 序列化和反序列化

1. 概述 序列恢复为Java对象的过程。 对象的序列化主要有两 首先我们介绍下序列化和反序列化的概念: 序列化:把Java对象转换为字节序列的过程。 反序列化:把字节序列恢复为Java对象的过程。...

edison_kwok
今天
2
0
分布式数据一致性

狼王黄师傅
今天
2
0
经验

相信每位开发者在自己开发的过程中,都会反思一些问题,比如怎样提高编程能力、如何保持心态不砍产品经理、996 之后怎样恢复精力……最近开发者 Tomasz Łakomy 将他 7 年的开发生涯中学习到...

WinkJie
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部