随着近两年tensorflow越来越火,在一台新win10系统上装tensorflow并记录安装过程。华硕最近的 Geforce 940mx的机子。

TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。它灵活的架构让你可以在多种平台上展开计算,例如台式计算机中的一个或多个CPU(或GPU),服务器,移动设备等等。TensorFlow 最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。

tensorflow用起来就是更加方便,高效;一般情况是这样的,如果你用过其它的框架,比如caffe,那tf的感觉就如同fly一般,上手飞快。

tf有CPU和GPU两个版本,GPU的安装需要cuda和cudnn,安装过程十分简洁。

因为都要安装python,pip等包,所以直接安装Anaconda,但是一定要安装3.0版本的,地址如下:https://www.anaconda.com/download/#windows

本人安装的是python3.6版本Anaconda,直接下载根据提示安装。

  • 安装CPU版本。

CPU版本安装非常简洁,只需要在cmd输入如下指令即可:

pip install --upgrade --ignore-installed tensorflow
  • 安装GPU版本。

同样,在cmd输入如下指令:

pip install --upgrade --ignore-installed tensorflow-gpu

GPU版本就安装好了,但是如果你import tensorflow的话,提示错误如下:

ImportError: Could not find 'cudart64_90.dll'. TensorFlow requires that this DLL be installed in a directory that is named in your %PATH% environment variable. Download and install CUDA 9.0 from this URL: https://developer.nvidia.com/cuda-toolkit

显然,这个时候第二步需要安装cuda9.0,cuda的安装也是十分方便,下载地址:https://developer.nvidia.com/cuda-90-download-archive

下载的本地安装的exe文件即可。百度云链接: https://pan.baidu.com/s/1vbfYVMHLreMlk4yrJqp11A 密码: ddha

安装的过程中,cuda需要VS,所以请先安装VS2015或2013等VS之后,再安装Cuda,否则,以后你用VS开发项目的话会找不到cuda,也没有cuda的开发环境,意味着你成功把这两个给隔离了。

******插入广告中******

很无奈,虽然大多数安装tensorflow的同学,都已经安装了VS和cuda,但是为了追求完美,我还是成功演示一遍。

登陆VS官网,记得要登陆微软账户订阅上,才能下载,本人下载的是免费的2015社区版。有需要的同学,可看百度云链接:链接: https://pan.baidu.com/s/1jJoP6JhdwgXigfKa5FTylw 密码: nse8

接下来安装就好啦。

******广告已结束******

第三步是安装cudnn,同理登陆英伟达的官网下载cudnn7.0 for cuda9.0。百度云链接如下:

链接: https://pan.baidu.com/s/1wP5wix8GLKSi2TrCUJzQmQ 密码: gq2f

接下来就是将下载的cudnn文件夹的bin、include、lib文件夹下的文件copy到cuda9.0对应的文件夹里即可。

最终,完成了整个tensorflow GPU版本的安装。

下面就是验证tensorflow安装是否真正好了。以下面的代码为例:

import tensorflow as tf
import numpy as np # 使用 NumPy 生成假数据(phony data), 总共 100 个点.
x_data = np.float32(np.random.rand(2, 100)) # 随机输入
y_data = np.dot([0.100, 0.200], x_data) + 0.300 # 构造一个线性模型
b = tf.Variable(tf.zeros([1]))
W = tf.Variable(tf.random_uniform([1, 2], -1.0, 1.0))
y = tf.matmul(W, x_data) + b # 最小化方差
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss) # 初始化变量
init = tf.initialize_all_variables() # 启动图 (graph)
sess = tf.Session()
sess.run(init) # 拟合平面
for step in xrange(0, 201):
sess.run(train)
if step % 20 == 0:
print step, sess.run(W), sess.run(b)

运行后报错:

SyntaxError: invalid syntax

这是因为python3.0版本对print进行了改进,print变成了函数,因此最后一句应该修改为:

print (step, sess.run(W), sess.run(b))

继续运行,又报错:

