《面向机器智能的TensorFlow实践》一2.1 选择安装环境-阿里云开发者社区

开发者社区> 华章计算机> 正文

《面向机器智能的TensorFlow实践》一2.1 选择安装环境

简介:
+关注继续查看

本节书摘来自华章出版社《面向机器智能的TensorFlow实践》一书中的第2章,第2.1节,作者 山姆·亚伯拉罕(Sam Abrahams)丹尼亚尔·哈夫纳(Danijar Hafner)[美] 埃里克·厄威特(Erik Erwitt)阿里尔·斯卡尔皮内里(Ariel Scarpinelli),更多章节内容可以访问云栖社区“华章计算机”公众号查看。






第2章

安装TensorFlow

在开始使用TensorFlow之前,需要先将其安装到计算机中。幸运的是,TensorFlow官网提供了一份在Linux和Mac OS X系统中安装TensorFlow的完整分步指南。本章对安装中将会出现的不同选项如何选择给出了一些建议,并提供了一些关于能够与TensorFlow很好地集成的其他第三方软件的信息。此外,本章还给出一份从源代码构建和安装TensorFlow的参考,以帮助用户安装带有GPU支持的TensorFlow。

如果用户对Pip/Conda、虚拟环境,或从源码安装程序已经非常熟悉,则可放心地参考如下官方指南:

https://www.tensorflow.org/versions/master/get_started/os_setup.html

2.1 选择安装环境

许多软件都会使用一些库和独立维护的软件包。对于开发者而言,这是一件好事,因为这种做法有利于代码复用,而且他们可专注于创建新的功能,而无需重复造轮。然而,这种做法也会付出一定的代价。如果某个程序的正常运行必须依赖于另一个库,则用户或这款软件必须确保任何运行该程序代码的机器都已安装了依赖库。乍看上去,这几乎不算一个问题—只需随这款软件一起安装所需的依赖库不就行了?不幸的是,这种方法会带来一些意想不到的后果,而且常常如此。

设想如下场景:你找到一款出色的软件—软件A,下载后开始安装。在执行其安装脚本时,软件A需要另外一款依赖软件。如果你的计算机中缺少这个依赖软件,则需进行安装。我们称之为软件依赖项(software dependency)。假设该依赖项的当前版本号为1.0。软件A先安装1.0版的依赖项,然后再对自身进行安装,一切都进行得很顺利。再假设将来的某个时候,你偶然发现了另一款希望安装的软件—软件B。软件B需要使用2.0版的依赖项,相对于1.0版,这个版本做出了重大改进,且不具备向下兼容性。鉴于这个依赖项的发行方式,无法做到1.0和2.0两个版本同时运行,因为这将导致使用它时产生二义性(这两个版本的都会作为依赖项被导入,应使用哪个版本?)。最终,软件B将用2.0版的依赖项覆盖1.0版,并完成自身的安装。经历一番艰辛后,你才发现软件A与2.0版依赖项不兼容,因此完全被破坏,情况顿时变得很糟。如何才能在同一台机器上既可运行软件A,也可运行软件B?这个问题非常重要,因为TensorFlow也依赖于若干开源软件。利用Python(用于将TensorFlow打包的编程语言),可采取多种方式避免上述依赖冲突问题。

代码库内部的软件包依赖。无需依赖于系统级的软件包或库,开发者可将所需版本的依赖库放在自己的代码中,并在局部引用。按照这种方式,软件所需的所有代码都是可直接操控的,不会受到外部变动的影响。然而,这种方式并非无懈可击。首先,它增加了安装该软件所需的磁盘空间,这意味着安装时间更长、使用成本更高。其次,用户可能已经以全局方式安装了依赖库,这意味着局部版本完全是多余的,会占用不必要的空间。最后,依赖库在将来可能会推出修复若干严重安全漏洞的关键的、保持向下兼容性的更新。这时,对代码库中依赖库的更新将无法借助软件包管理器,而只能由软件开发者手工完成。不幸的是,最终用户对此无从插手,因为何时直接包含依赖库完全是由开发者决定的。有一些依赖库由于没有被包含进TensorFlow,因此必须单独安装。

使用依赖环境。一些软件包管理器中包含可创建虚拟环境的相关软件。在一个环境中可完全独立地维护特定版本的软件而不受其他环境的影响。借助Python,有多种选择。对于Python的标准发行版,Virtualenv是直接可用的。如果使用的是Anaconda,它会包含一个内置的虚拟环境系统及其软件包管理器—Conda。稍后,笔者将会介绍如何使用这两种工具安装TensorFlow。

使用容器。容器(如Docker)是将软件与完整的文件系统,包括其运行时和依赖库打包的轻量级方案。因此,任何可运行一个容器的机器(包括虚拟机在内)都能够与任何运行该容器的其他机器对其中所包含的软件获得完全相同的运行效果。与简单地激活Virtualenv环境或Conda环境相比,虽然从Docker中启动TensorFlow需要略多一点的步骤,但当需要将代码在不同实例(无论是虚拟机还是物理的服务器)上进行部署时,它在不同运行时环境中的一致性使其成为无价之宝。下文将介绍如何安装Docker,并创建你自己的TensorFlow容器(以及如何使用官方的TensorFlow镜像)。

一般而言,如果准备在单机上安装和使用TensorFlow,笔者建议采用Virtualenv或Conda的虚拟环境。它们能够以较小的代价解决依赖冲突问题,且易于设置。一旦创建完毕,便几乎一劳永逸。如果准备将TensorFlow代码部署到一台或多台服务器中,则值得创建一个Docker容器镜像。虽然所需的步骤略多,但却会大大降低在多服务器上部署的成本。笔者不推荐既不使用虚拟环境,也不使用容器的TensorFlow安装方法。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
在C#“.NET技术”中选择正确的集合进行编码
  要选择正确的集合,我们首先要了解一些数据结构的知识。所谓数据结构,就是相互之间存在一种或多种特定关系的数据元素的集合。上海网站建设结合下图,我们看一下对集合的分类。   集合分类   在上图中,可以看到,集合总体上分为线性集合和非线性集合。
665 0
RoadFlow工作流引擎安装与部署
RoadFlow工作流引擎安装与部署
1471 0
Asp.Net Web API 2第六课——Web API路由和动作选择
原文:Asp.Net Web API 2第六课——Web API路由和动作选择 Asp.Net Web API 导航       Asp.Net Web API第一课——入门http://www.cnblogs.
662 0
空无达摩院——机器智能技术的发展
本次视频空无达摩院通过图像视觉、语言交互、自然语言处理、决策智能四个方向以及应用产品的介绍,向大家分享机器智能技术的发展,通过分析“大数据+算力”,讲解当今AI发展的动力,最后给大家分享了AI关键技术,希望通过技术创造新商业。
410 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载