Anaconda与TensorFlow环境搭建

Jul 5,2017   4741 words   17 min

Tags: Python

因为某些原因需要安装TensorFlow,结果发现只支持64位的Python3,而电脑上安装的是32位的Python2。 所以要想使用只能重新安装Python3。同时在网上又看到了Anaconda,觉得十分好用,几乎所有常用包都包含了。 [2019-08-28更新]现在最新的TensorFlow版本都已经可以支持Python2了,所以Python2也可以直接装。不过多熟悉下Python3也是好事,最近看新闻说Python2的支持到2020年也就要结束了,转到Python3也只是早晚的事。[更新结束] 不需要自己一个个安装。所以打算使用Anaconda重新进行Python安装,然后配置TensorFlow。 我的电脑系统是64位 Win8,已经安装的是32位 Python 2.7.13。 废话不多说,下面开始安装步骤。

一、Anaconda配置

Anaconda是一个专门用于科学计算的Python环境,内置了很多常用的如Numpy、Matplotlib、SciPy等第三方包。 其官网是这个,截图如下: 这句”Superpower for people who change the world.”让人觉得很激动,虽然只是在码代码,总有一种拯救世界的感觉。 官网的简介图如下:

1.下载Anaconda

我是从这个网址下载的,并没有从官网下载。因为官网下载的安装包是Python 3.6版本。 目前来说还是比较新的版本,有些第三方包还没有支持Python3.6,如PyInstaller。所以下载了Python 3.5版本,对应的是Anaconda 4.2.0。 同时要注意TensorFlow只支持64位Python,所以也需要下载对应的64位Anaconda。 在上面那个网址中有各种历史版本,我们需要找到“Anaconda3-4.2.0-Windows-x86_64”下载即可,如下图所示。

2.安装Anaconda

下载完成后一个exe文件,直接双击打开即可。欢迎界面如下。 可以看到要安装的是Anaconda3 4.2.0 64位版本。 安装一直下一步即可。下面这步需要注意。 要把第一个选项去掉。因为我并不想以前配置好的Python2.7环境受到影响,所以不建议把Anaconda新安装的Python3.5加入系统路径。 这样如果需要使用Python3.5的控制台,直接启动“Anaconda Command Prompt”即可。而直接从系统cmd启动的控制台关联的还是之前的Python2.7,不受影响。 其实在更新版本的Anaconda安装程序(4.4.0)中,已经默认把第一个选项去掉了,提示里写了不推荐勾选。第二个选项要加上。 这样的话,之前安装的PyCharm就可以识别我们安装的Python解释器,然后很方便的和之前已存在的相互切换了。 安装过程如下: 由于安装的内容还是挺多的,所以需要花费点时间,在此期间电脑有可能变得很慢。所以你可以用这段时间出去走走或听听音乐。 一切顺利安装完成后如下: 这样Anaconda基本环境就安装完成了。它自带了IPython、Spyder等Python IDE,以及Anaconda Prompt控制台。

3.管理包

既然前面说了Anaconda已经集成了很多科学计算包,所以自然想看看都包含了哪些。 我们可以在开始菜单中找到“Anaconda Command Prompt”打开,这个就是Anaconda的控制台,对应的是我们安装的Python3.5。 如下是Anaconda Command Prompt和系统cmd同时输入python的对比,可以看到两个Python版本是共存的。 在Anaconda里有conda命令可以用于管理第三方包,类似于pip命令。使用方式和pip一模一样。 在Prompt里输入conda list,如下是已经安装的包,从拖动条就可以看出安装了非常多的包。

二、安装TensorFlow

安装TensorFlow和安装其它第三方包一样简单,只需要pip或conda命令即可。 但由于是在Anaconda中安装,所以推荐使用conda命令。 如果网络好的话,直接conda install tensorflow即可自动安装TensorFlow和相关依赖包。 如下图提示需要安装哪些包,升级哪些包。从这个角度来说conda、pip等很类似于Ubuntu下面的apt-get的自动包依赖管理工具。 可以避免很多麻烦。 当然如果网络不好,或者网络安装失败,可以手动下载安装包,毕竟服务器在国外,很多时候可能网速很慢。所以推荐本地安装方法。 下载地址还是这里,和上篇博客提供的地址一样。 利用页面内检索,找到对应版本下载。然后采用上篇博客的办法本地安装whl文件。 注意要用pip命令,conda命令装不了whl文件。例如我下载的是下面红色框出的版本。 [2019-08-28更新]现在上面的那个网址已经无法下载Wheel包了,所以更稳妥的方法是去PyPi的官方网站上搜索包,然后下载,如TensorFlow的下载页面是这个。[更新结束] 由于我的电脑比较老,显卡不行,所以不能选择GPU版本的。如果显卡支持CUDA,可以安装GPU版本。安装截图如下: 安装完成后import效果如下,说明安装成功。 conda list如下,显示使用pip方式安装。

