第02课:TensorFlow

第02课:TensorFlow 基础

一、前期回顾

前面两篇文章,向大家介绍了机器学习和人工智能,以及如何入门。现在开始进入正题。后面的5篇文章会对 TensorFlow 的基础使用,SoftMax,交叉熵,Dropout,CNN,TensorFlow 可视化,验证码识别等内容进行系列介绍,尽量使用通俗的语言,让更多的人都能了解人工智能,了解 TensorFlow。

二、TensorFlow 简介

TensorFlow 是 Google 开源的一款人工智能学习系统。为什么叫这个名字呢?Tensor 的意思是张量,代表 N 维数组;Flow 的意思是流,代表基于数据流图的计算。把 N 维数字从流图的一端流动到另一端的过程,就是人工智能神经网络进行分析和处理的过程。

话说在 Android 占领了移动端后,Google 开源了 TensorFlow,希望占领 AI 端。TF的特点是可以支持多种设备,大到 GPU、CPU,小到平板和手机都可以跑起来 TF。而且 TF 的使用很方便,几行代码就能开始跑模型,这让神经网络的入门变得非常简单。

三、TensorFlow 的安装

在开始写代码之前,咱们先得把 TensorFlow 安装到电脑上。这里有两种方法,一是逐个手动命令行安装,二是批量的图形化界面安装。

先看手动安装,我们安装好 TensorFlow 和 upyter Notebook 就可以了。

安装 TensorFlow

Windows 上:

  • 安装 CPU 版本:管理员模式打开命令行,输入命令:pip install tensorflow
  • 安装 GPU 版本:管理员模式打开命令行,输入命令:pip install tensorflow-gpu

Linux 上: 命令和上面一样,如果你使用的是 Python 3.X 的版本,那么安装命令为:

  • 安装 CPU 版本:输入命令:pip3 install tensorflow
  • 安装 GPU 版本:输入命令:pip3 install tensorflow-gpu

如果提示没有安装 pip,mac 的同学可以先通过命令安装 pip:

  • 命令行输入:
curl https://bootstrap.pypa.io/ez_setup.py -o - | sudo python
  • 命令行输入:
sudo easy_install pip

安装 Jupyter Notebook

这是一个交互式的笔记本,你可以理解为一个比较漂亮和简洁的编辑器。可以很方便地创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。一般用与做数据清理和转换,数值模拟,统计建模,机器学习等等。 输入命令:pip install jupyter

前面的方法是自己手动一个一个安装,其实已经有人帮我们做了一个大集合,不需要再一个一个手动安装了,下面介绍图形界面的批量安装方式:

安装Anaconda

Anaconda 是什么?如果你把 TensorFlow 看做火箭筒,那么 Anaconda 就是军火库,里面有各种的科学计算,机器学习的 Python 工具库。在官网下载后,直接安装,然后打开 Anaconda,就可以看到下面的页面:

点到第二行的 Environments,可以看到很多的工具包,搜索 TensorFlow,勾选上,然后点击 Apply,进行安装就可以了。如果以后还需要其他的工具包,也可以在里面找到,勾选上进行安装。

OK,安装教程到此告一段落。有了 jupyter 和 tensorflow,我们就可以开始基础的运算了。

四、TensorFlow 基础运算

在搞神经网络之前,先让我们把 TensorFlow 的基本运算,也就是加减乘除搞清楚。

首先,TensorFlow 有几个概念需要进行明确:

  • 图(Graph):用来表示计算任务,也就我们要做的一些操作。
  • 会话(Session):建立会话,此时会生成一张空图;在会话中添加节点和边,形成一张图,一个会话可以有多个图,通过执行这些图得到结果。如果把每个图看做一个车床,那会话就是一个车间,里面有若干个车床,用来把数据生产成结果。
  • Tensor:用来表示数据,是我们的原料。
  • 变量(Variable):用来记录一些数据和状态,是我们的容器。
  • feed和fetch:可以为任意的操作( arbitrary operation ) 赋值或者从其中获取数据。相当于一些铲子,可以操作数据。 形象的比喻是:把会话看做车间,图看做车床,里面用 Tensor 做原料,变量做容器,feed 和 fetch 做铲子,把数据加工成我们的结果。

创建图和运行图

下面我们创建一个图,并在 Session 中执行它,不用担心看不懂,每句代码都会注释,只有有编程基础,都能 OK:

上面就是用 TensorFlow 进行了一个最简单的矩阵乘法。

创建一个变量,并用 for 循环对变量进行赋值操作

可以看到,除了变量创建稍微麻烦一些和必须建立 session 来运行,其他的操作基本和普通Python一样。

通过 feed 设置 placeholder 的值

有的时候,我们会在声明变量的时候不赋值,计算的时候才进行赋值,这个时候 feed 就派上用场了

到这里,恭喜你,已经成功入门 TensorFlow, 是不是觉得太简单?好像和深度学习毛线关系都没有嘛。不要急,下一篇文章和大家一起用 TensorFlow 实现一个简单的神经网络来做手写图片识别。

上一篇
下一篇
目录