如何在Ubuntu 18.04上安装和使用TensorFlow

TensorFlow是用于训练神经网络的开源机器学习软件.TensorFlow的神经网络以状态数据流图的形式表示。图中的每个节点......

介绍

TensorFlow是用于训练神经网络的开源机器学习软件.TensorFlow的神经网络以状态数据流图的形式表示。 图中的每个节点表示神经网络在多维阵列上执行的操作。 这些多维数组通常称为“张量”,因此称为TensorFlow。

TensorFlow是一个深度学习软件系统。 它适用于信息检索,正如谷歌在他们的机器学习人工智能系统RankBrain中搜索排名一样 TensorFlow可以执行图像识别,如Google的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执行图像识别。

先决条件

在开始本教程之前,您需要以下内容:

第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:

pip install --upgrade tensorflow

TensorFlow将安装,您应该获得输出,指示安装以及任何依赖包是否成功。

...
Successfully installed absl-py-0.7.1 astor-0.7.1 gast-0.2.2 grpcio-1.19.0 h5py-2.9.0 keras-applications-1.0.7 keras-preprocessing-1.0.9 markdown-3.0.1 mock-2.0.0 numpy-1.16.2 pbr-5.1.3 protobuf-3.7.0 setuptools-40.8.0 tensorboard-1.13.1 tensorflow-1.13.1 tensorflow-estimator-1.13.0 termcolor-1.1.0 werkzeug-0.15.0 wheel-0.33.1
...

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的安装,我们将在TensorFlow中以非root用户身份运行一个简单的程序。 我们将使用规范初学者的例子“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()

注意 :根据您的环境,您可能会看到以下输出:

2019-03-20 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.
2019-03-20 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.
2019-03-20 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.
2019-03-20 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.
2019-03-20 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会话的结果:

在Python 3中, sess.run()将返回一个字节字符串,该字符串将呈现为b'Hello, world!' if you run b'Hello, world!' if you run alone. In order to return b'Hello, world!' if you run print(sess.run(hello)) alone. In order to return alone. In order to return你好,世界! as a string, let's add the decode()`方法。

print(sess.run(hello).decode())

您将在控制台中看到此输出:

Hello, world!

这表明一切正常,您可以开始使用TensorFlow。

CTRL+D或键入quit()退出Python交互式控制台。

接下来,让我们使用TensorFlow的图像识别API来更熟悉TensorFlow。

第3步 - 使用TensorFlow进行图像识别

现在已经安装了TensorFlow并且您通过运行一个简单的程序验证了它,我们可以看一下TensorFlow的图像识别功能。

为了对图像进行分类,您需要训练模型。 然后你需要编写一些代码来使用模型。 要了解有关机器学习概念的更多信息,请阅读“ 机器学习简介 ”。

TensorFlow提供了模型和示例存储库 ,包括代码和用于分类图像的训练模型。

使用Git将TensorFlow模型库从GitHub克隆到项目目录中:

git clone https://github.com/tensorflow/models.git

当Git将存储库检出到名为models的新文件夹时,您将收到以下输出:

Cloning into 'models'...
remote: Enumerating objects: 32, done.
remote: Counting objects: 100% (32/32), done.
remote: Compressing objects: 100% (26/26), done.
remote: Total 24851 (delta 17), reused 12 (delta 6), pack-reused 24819
Receiving objects: 100% (24851/24851), 507.78 MiB | 32.73 MiB/s, done.
Resolving deltas: 100% (14629/14629), done.
Checking out files: 100% (2858/2858), done.

切换到models/tutorials/image/imagenet目录:

cd models/tutorials/image/imagenet

该目录包含classify_image.py文件,该文件使用TensorFlow识别图像。 该程序在第一次运行时从tensorflow.org下载经过训练的模型。 下载此模型需要磁盘上有200MB的可用空间。

在这个例子中,我们将分类预先提供的熊猫图像 执行此命令以运行映像分类器程序:

python classify_image.py

您将收到类似于此的输出:

giant 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的图像识别功能对第一张图像进行了分类。

如果您想使用其他图像,可以通过在python3 classify_image.py命令中添加-- image_file参数来完成此操作。 对于参数,您将传入图像文件的绝对路径。

结论

在本教程中,您已在Python虚拟环境中安装了TensorFlow,并通过运行一些示例验证了TensorFlow的工作原理。 您现在拥有的工具可以让您探索其他主题,包括卷积神经网络Word嵌入

TensorFlow的程序员指南为TensorFlow开发提供了有用的资源和参考。 您还可以探索Kaggle ,这是一个实际应用机器学习概念的竞争环境,可以帮助您抵御其他机器学习,数据科学和统计爱好者。 他们拥有强大的wiki ,您可以在其中探索和分享解决方案,其中一些解决方案处于统计和机器学习技术的最前沿。