三、安装OpenCV

做图像处理当然离不开OpenCV。但是从官方下载的文件中看,只支持到Python2.7。 而我们现在是Python3.5。所以不能这样安装了。 理论上来说我们可以直接conda install opencv完成安装,但问题是可能出现无法连接或网速太慢的情况,毕竟服务器在国外。 所以最好的办法是下载whl文件然后pip本地安装。首先在库中搜索,然后找到对应版本下载,如下。 使用pip本地安装界面如下: 安装完成后import成功,说明安装成功。 conda list如下,显示以pip方式安装。

四、安装PyInstaller

Python打包神器,而且支持Python3.5。pip install pyinstaller完成后如下。

五、安装GDAL

遥感图像处理必备。在仓库中搜索,找到对应版本下载。 然后本地pip安装,完成导入如下,安装成功。

六、PyCharm配置

与之前解决OpenCV包无法识别的解决方案类似。依次选择”File”→”Settings”,然后搜索”Interpreter”。 可以看到PyCharm已经识别出了我们安装的Python3.5。依次在Project Interpreter和Python Console选择这个。 点击OK,PyCharm开始更新依赖库如下图。 第一次进行更新会相对慢一些,因为Anaconda中包含了很多库。更新完成后就可以正常使用了。 同时在PyCharm中识别了我们之前的Python2.7和新的Python3.5,实现了多版本的共存。 这样以后运行时只需要通过选择不同的解释器就可以随意切换了,十分方便。

七、TensorFlow测试

下面的代码为TensorFlow官方教程的例子。

# coding=utf-8
'''
生成三维数据,用平面去拟合
'''
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.global_variables_initializer()

# 启动图 (graph)
sess = tf.Session()
sess.run(init)

# 拟合平面
for step in range(0, 201):
    sess.run(train)
    if step % 20 == 0:
        print(step, sess.run(W), sess.run(b))
        # 得到最佳拟合结果 W: [[0.100 0.200]], b: [0.300]

运行结果如下,说明TensorFlow可以正常运行。 但有如下警告。 说我们没有使用一些加速指令编译代码,可能会降低运算速度。如果不在乎可以忽略,不会影响结果。

八、GDAL测试

在之前这篇博客的最后,说到了内存错误的问题。 当时猜测是内存问题。经过测试发现是32位和64位版本的问题。由于之前使用的是32位版本,内存最大只能使用4G。 在读取大影像时内存不够用,因此会报错。同样是下面这段代码,使用32位Python2.7运行就会报错,64位Python3.5就OK。

from osgeo import gdal
from gdalconst import *
from matplotlib import pyplot as plt

dataset = gdal.Open("E:\\GF_image.tiff", GA_ReadOnly)

band_b = dataset.GetRasterBand(1)

data = band_b.ReadAsArray(0, 0, int(band_b.XSize / 10), int(band_b.YSize / 10))

plt.imshow(data, cmap='gray')
plt.show()

64位运行结果如下: 终于见到了久违的”Process finished with exit code 0”。

九、小结

在本篇博客中,首先安装了Python的Anaconda科学计算平台。 然后在平台基础上又配置了TensorFlow、OpenCV、PyInstaller、GDAL包,并对TensorFlow进行了测试。 最后解决了之前32位版本时GDAL读取影像时内存错误的问题。

十、题外话

安装完Anaconda后没过多久也把我2.7的Python升级到了64位版本。 之前之所以选择32位版本是考虑到程序兼容性问题。 因为可能还会有32位的电脑,这样我64位的程序在那些电脑上是运行不了的。 但仔细想想,现在身边32位的系统已经几乎找不到了。 这样的情况下也就没有必要考虑32位的兼容性了。 如果还是32位系统,还是建议先升级下吧。毕竟现在这个时代,4G内存已经做不了什么事了。 遥记得当年,我是大二暑假从32位换成了64位系统,另买了条2G的内存条。 之前的4G内存动不动使用率就百分之八九十。 更何况如果像图像处理或深度学习应用场景,32位就会有很多限制了。 之前GDAL就是个很明显的例子。 32位Python读取一个多G的遥感影像会报内存错误,同样的代码在64位下运行就不会报错。

其次通过这次安装whl包,觉得之前说的安装OpenCV、GDAL的方法都太过繁琐。 最简单的方法就是直接下载对应的whl,然后pip本地安装即可,省时省力。 更新完之后,目前在我电脑上的两套Python环境如下所示。

本文作者原创,未经许可不得转载,谢谢配合

返回顶部