介绍
TensorFlow 是谷歌开发的用于训练神经网络的开源机器学习软件。 TensorFlow 的神经网络以 状态数据流图 的形式表示。 图中的每个节点代表神经网络对多维数组执行的操作。 这些多维数组通常被称为“张量”,因此得名 TensorFlow。
TensorFlow是一个深度学习软件系统。 TensorFlow 非常适用于信息检索,正如谷歌在他们的机器学习人工智能系统 RankBrain 中进行搜索排名所证明的那样。 TensorFlow 可以执行图像识别,如谷歌的 Inception 所示,以及人类语言音频识别。 它在解决机器学习以外的其他问题(例如偏微分方程)时也很有用。
TensorFlow 架构允许在台式机、服务器或移动设备内的多个 CPU 或 GPU 上进行部署。 也有与 Nvidia 的并行计算平台 CUDA 集成的扩展。 这使部署在 GPU 上的用户可以直接访问虚拟指令集和并行计算任务所需的 GPU 的其他元素。
在本教程中,您将安装 TensorFlow 的“仅支持 CPU”版本。 此安装非常适合希望安装和使用 TensorFlow,但没有 Nvidia 显卡或不需要运行性能关键型应用程序的人。
您可以通过多种方式安装 TensorFlow。 每种方法都有不同的用例和开发环境:
- Python 和 Virtualenv:在这种方法中,您需要安装 TensorFlow 以及在 Python 虚拟环境中使用 TensorFlow 所需的所有包。 这将您的 TensorFlow 环境与同一台机器上的其他 Python 程序隔离开来。
- Native pip:在这种方法中,您在系统上全局安装 TensorFlow。 推荐给希望在多用户系统上向所有人提供 TensorFlow 的人。 这种安装方法不会将 TensorFlow 隔离在封闭的环境中,并且可能会干扰其他 Python 安装或库。
- Docker:Docker 是一个容器运行时环境,它的内容与系统上预先存在的包完全隔离。 在此方法中,您使用包含 TensorFlow 及其所有依赖项的 Docker 容器。 这种方法非常适合将 TensorFlow 整合到已经使用 Docker 的大型应用程序架构中。 但是,Docker 映像的大小会非常大。
在本教程中,您将使用 virtualenv
在 Python 虚拟环境中安装 TensorFlow。 这种方法隔离了 TensorFlow 安装并快速启动和运行。 完成安装后,您将通过运行一个简短的 TensorFlow 程序来验证您的安装,然后使用 TensorFlow 执行图像识别。
先决条件
在开始本教程之前,您需要以下内容:
- 按照 Ubuntu 16.04 初始服务器设置指南 设置一台具有至少 1GB RAM 的 Ubuntu 16.04 服务器,包括 sudo 非 root 用户和防火墙。 您需要至少 1GB 的 RAM 才能成功执行本教程中的最后一个示例。
- 已安装 Python 3.3 或更高版本和
virtualenv
。 按照如何在Ubuntu 16.04上安装Python 3配置Python和virtualenv
。 - 已安装 Git,您可以按照 如何在 Ubuntu 16.04 上安装 Git。 您将使用它来下载示例存储库。
第 1 步 — 安装 TensorFlow
在这一步中,我们将创建一个虚拟环境并安装 TensorFlow。
首先,创建一个名为 tf-demo
的项目目录:
mkdir ~/tf-demo
导航到您新创建的 tf-demo
目录:
cd ~/tf-demo
然后创建一个名为 tensorflow-dev
的新虚拟环境。 运行以下命令创建环境:
python3 -m venv tensorflow-dev
这将创建一个新的 tensorflow-dev
目录,其中将包含您在激活此环境时安装的所有包。 它还包括 pip
和 Python 的独立版本。
现在激活您的虚拟环境:
source tensorflow-dev/bin/activate
激活后,您将在终端中看到与此类似的内容:
(tensorflow-dev)username@hostname:~/tf-demo $
现在您可以在虚拟环境中安装 TensorFlow。
运行以下命令安装并升级到 PyPi 中可用的最新版本的 TensorFlow:
pip3 install --upgrade tensorflow
TensorFlow 将安装:
OutputCollecting tensorflow Downloading tensorflow-1.4.0-cp36-cp36m-macosx_10_11_x86_64.whl (39.3MB) 100% |████████████████████████████████| 39.3MB 35kB/s ... Successfully installed bleach-1.5.0 enum34-1.1.6 html5lib-0.9999999 markdown-2.6.9 numpy-1.13.3 protobuf-3.5.0.post1 setuptools-38.2.3 six-1.11.0 tensorflow-1.4.0 tensorflow-tensorboard-0.4.0rc3 werkzeug-0.12.2 wheel-0.30.0
如果您想随时停用您的虚拟环境,命令是:
deactivate
要稍后重新激活环境,请导航到您的项目目录并运行 source tensorflow-dev/bin/activate
。
现在,您已经安装了 TensorFlow,让我们确保 TensorFlow 安装工作正常。
第 2 步 — 验证安装
为了验证 TensorFlow 的安装,我们将以非 root 用户身份在 TensorFlow 中运行一个简单的程序。 我们将使用“Hello, world!”的经典初学者示例。 作为一种验证形式。 我们将使用 Python 的交互式控制台 创建此程序,而不是创建 Python 文件。
要编写程序,请启动 Python 解释器:
python
您将在终端中看到以下提示
>>>
这是 Python 解释器的提示符,它表明您已准备好开始输入一些 Python 语句。
首先,键入此行以导入 TensorFlow 包并使其可用作局部变量 tf
。 输入代码行后按ENTER
:
import tensorflow as tf
接下来,添加这行代码来设置消息“Hello, world!”:
hello = tf.constant("Hello, world!")
然后创建一个新的 TensorFlow 会话并将其分配给变量 sess
:
sess = tf.Session()
注意:根据您的环境,您可能会看到以下输出:
Output2017-06-18 16:22:45.956946: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations. 2017-06-18 16:22:45.957158: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations. 2017-06-18 16:22:45.957282: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations. 2017-06-18 16:22:45.957404: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX2 instructions, but these are available on your machine and could speed up CPU computations. 2017-06-18 16:22:45.957527: W tensorflow/core/platform/cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use FMA instructions, but these are available on your machine and could speed up CPU computations.
这告诉您,您有一个 指令集 ,它有可能通过 TensorFlow 进行优化以获得更好的性能。 如果您看到这一点,您可以放心地忽略它并继续。
最后,输入这行代码,打印出运行您在之前代码行中构建的 hello
TensorFlow 会话的结果:
print(sess.run(hello))
您将在控制台中看到此输出:
OutputHello, world!
这表明一切正常,您可以开始使用 TensorFlow 做一些更有趣的事情。
按 CTRL+D
退出 Python 交互式控制台。
现在让我们使用 TensorFlow 的图像识别 API 来更加熟悉 TensorFlow。
第 3 步 — 使用 TensorFlow 进行图像识别
既然已经安装了 TensorFlow,并且您已经通过运行一个简单的程序对其进行了验证,那么让我们来看看 TensorFlow 的图像识别功能。
为了对图像进行分类,您需要训练模型。 然后你需要编写一些代码来使用模型。 要了解有关这些概念的更多信息,您可以查看机器学习简介。
TensorFlow 提供了模型和示例 的 存储库,包括用于对图像进行分类的代码和经过训练的模型。
使用 Git 将 TensorFlow 模型存储库从 GitHub 克隆到您的项目目录中:
git clone https://github.com/tensorflow/models.git
当 Git 将存储库检出到名为 models
的新文件夹中时,您将看到以下输出:
OutputCloning into 'models'... remote: Counting objects: 8785, done. remote: Total 8785 (delta 0), reused 0 (delta 0), pack-reused 8785 Receiving objects: 100% (8785/8785), 203.16 MiB | 24.16 MiB/s, done. Resolving deltas: 100% (4942/4942), done. Checking connectivity... done.
切换到models/tutorials/image/imagenet
目录:
cd models/tutorials/image/imagenet
此目录包含使用 TensorFlow 识别图像的 classify_image.py
文件。 该程序在第一次运行时从 tensorflow.org
下载经过训练的模型。 下载此模型需要您有 200MB 的可用磁盘空间。
在这个例子中,我们将对一张 预先提供的 Panda 图像进行分类。 执行此命令以运行图像分类器程序:
python classify_image.py
您将看到与此类似的输出:
Outputgiant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.89107) indri, indris, Indri indri, Indri brevicaudatus (score = 0.00779) lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00296) custard apple (score = 0.00147) earthstar (score = 0.00117)
您已经使用 TensorFlow 的图像识别功能对您的第一张图像进行了分类。
如果您想使用另一个图像,可以通过将 -- image_file
参数添加到 python3 classify_image.py
命令来实现。 对于参数,您将传入图像文件的绝对路径。
结论
您已经在 Python 虚拟环境中安装了 TensorFlow,并通过运行几个示例验证了 TensorFlow 是否有效。 您现在拥有的工具可以让您探索其他主题,包括 卷积神经网络 和 词嵌入 。
TensorFlow 的 程序员指南 是 TensorFlow 开发的重要资源和参考。 您还可以探索 Kaggle,这是一个用于实际应用机器学习概念的竞争环境,可让您与其他机器学习、数据科学和统计爱好者竞争。 他们有一个出色的 wiki,您可以在其中查看和共享解决方案,其中一些处于统计和机器学习技术的前沿。