介绍
TensorFlow是Google开发的用于训练神经网络的开源机器学习软件。 TensorFlow的神经网络以状态数据流图的形式表示。 图中的每个节点表示神经网络在多维阵列上执行的操作。 这些多维阵列通常被称为“张量”,因此称为TensorFlow。
TensorFlow是一个深度学习软件系统。 谷歌在他们的机器学习人工智能系统RankBrain中如何进行搜索排名,TensorFlow可以很好地用于信息检索。 TensorFlow可以执行图像识别,如Google的Inception所示,以及人类语言的音频识别。 它也可以用来解决其他非机器学习问题,如偏微分方程 。
TensorFlow架构允许部署在桌面,服务器或移动设备中的多个CPU或GPU上。 还有与CUDA (Nvidia的并行计算平台)集成的扩展。 这使正在GPU上部署的用户可以直接访问并行计算任务所需的虚拟指令集和GPU的其他元素。
在本教程中,您将安装TensorFlow的“仅支持CPU”版本。 此安装非常适合希望安装和使用TensorFlow,但没有Nvidia显卡或不需要运行性能关键型应用程序的用户。
你可以用几种方法安装TensorFlow。 每种方法都有不同的用例和开发环境:
- Python和Virtualenv :在这种方法中,您将安装TensorFlow以及在Python虚拟环境中使用TensorFlow所需的所有软件包。 这将您的TensorFlow环境与其他Python程序隔离在同一台机器上。
- 本地点:在这种方法中,您可以在您的系统上全局安装TensorFlow。 对于想要在多用户系统上向所有人提供TensorFlow的用户,建议使用此功能。 这种安装方法不能在封闭的环境中隔离TensorFlow,并且可能会干扰其他Python安装或库。
- Docker :Docker是一个容器运行时环境,它完全隔离了系统中已有包的内容。 在这个方法中,你使用一个包含TensorFlow及其所有依赖项的Docker容器。 此方法非常适合将TensorFlow并入已经使用Docker的更大应用程序体系结构中。 但是,Docker镜像的大小将会相当大。
在本教程中,您将使用virtualenv
将TensorFlow安装在Python虚拟环境中。 这种方法隔离了TensorFlow安装并快速启动并运行。 完成安装后,您将通过运行一个简短的TensorFlow程序来验证您的安装,然后使用TensorFlow执行图像识别。
先决条件
在开始本教程之前,您需要以下内容:
按照Ubuntu 16.04初始服务器设置指南设置的一个Ubuntu 16.04服务器,其中至少有1GB内存,其中包括sudo非root用户和防火墙。 您将需要至少1GB的内存才能成功执行本教程中的最后一个示例。
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提供了一个模型和示例的存储库 ,包括代码和训练有素的图像分类模型。
使用Git将GitHub中的TensorFlow模型库克隆到您的项目目录中:
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的可用空间。
在这个例子中,我们将分类 。 执行此命令来运行图像分类器程序:
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 ,你可以看到和分享解决方案,其中一些在统计和机器学习技术的尖端。