“是骡子是马,拉出来溜溜”。上述安装是否成功,需要测试一下才知道。下面我们就用大名鼎鼎的“HelloWorld”程序,来测试TensorFlow是否安装成功。

在终端输入python(请注意,在Mac/Linux环境下“python”全部小写),进入Python的交互模式(Python shell)。然后依次输入如下4条语句。

01    >>> import tensorflow as tf
02    >>> hello = tf.constant("Hello World, TensorFlow!")
03    >>> sess = tf.Session()
04    >>> print(sess.run(hello))

b'Hello World,TensorFlow!'

我们暂不去解释上述语句,在后文讲解TensorFlow语法时,会详细介绍。在交换模式下,如果输入第01行代码没有提示信息,那么恭喜你,TensorFlow安装成功。

但通常是“好事多磨”。由于我们“追新”,Python当前的最新版本是3.6,而TensorFlow的最新官方编译版还停留在(Python3.5),所以会导致如下警告信息:

/home/yhilly/anaconda3/envs/tensorflow/lib/python3.6/importlib/_bootstrap.py:219:RuntimeWarning: compiletime version 3.5of module 'tensorflow.python.framework.fast_tensor_util' does not match runtime version 3.6

  return f(*args, **kwds)

在GitHub上,这是一个留名的(known)的问题,网上吐槽一片。TensorFlow的维护者倒是非常大方的承认,目前所谓的TensorFlow的Python 3.6编译版,是拿3.5的编译版“滥竽充数”的。或许读者朋友看到这本书的时候,这个问题已是过去式了,因为TensorFlow的维护者已腾出手修复了这个问题。

上述警告信息,其实并不影响输出结果(这或许也是TensorFlow维护者并不着急解决这个小问题的原因之一)。如果有“代码洁癖”的读者,可重新利用conda创建一个Python3.5的环境,下载安装图11-15倒数第5个安装包(即tensorflow-1.4.0-cp35-cp35m-manylinux1_x86_64.whl),问题就可以迎刃而解。然后,在命令行终端输入如下指令:

conda create -ntensorflow35 python=3.5           #创建Python3.5的环境tensorflow35

source activatetensorflow35                      # 激活环境tensorflow35

pip3 installtensorflow-1.4.0-cp35-cp35m-manylinux1_x86_64.whl   #安装Python 3.5 编译包

在解决第01条语句的报警问题之后,在输入第03条语句时,TensorFlow也可能会给出如下警告:

Itensorflow/core/platform/cpu_feature_guard.cc:137] Your CPU supportsinstructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2AVX AVX2 FMA

这个问题的出现,是源于TensorFlow的默认发布版并没有构建于CPU的扩展版指令之上。这样做的目的在于,它可以兼容更多类型的CPU,尽量寻求支持各类CPU型号的最大交集,所以诸如SSE(StreamingSIMD Extensions,单指令多数据流扩展)、AVX(AdvancedVector Extensions,高级向量扩展指令集)、FMA(FusedMultiply–Add,积和熔加运算)等提高CPU效率的“个性化”高级指令,默认发布版是不支持的。而对于机器学习任务来说,这些并行化或向量化编程,能大大提升机器学习的效率。

处理这类警告信息,有两种策略。第一种策略就是“鸵鸟策略”——对警告信息“视而不见,听而不闻”,因为毕竟是“警告信息”,而非错误信息,TensorFlow程序照样可以正常运行。但这样做的坏处在于,明明你的CPU性能很好,可健步如飞,却非要像“打折了腿”一般行路,好不委屈!

为了避免这类情况,自然还需要我们再“折腾”一番,下载TensorFlow的源码,放到自己的机器上编译一下。热爱“折腾”,是上进程序员的优秀品质之一。下面我们就再接着折腾一番,介绍TensorFlow的第三种安装方式——下载源码编译。

------《待续》-------------