纯新手入门安装TensorFlow并写Hello(mac版)

2022-01-07 20:54:05 浏览数 (1)

在深度学习大热的情况下很自然地考虑要用一些类似的工具来做一些有意思的事情,一个常用的工具就是TensorFlow,TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库,也就是说它是一个库,提供API供你使用,来用特殊的数据流图的方式转换你的算法计算,从而得出结果的工具。

要使用第一步就是安装环境了,查资料配置了一番,运行hello world程序成功了,这里记录一下过程。

环境说明

题目说明了,我是在mac环境下配置的,系统版本为:macOS 10.12.5。

TensorFlow支持多种语言,我用的是python。

安装的TensorFlow版本为macOS的1.3.0 纯CPU无GPU版,另有含GPU版,可以利用GPU提升计算速度。关于TensorFlow的版本信息可以看它的github。

安装指南

TensorFlow的官网是英文的,英文好的可以直接看官网,信息比较新也比较全。英文吃力的可以先看中文社区,也还行,其中也有安装的说明,不过也会遇到一些坑,因此才有了我这篇。

其实安装有多种方式,光是在mac上就可以通过homebrew、Docker、镜像、VirtualEnv等,我选择的是基于VirtualEnv安装,因为这样可以创建一个隔离的容器, 来安装 TensorFlow。这是可选的, 但是这样做能使排查安装问题变得更容易。也就是说我们创建了一个单独的环境来安装和运行TensorFlow,甚至mac本身就有的python环境好像也另外安装了一份。

基于VirtualEnv安装的步骤如下:

如果没有安装 pip的话,先安装pip:

代码语言:javascript复制
$ sudo easy_install pip  # 如果还没有安装 pip
$ sudo pip install --upgrade virtualenv

接下来, 我们建立一个全新的 virtualenv 环境。为了将环境建在 ~/tensorflow 目录下, 执行:

代码语言:javascript复制
$ virtualenv --system-site-packages ~/tensorflow
$ cd ~/tensorflow #进入该目录

然后, 激活 virtualenv(不用了就要手动停用):

代码语言:javascript复制
$ source bin/activate  # 如果使用 bash
$ source bin/activate.csh  # 如果使用 csh
(tensorflow)$  # 终端提示符应该发生变化

上面两个source命令只需要根据情况运行一种,我使用的是第一种,执行命令后,命令前会多一个(tensorflow)提示符,这表示激活成功了,之后的操作都会在此环境下运行。

接着就在 virtualenv 内, 安装 TensorFlow:

代码语言:javascript复制
(tensorflow)$ pip install --upgrade <$url_to_binary.whl>

注意,上面的 <$url_to_binary.whl> 并不是要原封不动地输入,而是根据你要安装的TensorFlow版本替换成不同的内容,比如我安装1.3.0无GPU版的,就改成如下:

代码语言:javascript复制
(tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/cpu/tensorflow-1.3.0-py2-none-any.whl

其他版本大同小异,比如该系统名,改版本号数字,改python版本数字,有无GPU等,版本信息可以在github看到最新的。

到此,TensorFlow就安装完成了!

其实,如果不想在一个虚拟环境中安装,而是直接在整个系统中安装,也不挑版本,则可以直接用:

代码语言:javascript复制
pip install tensorflow

来安装,pip会自动选择合适你python版本的、符合你gpu的、最新的TensorFlow来安装,如果是python3就用pip3安装。

写个Hellow World

常见的,安装完后我们写个小程序来试一试,我用的是python语言:

代码语言:javascript复制
import tensorflow as tf

# 输出Hello, TensorFlow!
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print sess.run(hello)

# 计算 10   32 并输出
a = tf.constant(10)
b = tf.constant(32)
print sess.run(a b)

# 把一个1*2的矩阵和一个2*1的矩阵相乘并输出
matrix1 = tf.constant([[3., 3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)
result = sess.run(product)
print result

sess.close()

关于这段代码做什么,注释里已经说了,其实大概也能看懂,具体的语法可以到官网或者中文社区去学习,了解基本用法就能看懂了。

要运行,只需要把这段代码放到一个命名为 hello.py 的python文件,将文件放到我们创建的~/tensorflow目录(如果找不到这个目录,可以在终端输入 open ~/tensorflow 来在Finder中显示目录)下,或者其他目录下也可以,只是要在终端命令中进入该目录,然后运行该python文件即可:

代码语言:javascript复制
(tensorflow)$ python hello.py

输出结果应该为:

代码语言:javascript复制
Hello, TensorFlow!
42
[[ 12.]]

除了结果之外,因为我安装的是无GPU版本的,它可能还会提示你可以利用GPU来急速计算。

不再使用之后,最好停用 virtualenv:

代码语言:javascript复制
# 当使用完 TensorFlow
(tensorflow)$ deactivate  # 停用 virtualenv

$  # 你的命令提示符会恢复原样

到此为止,就已经安装好环境并且运行Hello程序了,不算太难,只是对于新手来说容易有点摸不着头脑不知道在干什么。此外,光看Hello程序会觉得TensorFlow做得事情很简单,但这只是因为我们的例子简单,TensorFlow主要方便用来做复杂计算的,它是一个数值节点、操作节点以及之间连线表示流程图的结构,想象一下神经网络,还是很相似的。我还只是一个新手,对其的理解也很浅薄,希望以后可以继续学习来做出一些真正有意思的事情。

0 人点赞