關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
面向機(jī)器智能的TensorFlow實(shí)踐
本書(shū)共有4部分,分9章。第壹部分對(duì)TensorFlow的歷史脈絡(luò)進(jìn)行了簡(jiǎn)要的梳理,介紹在安裝TensorFlow時(shí)應(yīng)當(dāng)考慮的因素,并給出了詳細(xì)的TensorFlow安裝指南;第二部分深入介紹TensorFlowAPI的基礎(chǔ)知識(shí);第三部分關(guān)注一種更為復(fù)雜的深度學(xué)習(xí)模型,首先對(duì)模型進(jìn)行描述,然后介紹如何用可視化的數(shù)據(jù)流圖表示所要?jiǎng)?chuàng)建的模型,以及如何利用TensorFlow有效地構(gòu)建這些模型;本書(shū)的后一部分探討TensorFlowAPI中新推出的特性,內(nèi)容包括如何準(zhǔn)備用于部署的模型、一些有用的編程模式,以及其他精選主題。
TensorFlow入門權(quán)*指南
谷歌研發(fā)一線工程師參與撰寫,生動(dòng)講解TensorFlow底層原理
The Translator's Words
譯 者 序
我們正處在一個(gè)激動(dòng)人心的時(shí)代,深度學(xué)習(xí)作為近年來(lái)最具突破性的技術(shù)之一,極大地推動(dòng)了人工智能領(lǐng)域的研究進(jìn)程,并迅速滲透各行各業(yè),同時(shí)帶動(dòng)了一大批如家庭服務(wù)機(jī)器人、自動(dòng)駕駛這樣的新興產(chǎn)業(yè)。不夸張地說(shuō),深度學(xué)習(xí)技術(shù)正在深刻地影響著人們的工作、生活和思維方式。
為了幫助人們更高效地從事深度學(xué)習(xí)研究和應(yīng)用,并積極分享其研究成果,優(yōu)秀的開(kāi)源深度學(xué)習(xí)框架如雨后春筍般不斷涌現(xiàn)。作為深度學(xué)習(xí)領(lǐng)域巨擘之一的Google也在2015年11月將自己的第二代分布式機(jī)器學(xué)習(xí)系統(tǒng)TensorFlow開(kāi)源。雖然發(fā)布時(shí)間較晚,但憑借Google在業(yè)內(nèi)廣泛而巨大的影響力以及頂尖的人工智能研究水平,其代碼的簡(jiǎn)潔性、部署的便利性,以及在學(xué)術(shù)研究和產(chǎn)品研發(fā)兩端取得的良好平衡,在極短的時(shí)間內(nèi)便從眾多優(yōu)秀的深度學(xué)習(xí)框架中脫穎而出,獲得了廣大開(kāi)發(fā)者的強(qiáng)烈關(guān)注。自公開(kāi)發(fā)布以來(lái),TensorFlow始終保持著兼收并蓄的態(tài)勢(shì),不斷地從其他優(yōu)秀開(kāi)源框架中汲取優(yōu)秀特性,在廣大研究和開(kāi)發(fā)人員的強(qiáng)力推動(dòng)下,不斷快速迭代并大幅提升代碼的效率,平均每周的代碼更新量都超過(guò)了萬(wàn)行,所形成的社區(qū)開(kāi)創(chuàng)了空前的活躍度。完全可以預(yù)見(jiàn),TensorFlow將長(zhǎng)期位列一流開(kāi)源框架的行列。
雖然TensorFlow的優(yōu)點(diǎn)數(shù)不勝數(shù),但其“不足”也較為突出,那就是其接口過(guò)于復(fù)雜,對(duì)初學(xué)者的編程技能和知識(shí)水平要求偏高,學(xué)習(xí)曲線過(guò)陡。本書(shū)的問(wèn)世在一定程度上緩解了這個(gè)矛盾。本書(shū)的幾位作者都來(lái)自Google的研發(fā)一線,他們用自己的寶貴經(jīng)驗(yàn),結(jié)合眾多高質(zhì)量的代碼,生動(dòng)講解了TensorFlow的底層原理,并從實(shí)戰(zhàn)角度介紹了如何將兩種常見(jiàn)模型——深度卷積網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)應(yīng)用到圖像理解和自然語(yǔ)言處理的典型任務(wù)中。難能可貴的是,他們還介紹了在模型部署和編程中可用的諸多實(shí)用技巧?傊緯(shū)非常適合TensorFlow的入門學(xué)習(xí)。
需要說(shuō)明的是,這并不是一本機(jī)器學(xué)習(xí)理論或深度學(xué)習(xí)的入門讀物,閱讀本書(shū)需要讀者對(duì)經(jīng)典機(jī)器學(xué)習(xí)理論和算法、深度卷積網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)的基本原理有初步的了解,并對(duì)Python編程和常用的Python庫(kù)(如NumPy和matplotlib)較為熟悉。另外,本書(shū)的代碼是基于TensorFlow 0.8版的,譯者對(duì)0.9版所做的接口變動(dòng)以“譯者注”的形式做了部分說(shuō)明,并對(duì)原書(shū)中的一些錯(cuò)誤進(jìn)行了訂正。盡管TensorFlow 1.0版已經(jīng)正式發(fā)布,接口升級(jí)相比以往任何一版都要更多,但筆者認(rèn)為讀者朋友大可不必過(guò)于擔(dān)憂。只要清楚地掌握了TensorFlow的基本原理和Python編程,并勤于借助互聯(lián)網(wǎng),相信接口問(wèn)題都可迎刃而解。同時(shí),為方便廣大讀者的學(xué)習(xí),原書(shū)作者和譯者也會(huì)抽時(shí)間對(duì)本書(shū)中的實(shí)例代碼按照TensorFlow最新版本進(jìn)行升級(jí),請(qǐng)大家關(guān)注原出版社和機(jī)械工業(yè)出版社相關(guān)主題的后續(xù)圖書(shū)。
感謝機(jī)械工業(yè)出版社張夢(mèng)玲編輯在本書(shū)翻譯過(guò)程中給予的諸多幫助,也感謝家人對(duì)我無(wú)微不至的關(guān)心。
深入理解深度學(xué)習(xí),從了解優(yōu)秀的開(kāi)源框架開(kāi)始,愿讀者朋友們的TensorFlow學(xué)習(xí)之旅一帆風(fēng)順!
段菲
2017年3月3日
PREFACE
前 言
歡迎
自2015年11月TensorFlow第一個(gè)開(kāi)源版本發(fā)布以來(lái),它便迅速躋身于最激動(dòng)人心的機(jī)器學(xué)習(xí)庫(kù)的行列,并在科研、產(chǎn)品和教育等領(lǐng)域正在得到日益廣泛的應(yīng)用。這個(gè)庫(kù)也在不斷地得到改進(jìn)、充實(shí)和優(yōu)化。與此同時(shí),TensorFlow社區(qū)正以驚人的速度發(fā)展壯大。無(wú)論你是新手還是有經(jīng)驗(yàn)的用戶,筆者都希望通過(guò)本書(shū)幫助你提升使用TensorFlow的能力,使你自如地充分利用這個(gè)功能強(qiáng)大的開(kāi)源庫(kù)。
本書(shū)的內(nèi)容編排
第一部分:開(kāi)啟TensorFlow之旅
本書(shū)第一部分將幫助讀者做好使用TensorFlow的準(zhǔn)備。第1章為引言,對(duì)TensorFlow的歷史脈絡(luò)進(jìn)行了簡(jiǎn)要的梳理,并對(duì)TensorFlow的設(shè)計(jì)模式以及選擇TensorFlow作為深度學(xué)習(xí)庫(kù)的優(yōu)勢(shì)和面臨的挑戰(zhàn)進(jìn)行了討論。
引言之后的第2章將介紹安裝TensorFlow時(shí)應(yīng)當(dāng)考慮的因素,并給出了詳細(xì)的TensorFlow安裝指南,即如何從二進(jìn)制安裝包安裝和從源碼構(gòu)建TensorFlow。
第二部分:TensorFlow與機(jī)器學(xué)習(xí)基礎(chǔ)
從第3章開(kāi)始,進(jìn)入本書(shū)第二部分。在TensorFlow安裝完畢后,第3章將深入介紹TensorFlow API的基礎(chǔ)知識(shí),而不會(huì)涉及過(guò)多的機(jī)器學(xué)習(xí)概念。這樣做是為了將“學(xué)習(xí)TensorFlow”和“學(xué)習(xí)如何利用TensorFlow從事機(jī)器學(xué)習(xí)相關(guān)工作”區(qū)分開(kāi)來(lái)。第3章將對(duì)TensorFlow API中許多重要的部分進(jìn)行深入剖析。此外,還將演示如何用可視化的數(shù)據(jù)流圖表示模型,并將其轉(zhuǎn)化為TensorFlow代碼,以及如何利用TensorBoard驗(yàn)證數(shù)據(jù)流圖是否被正確建模。
介紹完TensorFlow API的核心概念之后,便進(jìn)入第4章。這一章將利用TensorFlow實(shí)現(xiàn)一些簡(jiǎn)單的機(jī)器學(xué)習(xí)模型,如線性回歸、對(duì)數(shù)幾率回歸(logistic regression)和聚類模型。
第三部分:用TensorFlow實(shí)現(xiàn)更高級(jí)的深度模型
第三部分由兩章構(gòu)成,每章都只關(guān)注一種更為復(fù)雜的深度學(xué)習(xí)模型。每章首先對(duì)模型進(jìn)行描述,然后介紹如何用可視化的數(shù)據(jù)流圖表示所要?jiǎng)?chuàng)建的模型。這兩章還將討論為什么要以特定方式構(gòu)建這些模型,并對(duì)所涉及的數(shù)學(xué)難點(diǎn)進(jìn)行講解,之后再介紹如何利用TensorFlow有效地構(gòu)建這些模型。
所要研究的第一個(gè)模型是卷積神經(jīng)網(wǎng)絡(luò)(CNN),對(duì)應(yīng)于第5章。該章會(huì)介紹如何使用圖像數(shù)據(jù)訓(xùn)練TensorFlow模型,并對(duì)卷積的數(shù)學(xué)原理和使用目的展開(kāi)討論,同時(shí)還將介紹如何將圖像裸數(shù)據(jù)轉(zhuǎn)化為一種與TensorFlow兼容的格式,以及如何對(duì)最終的輸出進(jìn)行測(cè)試。
第6章將探討如何使用TensorFlow正確地構(gòu)建循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)模型。通過(guò)各種自然語(yǔ)言處理(NLP)任務(wù),讀者將了解如何利用長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)(LSTM)以及如何將預(yù)訓(xùn)練的詞向量包含到模型中。
第四部分:其他提示、技術(shù)與特性
本書(shū)最后一部分將探討TensorFlow API中最新推出的特性,內(nèi)容包括如何準(zhǔn)備用于部署的模型、一些有用的編程模式,以及其他精選主題。
其他機(jī)器學(xué)習(xí)庫(kù)
TensorFlow并非唯一可用的開(kāi)源機(jī)器學(xué)習(xí)庫(kù)。下面列出一份可用于深度學(xué)習(xí)的簡(jiǎn)短開(kāi)源庫(kù)清單:
Caffe專注于卷積神經(jīng)網(wǎng)絡(luò)和圖像處理,使用C++語(yǔ)言編寫。
Chainer是另一個(gè)靈活的機(jī)器學(xué)習(xí)Python庫(kù),支持單機(jī)多GPU運(yùn)算。
CNTK是微軟公司發(fā)布的首個(gè)開(kāi)源機(jī)器學(xué)習(xí)庫(kù),它擁有自己的模型定義語(yǔ)言,支持聲明式的分布式模型構(gòu)建。
Deeplearning4j是一個(gè)專門針對(duì)神經(jīng)網(wǎng)絡(luò)的Java庫(kù),它易于與Spark、Hadoop和其他基于Java的分布式軟件集成,具有良好的可伸縮性。
Nervana Neon是一個(gè)高效的Python機(jī)器學(xué)習(xí)庫(kù),支持單機(jī)多GPU運(yùn)算。
Theano是一個(gè)極為靈活的Python機(jī)器學(xué)習(xí)庫(kù),因其出眾的用戶友好性以及可以用異常簡(jiǎn)單的方式定義復(fù)雜模型等特點(diǎn),在科研領(lǐng)域深受歡迎。TensorFlow的API與Theano API最為相似。
Torch是一個(gè)專注于GPU實(shí)現(xiàn)的機(jī)器學(xué)習(xí)庫(kù),它是用Lua語(yǔ)言編寫的,并由來(lái)自若干家大公司的研究團(tuán)隊(duì)提供支持。
限于篇幅,本書(shū)不打算對(duì)上述這些庫(kù)的優(yōu)缺點(diǎn)展開(kāi)深入討論,但如果有時(shí)間,非常值得深入展開(kāi)。TensorFlow的作者在進(jìn)行框架設(shè)計(jì)時(shí),便是從當(dāng)中的幾個(gè)庫(kù)汲取了靈感。
先修知識(shí)
雖然本書(shū)主要關(guān)注TensorFlow API,但筆者希望讀者已經(jīng)熟悉大量數(shù)學(xué)和編程概念,包括:
微積分(一元和多元)
矩陣代數(shù)(尤其是矩陣乘法)
基本的編程原理
機(jī)器學(xué)習(xí)的基本概念
此外,讀者若能夠掌握下列知識(shí),則將從本書(shū)中獲得更大的收獲:
擁有Python編程及模塊組織的經(jīng)驗(yàn)
擁有NumPy庫(kù)的使用經(jīng)驗(yàn)
擁有matplotlib庫(kù)的使用經(jīng)驗(yàn)
掌握機(jī)器學(xué)習(xí)中更高級(jí)的概念,尤其是前饋神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)
在適宜的時(shí)候,筆者會(huì)通過(guò)一些提示信息幫助讀者重新熟悉那些為充分理解相關(guān)數(shù)學(xué)和Python概念所必需的概念。
預(yù)期的收獲
通過(guò)閱讀本書(shū),讀者將掌握以下內(nèi)容:
TensorFlow的核心API
TensorFlow的工作流:數(shù)據(jù)流圖的定義和數(shù)據(jù)流圖的執(zhí)行
如何在各種設(shè)備上安裝TensorFlow
組織代碼和項(xiàng)目的最佳實(shí)踐
如何用TensorFlow創(chuàng)建核心機(jī)器學(xué)習(xí)模型
如何用TensorFlow實(shí)現(xiàn)RNN和CNN
如何用TensorFlow Serving部署代碼
利用TensorBoard分析模型的基礎(chǔ)知識(shí)
在學(xué)習(xí)完本書(shū)之后,如果讀者想對(duì)TensorFlow獲得更多了解,可參考下列資源:
TensorFlow官網(wǎng) 其中包含最新的文檔、API和入門材料。
TensorFlow Github代碼庫(kù) 在此,可對(duì)TensorFlow的開(kāi)源實(shí)現(xiàn)做出貢獻(xiàn),并直接對(duì)源代碼進(jìn)行審查。
官方發(fā)布的用TensorFlow實(shí)現(xiàn)的機(jī)器學(xué)習(xí)模型 可原封不動(dòng)地使用這些模型,也可稍加調(diào)整以適合自己的設(shè)計(jì)目的。
谷歌研究院的博客(Google Research Blog) 提供了來(lái)自谷歌的有關(guān)TensorFlow的應(yīng)用和更新的最新消息。
Kaggle 獲取公開(kāi)數(shù)據(jù)集并與其他從事數(shù)據(jù)分析工作的人開(kāi)展競(jìng)賽的絕佳網(wǎng)站。
Data.gov 美國(guó)政府的門戶網(wǎng)站,從中可找到全美國(guó)的公開(kāi)數(shù)據(jù)集。
至此,“動(dòng)員演講”已經(jīng)結(jié)束,現(xiàn)在讓我們開(kāi)啟本書(shū)的學(xué)習(xí)之旅吧!
山姆·亞伯拉罕:數(shù)據(jù)科學(xué)家、工程師,富有經(jīng)驗(yàn)的TensorFlow貢獻(xiàn)者。
丹尼亞爾·哈夫納:谷歌軟件工程師
埃里克·厄威特:高級(jí)軟件工程師
阿里爾·斯卡爾皮內(nèi)里:團(tuán)隊(duì)負(fù)責(zé)人,高級(jí)Java開(kāi)發(fā)者
段菲,清華大學(xué)信號(hào)與信息處理專業(yè)博士,前三星電子中國(guó)研究院高級(jí)研究員,現(xiàn)為英特爾中國(guó)研究院高級(jí)研究員。研究方向是深度學(xué)習(xí)、計(jì)算機(jī)視覺(jué)、數(shù)據(jù)可視化。參與翻譯過(guò)《機(jī)器學(xué)習(xí)》《機(jī)器學(xué)習(xí)實(shí)踐:測(cè)試驅(qū)動(dòng)的開(kāi)發(fā)方法》《DirectX103D游戲編程深度探索》等多本圖書(shū)。
CONTENTS
目錄
譯者序
前言
第一部分 開(kāi)啟TensorFlow之旅
第1章 引言2
1.1 無(wú)處不在的數(shù)據(jù)2
1.2 深度學(xué)習(xí)2
1.3 TensorFlow:一個(gè)現(xiàn)代的機(jī)器學(xué)習(xí)庫(kù)3
1.4 TensorFlow:技術(shù)概要3
1.5 何為TensorFlow4
1.5.1 解讀來(lái)自官網(wǎng)的單句描述4
1.5.2 單句描述未體現(xiàn)的內(nèi)容6
1.6 何時(shí)使用TensorFlow7
1.7 TensorFlow的優(yōu)勢(shì)8
1.8 使用TensorFlow所面臨的挑戰(zhàn)9
1.9 高歌猛進(jìn)9
第2章 安裝TensorFlow10
2.1 選擇安裝環(huán)境10
2.2 Jupyter Notebook與matplotlib12
2.3 創(chuàng)建Virtualenv環(huán)境12
2.4 TensorFlow的簡(jiǎn)易安裝13
2.5 源碼構(gòu)建及安裝實(shí)例:在64位Ubuntu Linux上安裝GPU版TensorFlow14
2.5.1 安裝依賴庫(kù)14
2.5.2 安裝Bazel15
2.5.3 安裝CUDA軟件(僅限NVIDIA GPU)16
2.5.4 從源碼構(gòu)建和安裝TensorFlow18
2.6 安裝Jupyter Notebook20
2.7 安裝matplotlib20
2.8 測(cè)試TensorFlow、Jupyter Notebook及matplotlib21
2.9 本章小結(jié)23
第二部分 TensorFlow與機(jī)器學(xué)習(xí)基礎(chǔ)
第3章 TensorFlow基礎(chǔ)26
3.1 數(shù)據(jù)流圖簡(jiǎn)介26
3.1.1 數(shù)據(jù)流圖基礎(chǔ)26
3.1.2 節(jié)點(diǎn)的依賴關(guān)系29
3.2 在TensorFlow中定義數(shù)據(jù)流圖33
3.2.1 構(gòu)建第一個(gè)TensorFlow數(shù)據(jù)流圖33
3.2.2 張量思維39
3.2.3 張量的形狀43
3.2.4 TensorFlow的Operation44
3.2.5 TensorFlow的Graph對(duì)象46
3.2.6 TensorFlow Session48
3.2.7 利用占位節(jié)點(diǎn)添加輸入52
3.2.8 Variable對(duì)象53
3.3 通過(guò)名稱作用域組織數(shù)據(jù)流圖56
3.4 練習(xí):綜合運(yùn)用各種組件61
3.4.1 構(gòu)建數(shù)據(jù)流圖63
3.4.2 運(yùn)行數(shù)據(jù)流圖66
3.5 本章小結(jié)71
第4章 機(jī)器學(xué)習(xí)基礎(chǔ)72
4.1 有監(jiān)督學(xué)習(xí)簡(jiǎn)介72
4.2 保存訓(xùn)練檢查點(diǎn)74
4.3 線性回歸76
4.4 對(duì)數(shù)幾率回歸78
4.5 softmax分類83
4.6 多層神經(jīng)網(wǎng)絡(luò)85
4.7 梯度下降法與誤差反向傳播算法88
第三部分 用TensorFlow實(shí)現(xiàn)更高級(jí)的深度模型
第5章 目標(biāo)識(shí)別與分類96
5.1 卷積神經(jīng)網(wǎng)絡(luò)97
5.2 卷積100
5.2.1 輸入和卷積核100
5.2.2 跨度102
5.2.3 邊界填充104
5.2.4 數(shù)據(jù)格式104
5.2.5 深入探討卷積核105
5.3 常見(jiàn)層107
5.3.1 卷積層108
5.3.2 激活函數(shù)108
5.3.3 池化層111
5.3.4 歸一化113
5.3.5 高級(jí)層114
5.4 圖像與TensorFlow116
5.4.1 加載圖像116
5.4.2 圖像格式117
5.4.3 圖像操作121
5.4.4 顏色127
5.5 CNN的實(shí)現(xiàn)129
5.5.1 Stanford Dogs數(shù)據(jù)集129
5.5.2 將圖像轉(zhuǎn)為TFRecord文件130
5.5.3 加載圖像133
5.5.4 模型134
5.5.5 訓(xùn)練136
5.5.6 用TensorBoard調(diào)試濾波器137
5.6 本章小結(jié)139
第6章 循環(huán)神經(jīng)網(wǎng)絡(luò)與自然語(yǔ)言處理140
6.1 循環(huán)神經(jīng)網(wǎng)絡(luò)簡(jiǎn)介140
6.1.1 時(shí)序的世界140
6.1.2 近似任意程序141
6.1.3 隨時(shí)間反向傳播142
6.1.4 序列的編碼和解碼143
6.1.5 實(shí)現(xiàn)第一個(gè)循環(huán)神經(jīng)網(wǎng)絡(luò)145
6.1.6 梯度消失與梯度爆炸145
6.1.7 長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)147
6.1.8 RNN結(jié)構(gòu)的變種148
6.2 詞向量嵌入149
6.2.1 準(zhǔn)備維基百科語(yǔ)料庫(kù)151
6.2.2 模型結(jié)構(gòu)155
6.2.3 噪聲對(duì)比分類器156
6.2.4 訓(xùn)練模型156
6.3 序列分類157
6.3.1 Imdb影評(píng)數(shù)據(jù)集158
6.3.2 使用詞向量嵌入159
6.3.3 序列標(biāo)注模型159
6.3.4 來(lái)自最后相關(guān)活性值的softmax層161
6.3.5 梯度裁剪162
6.3.6 訓(xùn)練模型163
6.4 序列標(biāo)注164
6.4.1 OCR數(shù)據(jù)集164
6.4.2 時(shí)間步之間共享的soft-max層166
6.4.3 訓(xùn)練模型169
6.4.4 雙向RNN171
6.5 預(yù)測(cè)編碼174
6.5.1 字符級(jí)語(yǔ)言建模174
6.5.2 ArXiv摘要API175
6.5.3 數(shù)據(jù)預(yù)處理177
6.5.4 預(yù)測(cè)編碼模型178
6.5.5 訓(xùn)練模型182
6.5.6 生成相似序列185
6.6 本章小結(jié)188
第四部分 其他提示、技術(shù)與特性
第7章 產(chǎn)品環(huán)境中模型的部署190
7.1 搭建TensorFlow服務(wù)開(kāi)發(fā)環(huán)境190
7.1.1 Docker鏡像190
7.1.2 Bazel工作區(qū)191
7.2 導(dǎo)出訓(xùn)練好的模型192
7.3 定義服務(wù)器接口195
7.4 實(shí)現(xiàn)推斷服務(wù)器197
7.5 客戶端應(yīng)用201
7.6 產(chǎn)品準(zhǔn)備203
7.7 本章小結(jié)203
第8章 輔助函數(shù)、代碼結(jié)構(gòu)和類204
8.1 確保目錄結(jié)構(gòu)存在204
8.2 下載函數(shù)204
8.3 磁盤緩存修飾器205
8.4 屬性字典206
8.5 惰性屬性修飾器207
8.6 覆蓋數(shù)據(jù)流圖修飾器209
第9章 結(jié)語(yǔ):其他資源212
你還可能感興趣
我要評(píng)論
|