C:\Users\91612\Anaconda3\lib\site-packages\h5py\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
WARNING:tensorflow:From C:\Users\91612\Anaconda3\lib\site-packages\tensorflow\python\util\tf_should_use.py:118: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02.
Instructions for updating:
Use `tf.global_variables_initializer` instead.
2018-04-12 10:34:11.748103: I T:\src\github\tensorflow\tensorflow\core\platform\cpu_feature_guard.cc:140] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
2018-04-12 10:34:12.473410: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1344] Found device 0 with properties:
name: GeForce 940MX major: 5 minor: 0 memoryClockRate(GHz): 1.2415
pciBusID: 0000:01:00.0
totalMemory: 2.00GiB freeMemory: 1.66GiB
2018-04-12 10:34:12.473725: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1423] Adding visible gpu devices: 0
2018-04-12 10:36:24.849943: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:911] Device interconnect StreamExecutor with strength 1 edge matrix:
2018-04-12 10:36:24.850068: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:917] 0
2018-04-12 10:36:24.850685: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:930] 0: N
2018-04-12 10:36:24.852802: I T:\src\github\tensorflow\tensorflow\core\common_runtime\gpu\gpu_device.cc:1041] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 1429 MB memory) -> physical GPU (device: 0, name: GeForce 940MX, pci bus id: 0000:01:00.0, compute capability: 5.0)
Traceback (most recent call last):
File "example.py", line 27, in <module>
for step in xrange(0, 201):
NameError: name 'xrange' is not defined

主要是两个错误,initialize_all_variables应该修改为最新的global_variables_initializer;然后python3.0将xrange取消了,只有range函数,因此需要把xrange改为range。

另外,我们还看到一个warning,这主要是因为numpy和h5py之间的版本冲突,主要的解决方法有三个:

  • 对numpy版本进行降级,查看本机安装的numpy版本直接import numpy之后 print (numpy.version.version),本机是1.14.2,降级到稳定的1.13版本;
#自动安装1.13.0,卸载已安装的1.14.2
pip install numpy==1.13.0
  • 将tensorflow版本降低到1.5.0以下,直接tf.__version__查看本机安装的是1.7.0,因为1.5.0以下是不存在这个冲突的,这个可在安装的时候指定版本;
  • 不用管这个warning,事实上这个警告没啥影响,可以眼不见心不烦。例如:
import warnings
with warnings.catch_warnings():
warnings.filterwarnings("ignore",category=FutureWarning)

就这样,完成了tensorflow的完整安装,事实上这很快就可以完成了,于是乎,我们运行上面的栗子,可以看到:

0 [[-0.11355552  0.47500253]] [ 0.4552581]
20 [[ 0.03362741 0.25130805]] [ 0.30422428]
40 [[ 0.08393362 0.21267535]] [ 0.30089444]
60 [[ 0.09610623 0.20312524]] [ 0.30019006]
80 [[ 0.09905535 0.20076929]] [ 0.30004054]
100 [[ 0.09977061 0.2001891 ]] [ 0.30000868]
120 [[ 0.09994424 0.20004643]] [ 0.30000189]
140 [[ 0.09998644 0.2000114 ]] [ 0.3000004]
160 [[ 0.09999672 0.2000028 ]] [ 0.30000007]
180 [[ 0.09999919 0.20000066]] [ 0.30000004]
200 [[ 0.09999977 0.20000014]] [ 0.30000004]

很完美的呈现出了答案。

