1.1 Anaconda
首先Python有两个系列的版本,分别是Python 2与Python 3。两个系列版本是相互不兼容的,造成这个现象的历史原因不多提及,读者只需知道通过Python 3编写的代码并不一定能通过Python 2运行,反之亦然。Python 2的最高版本是Python 2.7,官方会对其维护到2020年,随后便不再支持。本书使用Python 3作为开发语言,具体的版本为Python 3.6.7。
为了方便后面的开发,这里通过Anaconda的方式来安装Python。Anaconda是Python的免费增值开源发行版,它直接为我们安装好了各种用于科学计算的依赖库。如果我们直接地安装Python 3,那么这些第三方依赖库还需自己手动去下载。在下载安装使用的过程中可能还会遇到依赖冲突等问题。为了避免这些问题带来的困扰,应直接下载并安装Anaconda。Anaconda同样分为以Python 2为基础的版本与以Python 3为基础的版本,这里推荐直接下载并安装以Python 3为基础的版本。
Anaconda除了帮助我们预先安装了各种常用的科学计算的依赖库外,还提供了包管理和部署工具conda。我们可以通过conda来创建一个专门用于开发深度学习项目的Python虚拟环境。
首先来聊一下所谓的Python虚拟环境,通常使用Python开发时,为了提高开发效率,都会使用各种第三方库,如科学计算库numpy、scipy,图像处理库pillow、opencv等。随着编写项目的增加,就会在本地环境中安装各种各样的工具,此时就会显得混乱,难以管理。一个常见的情况就是,在开发项目A时使用了1.0版B库,此时开发一个新的项目也要使用B库,但版本要求是2.0。如果升级B库,此前开发的项目A就可能会出现问题。如果不升级,新项目开发就遇到阻碍。为了避免这种情况,最好的做法就是单独创建不同的Python虚拟环境。每个虚拟环境都是一个独立的不会影响系统原本Python环境的空间,在这个空间中编写程序和安装依赖库都不会影响系统本身的Python环境以及其他Python虚拟环境,这样不仅方便管理,也避免了很多包冲突的问题。
下面使用conda来创建一个名为tfpy36的虚拟环境。
conda create -n tfpy36 python=3.6
这样conda就会为我们自动创建一个Python 3.6的虚拟环境,名为tfpy36。如果无法直接使用conda命令,则需要对系统的环境变量进行相应的修改。
等待创建完成后,就可以进入该虚拟环境进行操作了。
□Mac/Linux进入方式
#进入虚拟环境 source activate tfpy36 #退出虚拟环境 source deactivate
□Windows进入方式
#进入虚拟环境 activate tfpy36 #退出虚拟环境 deactivate tfpy26
进入虚拟环境后,就可以在该虚拟环境中安装各种依赖库,以及使用该虚拟环境进行模型的开发了,这里直接通过pip来安装TensorFlow,方便后面直接使用。
# 安装仅CPU版 pip install tensorflow==1.9 # 安装GPU版 pip install tensorflow-gpu==1.9
TensorFlow迭代速度较快,在编写本书时,TensorFlow版本为1.9,所以这里推荐安装1.9版本的TensorFlow,不同的系统在TensorFlow的安装上会有一些差异,可以参考官方提供的安装文档。
安装完成后,可以简单测试使用一下,首先通过pip安装增强式Python交互环境IPython,pip install ipython,然后在命令行中输入ipython进入增强式Python交互环境,导入TensorFlow并进行一个简单的测试,以检查TensorFlow是否安装成功,具体代码如下。
In [1]: import tensorflow as tf In [2]: a = tf.constant(1.0, tf.float32) In [3]: b = tf.constant(2.0) In [4]: sess = tf.Session() 2018-08-12 09:43:53.060073: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA In [5]: print(a,b) Tensor("Const:0", shape=(), dtype=float32) Tensor("Const_1:0", shape=(), dtype=float32) In [6]: print(sess.run([a,b])) [1.0, 2.0]
当开发比较复杂的项目时,通常会使用相应的IDE进行开发,这里推荐使用PyCharm作为Python的开发工具,下载安装后新建一个名为tfgan的项目,新建项目时PyCharm本身支持为该项目创建独立的Python虚拟环境,这里直接导入此前创建好的Python虚拟环境即可。如果每个项目都创建一个单独的虚拟环境,个人觉得太冗余与繁杂了。如果每个项目都创建一个虚拟环境,那么在每个项目都要重复安装常用依赖库的过程,比较好的做法是同类型项目使用同一个虚拟环境,如图1.1所示。
图1.1 PyCharm创建项目
如果是已经存在的项目,要使用conda创建的虚拟环境,则需要打开PyCharm的设置面板,进行图1.2所示的选择。
图1.2 PyCharm选择虚拟环境
值得一提的是,Anaconda通常将不同的虚拟环境都放置在根目录的envs文件夹下,所以在使用conda创建的虚拟环境时,导入envs目录不同Python虚拟环境bin目录下的python即可,具体如图1.3所示。
图1.3 bin目录