TensorFlow 是 Google 开发的一个用于机器学习的开源软件库。我们可以使用 TensorFlow 框架非常方便地搭建我们需要的机器学习/深度学习的任务。
TensorFlow 的 Graph 和 Session
TensorFlow 和我们过去所使用的一些机器学习库,如 skleran 有很大的不同。它采用了一种计算定义与执行运算分开的模式。我们使用 TensorFlow 定义计算的时候,TensorFlow 只会为我们创建一个 Graph 而不会执行计算,当我们需要运行实际计算的时候,我们需要开启一个 Session ,然后再执行运算。
这样的设计可以让 TensorFlow 能够更省资源、方便分解子环节的处理以及对分布式计算非常友好。以下是一个简单的 TensorFLow 数据流图:
上面的 Data Flow Graph 定义了 a b c 的计算定义(既图中的成色圆圈以及箭头指向),而图中的 list 即为将在这个 Graph 中流动的数据,数据经过不同的计算定义节点,就会有一个结果输出。
我们再来看一个 TensorFlow 给的一个神经网络训练的图例:
图中动画演示的就是我们的训练数据经过 Graph 后不断优化参数再进行训练的过程。
一些 TensorFlow 例的概念理解
Tensor 张量
上图为张量的数学定义,在使用 TensorFlow 的时候,我们可以简单的将其理解为 n 维矩阵。我们的机器学习、深度学习任务,核心就是把各种我们需要学习、处理的信息以计算机能 “读懂” 的矩阵形式表示,并交由计算机进行处理。结合我们上面解释的 Data Flow Graph ,我们就不难理解,什么是 TensorFLow 了。
Session 会话
我们在开始的时候提过,TensorFLow 的设计是把计算定义和运算结果分开,而我们这里的 Session,就是用来让我们的 TensorFlow 去执行我们需要的计算。
TensorFlow 的安装与配置
ensorFLow 有分为 CPU版本 和 GPU版本,在进行一些复杂模型训练的时候,使用 GPU 能明显加快速度,但目前为止 TensorFLow 值支持带CUDA的显卡,所以如果需要安装 GPU版本的可以参考官网的指引:https://www.tensorflow.org/install/gpu?hl=zh-cn
TensorFlow 支持 Ubuntu 、Window、 macOS,甚至支持树莓派的 Raspbian,我们可以使用 pip 进行安装。但是,使用 pip 安装 TensorFlow 有时会出现一些异常的情况,所以为了方便以及良好的体验,建议安装 Anaconda 环境,然后使用 conda install tensorflow
安装 TensorFlow 即可。
TensorFlow 快速基础入门
我们完成了 TensorFlow 的安装之后,就可以开始使用 TensorFlow 了,和使用其他的 Python 库一样,我们也是需要先引入我们所需要使用的包:
我们接下来将介绍一些 TensorFlow 的基本使用,包括以下内容:
- constant 常量
- operations 运算/变换
- Variable 变量
- placeholder 训练数据占位
我们定义了两个常量 num_1 和 num_2 ,并且定义了一个加法运算 num_add_op ,可以看到,如果我们直接输出 num_1 或者 num_2 甚至是 num_add_op,都不会得到任何值或者结果,这就是我们在前文提到的运算定义和执行计算分开的设计。如果我们想要获取运算结果,就需要先创建一个 Session 然后在 run 我们需要的节点,如上图,我们执行 num_add_op 这个运算操作,就可以得到计算结果。
同理,我们也可以使用 run 来获取我们的常量值。
上面的示例代码仅演示了最简单的标量常量赋值,TensorFlow 的常量还可以是矩阵,甚至是一些预置的常量,如零矩阵、单位矩阵、正态分布随机矩阵等,详细可以参考官方文档:https://www.tensorflow.org/api_guides/python/constant_op
上面所使用的 constant 常量,一般定义了就不能改变,如果我们需要可以可以改变的变量,就可以使用 Variable。
以上示例代码定义了一个计数器变量,然后定义了一个每次给计数器加一的运算,然后我们在定义了一个将运算结果赋值给计数器的操作。然后我们将整个操作去 run 一遍,然后输出结果。我们可以看到,我们的 counter 变量会不断改变。
使用 TensorFlow 我们很多时候需要传入训练数据,因而,我们需要使用 placeholder 在定义计算的时候配置好训练数据的位置。
上面示例代码定义了一个简单的矩阵加法,其中 x 为我们需要传入的数据,我们在执行运算的时候,需要将需要计算的数据传入到 x 中才能正常运行代码。
小结
到这里,我们已经简单的把 TensorFlow 的一些基础操作介绍完毕。接下来我们就可以开始进一步利用 TensorFlow 进行我们的机器学习之旅了。本文关于常量、运算部分仅仅做了大概的介绍,这两个部分中仍有很多细节需要我们了解,建议在 TensorFlow 的官网上利用好搜索功能,根据自己的实际问题找到适用的 api 。