TensorFlow在windows10上的安装与使用(一)的更多相关文章

  1. Tensorflow-gpu在windows10上的安装(anaconda)

    文档来源转载: http://blog.csdn.net/u010099080/article/details/53418159 http://blog.nitishmutha.com/tensorf ...

  2. MySQL-8.0.11 在 Windows10 上的安装

    下载 MySQL8.0 For Windows zip包下载地址:https://dev.mysql.com/downloads/file/?id=476233. 进入页面后可以不登录,点击底部“No ...

  3. TensorFlow在win10上的安装与使用(二)

    在上篇博客中已经详细的介绍了tf的安装,下面就让我们正式进入tensorflow的使用,介绍以下tf的特征. 首先tf有它独特的特征,我们在使用之前必须知晓: 使用图 (graph) 来表示计算任务, ...

  4. GPU版的tensorflow在windows上的安装时的错误解决方案

    1.用vs编译cuda的sample时会提示找不到"d3dx9.h"."d3dx10.h"."d3dx11.h"头文件的错误,如果没有安装这 ...

  5. TensorFlow在win10上的安装与使用(三)

    本篇博客介绍最经典的手写数字识别Mnist在tf上的应用. Mnist有两种模型,一种是将其数据集看作是没有关系的像素值点,用softmax回归来做.另一种就是利用卷积神经网络,考虑局部图片像素的相关 ...

  6. gitblit在windows10上的安装及服务启动报错处理

    折腾一下午算是装好了,心情不错决定分享一下.安装步骤大同小异网上都有,主要是Failed creating java 这个报错,百度出来的没有一个能给我解决的,摸索半天找出一个自己的方式.为报错而来的 ...

  7. Robot Framework -002 在Windows10上的安装

    机器人框架是使用Python实现的,并且还支持Jython(JVM),IronPython(.NET)和PyPy. 在安装框架之前,一个明显的前提条件是至少安装这些解释器之一. 下面列出了安装Robo ...

  8. Windows10 上Docker 安装运行Consul

    背景简介 Consul是一种服务网格解决方案,提供具有服务发现,配置和分段功能的全功能控制平面. 这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全服务网格. Consul需要数据平面并 ...

  9. windows10上同时安装py2和py3的情况

    2018-06-14  16:14:51 1.同时安装python2和python3的时候,pip只是其中一个版本,使用对应Python版本的pip时,在命令行分别输入如下命令: 查看不同Python ...

随机推荐

  1. call()方法和apply()方法

    最近又遇到了JacvaScript中的call()方法和apply()方法,而在某些时候这两个方法还确实是十分重要的,那么就让我总结这两个方法的使用和区别吧. 1. 每个函数都包含两个非继承而来的方法 ...

  2. RHEL/Centos下Sendmail服务器搭建

    目的 Linux下配置Sendmail服务器,并通过客户端验证. 环境 Cento6 局域网(可访问互联网) 内容 配置Sendmail服务器,使得客户端能够通过foxmail或者outlook ex ...

  3. Unhandled rejection RangeError: Maximum call stack size exceededill install loadIdealTree

    npm安装时候报这个错误,解决方法如下: 删除项目中的 package-lock.json 文件 和 node_modules 文件夹,然后再尝试 npm install 详细参考

  4. centos6.5搭建LVS+Keepalived

    1.配置LVS负载调度器 (1)为eth0配置IP地址,为eth0:0配置VIP地址. vi /etc/sysconfig/network-scripts/ifcfg-eth0 …… DEVICE=e ...

  5. ssl证书生成与验证

    要做这件事情的起因在于,代码的升级包放在一个https的服务器上,我们的设备要实现升级,则是通过wget 获取https上的升级包,并且要实现验证证书的功能,这样可以防止设备被恶意篡改升级成其他文件包 ...

  6. ppp协议介绍(转)

    原文:https://www.cnblogs.com/gtarcoder/p/6259105.html PPP协议PPP协议是二层(数据链路层)协议,常用于拨号上网时客户端向服务器获取IP地址.PPP ...

  7. 字符串化#、拼接字符##和可变参数宏(...和_ _VA_ARGS_ _)

    宏定义的使用与注意事项 ##是一个连接符号,用于把参数连在一起 #是“字符串化”的意思.出现在宏定义中的#是把跟在后面的参数转换成一个字符串#define paster( n ) printf( &q ...

  8. 【题解】新型城市化 HAOI2017 网络流 二分图最大匹配 强连通分量

    Prelude 好,HAOI2017终于会做一道题了! 传送到洛谷:→_→ 传送到LOJ:←_← 本篇博客链接:(●'◡'●) Solution 首先要读懂题. 考场上我是这样想的QAQ. 我们把每个 ...

  9. Service Fabric —— Actor / Stateless Service 概念

    作者:潘罡 (Van Pan) @ Microsoft 上一节我们谈到了Stateful Service.在Service Fabric中,Stateful Service是理解Micro Servi ...

  10. python pop()

    pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值. obj -- 可选参数,要移除列表元素的索引值,不能超过列表总长度,默认为 index=-1,删除最后一个列表值 l ...