TensorFlow是谷歌2015年开源的主流深度学习框架,目前已得到广泛应用。本书为TensorFlow入门参考书,旨在帮助读者以快速、有效的方式上手TensorFlow和深度学习。书中省略了烦琐的数学模型推导,从实际应用问题出发,通过具体的TensorFlow示例介绍如何使用深度学习解决实际问题。书中包含深度学习的入门知识和大量实践经验,是走进这个前沿、热门的人工智能领域的优选参考书。
第2版将书中所有示例代码从TensorFlow 0.9.0升级到了TensorFlow 1.4.0。在升级API的同时,第2版也补充了更多只有TensorFlow 1.4.0才支持的功能。另外,第2版还新增两章分别介绍TensorFlow高层封装和深度学习在自然语言领域应用的内容。
本书适用于想要使用深度学习或TensorFlow的数据科学家、工程师,希望了解深度学习的大数据平台工程师,对人工智能、深度学习感兴趣的计算机相关从业人员及在校学生等。
领域旗舰重磅升级 新老谷歌专家联袂 首度全面支持1.4.x代码 大量增补新版独有核心功能|专题
郑泽宇,2011年获北京大学计算机学士学位,2013年获卡内基梅隆大学计算机硕士学位,前谷歌高级工程师,现为才云科技(Caicloud.io)联合创始人、首席大数据科学家。针对分布式TensorFlow上手难、管理难、监控难、上线难等问题,带领团队成功开发国内首个成熟的分布式TensorFlow深度学习平台,在机器学习、人工智能领域有着丰富的经验。
梁博文,谷歌工程师。2011年获北京大学计算机学士学位,2013年获哥伦比亚大学计算机硕士学位,同年加入谷歌翻译组,参与并领导了多个项目,负责了3个语言的翻译模型的研发工作,在自然语言处理方面有丰富经验,在统计翻译模型、神经网络翻译模型、语料数据清洗等方面均有深入研究。
“深度学习”这个词在过去的一年之中已经轰炸了媒体、技术博客甚至朋友圈。这也许正是你会读到本书的原因之一。数十年来,人工智能技术虽不断发展,但像深度学习这样在学术界和工业界皆具颠覆性的技术实在是十年难遇。可惜的是,理解和灵活运用深度学习并不容易,尤其是其复杂的数学模型,让不少感兴趣的同学很快“从入门到放弃”。在本书第1版前,很难找到从实战出发的深度学习和TensorFlow参考书,这也是笔者在工作之余熬夜撰写这本书的动力。笔者本人作为一枚标准码农、创业党,希望这本书能够帮助码农和准码农们绕过深度学习复杂的数据公式,快速上手深度学习,解决工作、学习中的实际问题。
2016年初,笔者和小伙伴们从美国谷歌辞职,回到祖国并在杭州联合创办了才云科技(Caicloud.io),为企业提供人工智能平台和解决方案。回国之初,很多企业对于TensorFlow都显示出了浓厚的兴趣,然而在深度交流之后,发现TensorFlow虽然是一款非常容易上手的工具,但是深度学习的技术并不是每一家企业都能掌握的。为了让更多的人和企业可以享受到深度学习技术带来的福利,笔者与电子工业出版社的张春雨编辑一拍即合,开始了本书的撰写工作。
使用TensorFlow实现深度学习是本书介绍的重点。本书将从TensorFlow的安装开始,依次介绍TensorFlow的基本概念、使用TensorFlow实现全连接深层神经网络、卷积神经网络和循环神经网络等深度学习算法,以及TensorFlow并行化输入数据处理流程、TensorBoard可视化工具、TensorFlow高层封装、带GPU的分布式TensorFlow使用方法。在介绍使用TensorFlow实现不同深度学习算法的同时,也介绍了这些算法背后的理论,并列举了这些算法可以解决的具体问题。本书避开了枯燥复杂的数学公式,从实际问题出发,在实践中介绍深度学习的概念和TensorFlow的用法。
本书第1版出版之后,笔者收到了广大读者的踊跃来信。信中既充分肯定了第1版对他们学习TensorFlow和深度学习的帮助,又提出了对更新TensorFlow版本和其他新内容的期待,这正是笔者开始撰写第2版的强大动力。第1版中大部分示例都是与计算机视觉相关的,为了更好地介绍与自然语言处理相关的内容,笔者特别邀请了在Google翻译组工作了5年的梁博文来撰写这部分内容。第2版中将有专门的一个章节介绍语言模型、Seq2Seq模型、注意力(attention)模型等自然语言应用。
TensorFlow是一个飞速发展的工具。第1版在写作时的最新版本为0.9.0,然而到第1版出版时,谷歌已经推出了TensorFlow的第一个正式版1.0.0。相比第1版中使用的TensorFlow 0.9.0,TensorFlow 1.0.0以后的版本对API也进行了大量调整,之前的大量示例代码已经无法正常运行。第2版在更新示例API版本的同时,对TensorFlow 0.9.0之后推出的重要新功能也进行了详细介绍,希望能够帮助读者更好地使用TensorFlow。
为了让广大读者更好地理解和使用书中的示例代码,我们为大家提供了一个完全公开的GitHub代码库来维护TensorFlow不同版本的示例程序。该代码库的网址为https://github.com/caicloud/tensorflow-tutorial。笔者衷心地希望各位读者能够从本书中获益,这也是对我们最大的支持和鼓励。对于书中出现的任何错误或者不准确的地方,欢迎大家批评指正,并发送邮件至zeyu@caicloud.io。
读者也可以登录博文视点官网http://www.broadview.com.cn,下载本书代码或提交勘误信息。一旦勘误信息被作者或编辑确认,即可获得博文视点奖励积分,用于兑换电子书。读者可以随时浏览图书页面,查看已发布的勘误信息。
致谢
在此我要特别感谢为此书做出贡献的每一个人。
首先,我要感谢所有的读者。在第1版出版之后,我收到了大量的读者来信。这些信中表达了对本书内容的喜爱,同时也给出了非常多的宝贵建议。广大读者的支持和鼓励正是我完成第2版的最大动力。在此,我再次感谢每一位读者,希望第2版中更多的干货值得大家投入宝贵的精力去阅读。
其次,我要感谢加入第2版写作的作者梁博文。在繁重的Google日常工作的同时,梁博文经常深夜撰写自然语言处理的相关内容并调试示例代码,非常辛苦。正是因为梁博文的辛勤付出,才让第2版中的内容更加全面。
最后,我要再次感谢在第1版写作过程中给予过我大力支持的所有人。没有他们的支持也就没有这本书的诞生——
在紧张的创业之余,才云科技CEO张鑫给了我极大的支持和鼓励,让我有足够的时间投入到此书第1版的撰写工作中。
我也要感谢我的妻子温苗苗以及我的父母、岳父岳母,没有他们一直以来的支持和帮助,我不可能完成此书的写作。每当遇到困难的时候,长辈们的鼓励是我前进的最大动力。
最后,我还要感谢所有为本书付出心血的电子工业出版社的编辑们。无论在本书的定位,还是在具体的文字推敲、编辑加工、版式设计上,张春雨、刘佳禾和孙奇俏都给予了巨大的帮助。
——郑泽宇
2017年12月
第四章-3.正则化-代码
Github源代码部分
plt.scatter(data[:,0], data[:,1], c=label, cmap="RdBu", vmin=-.2, vmax=1.2, edgecolor="white")
修改后
plt.scatter(data[:,0], data[:,1], c=np.squeeze(label), cmap="RdBu", vmin=-.2, vmax=1.2, edgecolor="white")
作者您好,我是北航在读的研二学生,我叫周鹏,今天刚开始看这本书,下面是我对书中的一点疑问或者建议:
在书中第8页,您举了个例子:设计一个系统来识别不同颜色不同型号的汽车,有两种方法:
1.设计的模型中,每一个神经元代表着“颜色+型号”
如果有N种类颜色,M种类型号,那么按照这种设计模式确实是NM的神经元
2.设计的模型中,一部分神经元代表“颜色”,一部分神经元代表“型号”
按照这种设计模式,确实是M+N个神经元
但是您接下来用这个例子引入了“让神经网络及宽度的方向从宽度走向了深度”,我觉得不妥。
原因如下:
1.不管是MN个神经元作为设计模型1的输入层,还是M+N个神经元作为设计模式2的输入层,都只是神经网络输入层表示的方式不同,如果我们默认第一个隐藏层神经元的个数是200个,那么按照设计模型1,我们可以得到第一层的权重W1的大小为(MN,200),同理,按照设计模型2,我们可以得到第一层的权重W1的大小为(M+N,200),所以设计模型2的参数个数为{(M+N)200+200}个,设计模型1的参数个数为{(MN)200+200},我们可以得到当M和N满足一个不等式{(1/N + 1/M)<1 }的时候,我们总是能得到模型2的参数个数是小于模型1的。
2.我猜测您的意思应该是想从全连接神经网络引入卷积神经网络,但是有瑕疵,神经网络并不像卷积神经网络一样每一层都有一个提取不同特征的功能,而是偏向于拟合。
3.您举的这个例子可以从 我上面的原因分析来导出一个结果:全连接神经网络的参数太大,所以我们需要用卷积神经网络,卷积神经网络可以从输入的数据中分特征提取,每一个特征放在“深度”的一层。
如果是我理解错误的话,还希望作者您可以把您写这段话的思路跟我解释一下,谢谢您。18811746117@163.com
图中右下角,有“绘图区”字样,应该去掉。
而且一个张量的结构 且 改为 是