4.2保存训练检查点 4.3线性回归 44对数几率同归 4.5sofx分类 46多层神经网络 4.7棁度下降法与误差反向传播算法 第三部分用 TensorFlow实现更高级的深度模型 第5章日标识别与分类 5.1卷积神经网络 5.2卷积 5.3常见层 54圖像与 Tensor Flow 5.5CNN的实现 5.6本章小结 第6章循环神经网络与自然语言处理 6.1循环神经网终简介 62词向量嵌入 63序列分类 64序列标注 6.5预测编码 66本章小结 第四部分其他提示、技术与特性 第7章产品环境中模型的部署 7.1搭建 TensorFlow服务开发环境 7.2导出训练好的模型 7.3定义服务器接口 7.4实现推断服务器 7.5客户端应用 7.6产品准备 7.7本嶂小结 第8章辅助函数、代码结构和类 8.1确保目录结构存在 82下载函数 8.3磁盘缓存修饰器 84属性字典 8.5惰性属性修饰器 8.6覆盖数据流图修饰器 第9章结语:其怹资源 译者序 我们正处在一个激动人心的时代,深度学习作为近年来最具突破性的技术之一,极大地推动∫人工智能领域的研究进程,并 迅速渗透各行各业,同时带动了一大批如家庭服务机器人、自动驾驶这样的新兴产业不夸张地说,深度学习技术正在深刻地影 响着人们的工作、生活和思维方式。 为了帮助人们更高效地从事深度学习研究和应用,并积极分享其硏究成果,优秀的开源深度学习框架如雨后春笋般不断涌 现莋为深庋学习领域巨擘之一的〔ooφ也在2015年11月将自己的第一代分布式机器学习系统 TensorFlow开源。虽然发布时间较 晚,但凭借 Google在业内广泛而巨大的影响仂以及顶尖的人工智能研究水平,其代码的简洁性、部署的便利性,以及在学术研究 和产品研发两端取得的良好平衡,在极短的时间內便从众多優秀的深度学习框架中脱颖而岀,获得了广大开发者的强烈关注自 公开发布以来, TensorFlow始终保持着兼收并蓄的态势,不断地从其他优秀开源框架中汲取优秀特性,在广大硏究和开发人员的 强力推动下,不断快速迭代并大幅提升代码的效率,平均每周的代码更新量都超过了万行,所形成的社区開创了空前的活跃度。 完全可以预见, TensorFlow将长期位列一流开源框架的行列 虽然 TensorFlow的优点数不胜数,但其不足’也较为突出,那就是其接口过于复杂,對初学者的编程技能和知识水平要求偏 高,学习曲线过陡。本书的问世在一定程度上缓解了这个矛盾本书的几位作者都米自Goog的研发一线,他們用自己的宝贵终 验,结合众多高质量的代码,生动讲解了 TensorFkow的底层原理,并从实战角度介绍了如何将两种常见模型—深度卷积网络 循环神经网终應用到图像理解和自然语言处理的典型仼务中。难能可赀的是,他们还介绍了在模型部署和编程中可用的诸多实用 技巧总之,本书非常适合 Tensorflow嘚入门学习。 需要说明的是,这并不是一本机器学习理论或深度学习的入门读物,阋读本书需要读者对经典机器学习理论和算法、深度卷 枳网終、循环神经网络的基木原理有初步的∫解,并对 Python编程和常用的 Python(如NuPy和naψ plots)较为熟悉另外,木 书的代码是基于τ ensorflow0.8版的,译者对09版所做的接口变动以“译者注旳的形式倣了部分说明,并对原书中的一些错误进行 了订正。尽管 Tensorflow10版已经正式发布,接口升级相比以往任何一版都要更多,但笔者认为讀者朋友大可不必过于担忧 只要淸楚地掌握∫ Tensor Flow的苤本原理和 Python缐程,并勤于借助互联网,相信接口问题都可迎刃而解。同时,为方便广大读 者的學习,原书作者和译者也会抽时间对本书中的实例代码按照 TcnsorFlow最新版本进行升级,请大家关注原出版社和机械T业 出版社相关主题的后续图书 感謝杋械工业岀版社张梦玲编辑在本书翻泽过程中给予的诸多帮助,也感谢家人对我无微不至的关心。 深入理解深度学习,从了解优秀的开源框架开始,愿读者朋友们的TεnsoFυw学,之旅一帆风顺! 段菲 2017年3月3日 前言 欢迎 自2015年11月 TensorFlow第·个源版本发布以来,它使迅速哜身于最激动人心的札器学习库的荇列,并在科研、产品和教 育等领域正在得到日益广泛的应用这个库也在不断地得到改进、充实和优化。与此同时, Tensorflow社区正以惊人的速度发展 壮大无论你是新手还是有经验的用户,笔者都希望通过本书帮助你提升使用 TensorFlow的能力,使你自如地充分利用这个功能 强大的开源库 本书的内嫆编排 第一部分:开启 TensorFlow之旅 本书第一部分将帮助读者做好使用 TensorFlow的准备。第1章为引言,对 TensorFlow竹历史脉络进行了简要的梳理,并对 Tensor Flow的设计模式以及选择 Tensorflow莋为深度学习库的优势和面临的挑战进行了讨论 引言之后的第2章将介绍*** TensorFlow时应当考虑的因素,并给出了详细的 TensorFlow***指南,即如何从二进制咹装包安 装和从源码构建 TensorFlow。 第二部分: Tensor Flow与机器学习基础 从第3章开始,进入本书第一部分在 TensorFlow***完毕后,第3章将深入介绍 TensorFlow AP的基础知识,而不会涉及過多 的机器学习概念。这样做是为了将学习 TensorFlow和“学习如何利用 TensorFlow从事机器学习相关工作区分开来第3章将对 TensorFlow AP中许多重要的部分进行深入剖析。此外,还将演示如何用可视化的数据流图表示模型,并将其转化为 TensorFlow代 码,以及如何利用 Tensor board验证数据流图是否被正确建模 介绍完 Tensor Flow ap的核心概念之后,便进入第4章。这一章将利用 Tensorflow实现一些简单的机器学习模型,如线性回 归、对数几率回归( logistic regression)和聚类模型 第三部分:用 Tensorflow实现更高级的深度模型 第三蔀分由两章枃成,每章都只关注一种更为复杂的深度学习模型。每章首先对模型进行描述,然后介绍如何用可视化的数 据流图表示所要创建的模型这两章还将讨论为什么要以特定方式构建这些模型,并对所涉及的数学难点进行讲解,之后再介绍 如何利用 TensorFlow有效地构建这些模型。 所要研宄的第一个模型是卷积神经网络(CNN),对应于第5章该章会介绍如何使用图像数据训练 TensorFlow模型,并对 卷积的数学原理和使用日的展开讨论,同时还将介绍如何将图像裸数椐转化为一种与 Tensor flow兼容的格式,以及如何对最终的 输出进行测试。 笫6章将探讨如何使用τ isofLow正确地枃建循环神经网终(RNN)模型通过各种自然语言处理(NIP)任务,读者将了 解如何利用长短时记忆网络(ISTM)以及如何将预训练的词向量包含到模型中。 第四部分:其他提示、技术与特性 本书最后一部分将探讨 TensorFlow AP中最新推出的特性,内容包括如何准备用于部署的模型、一些冇用的编程模式,以及 其他精选主题 其他机器学丬库 TensorFlow並非唯一可用的开源机器学习库。下面列出一份可用于深度学习的简短开源库清单: Ca能专注于卷积神经网络和图像处理,使用C艹语言编写 Chainer是另┅个灵活的机器学习 Python库,支持单机多GPU运算 CNIK是微软公司发布的首个开源机器学习库,它拥有自己的模型定义语言,支持声明式的分布式模型构建。 Deeplearning4是一个专门针对神经网络的Jaa库,它易于与 Spark、 Hadoop和其他基于Java的分布式软件集成,具有良好的可 仲缩 Nervana neon是一个高效的Pyhn机器学习厍,支持单机多GPU运算 Theano是一個极为灵活的 Python机器学习库,囚其出众的用户友好性以及可以用异常简单的方式定义复杂模型等特点,在科 研领域深受欢迎 TensorFlow的API与 Theano apl最为相似 Torch是一個专注于GPU现的机器学习库,它是用I语言编写的,并由米自若干家大公司的研究团队提供支持。 限于篇幅,本书不打算对上述这些库的优缺点展开罙入讨论,但如果有时间,非常值得深入展开 TensorFlow的作者在进行 框架设计时,便是从当中的几个库汲取了灵感 先修知识 虽然本书主要关注 TensorFlow AP′,但笔者唏望读者己经熟悉大量数学和编程慨念,包括: 微积分(一元和多元) 矩阵代数(尤其是矩阵乘法) 基本的编程原理 机器学习的基木概念 此外,读者若能夠掌握下列知识,则将从木书中获得史大的收获: 拥有Pydo编程及模块组织的经验 拥有 NumPy库的使用经验 拥有 matplothb库的使用经验 掌握机器学习中更髙级的概念,尤其是前馈神经网络、卷积神经网络和循环神经网络 在适宜的时候,笔者会通过一些提示信息帮助读者重新熟悉那些为充分理解相关数学囷 Python概念所必需的概念 预期的收获 通过阅读本书,读者将掌握以下内容: TensorFlow核心AP TensorFlow工作流:数揖流图的定义和数据流图的执行 如何在各和设备上*** Tensorflow 组織代码和项目的最佳实践 如何用 TensorFlow创建核心机器学习模型 如何用 TensorFlow实现RNN和CNN 如何用 TensorFlow Serving部署代码 利用 TensorBoard分析模型的基础知识 在学习完本书之后,如果读者想对 TensorFlow获得更多了解,可参考下列资源: TensorFlow官网其中包含最新的文档、API和入门材料 TensorFlow github代码库在此,可对 TensorFlow的开源实现做出贡献,并直接对源代码进行审查 官方发布的用 TensorFlow实现的杋器学习模型可原封不动地使用这些模型,也可稍加调整以适合自己的设计目的 谷歌研究院的博客( bogle Research Blog)提供了来自谷歌的有关 TensorFlow嘚应用和更新的最新消息。 Gaggle获取公开数据集并与其他从事数据分析工作的人开展竟赛的绝佳网站 Da.gov美国政府的门户网站,从中可找到全美国嘚公开数据集。 至此,‘动员演讲”经结束,现在让我们开启木书的学习之旅吧 第一部分开启 TensorFlow之旅 第1章引言 第2章*** TensorFlow 第1章引言 1.1无处不在的数据 峩们正实实在在地处于“信息时代”如今,各种数据从无竻无尽的渠道不断涌入:智能手机、手表、汽车、停车计时表、家 用电器。几乎仟哬一种能够说出名字的技术与生俱来都具备与位于云端的某个数据库进行通信的能力在看似无限的存储能力的 支持下,开发者们为数据仓庫选择了一种更多即是更好”的方法,存储着从他们的产品和客户那里收集到的以拍字节(PB)为单 位计的海量数据。 与此同时,计算机的性能也在歭续提升虽然CP的发展速度已经放缓,但并行处理架构取得了爆炸式的发展。一向主要服 务于计算机游戏的图形处理单元(GPU)如今已被大量运用於通用计算领域,并拉开了机器学习迅猛发展的序幕 机器学习(有时简记为ML)试图利用通用的数学模型回答涉及数据的特定问题。机器学习成功应用于垃圾邮件检测、产品 推荐(向客户〕、预测商品的价格等领或巳有多年近年来,种特殊类型的札器学习范式在儿乎所有领域郤取得叻无数巨大的 成功,它就是深度学习。