深度學(xué)習(xí)實(shí)戰(zhàn):基于TensorFlow 2和Keras(原書第2版)
定 價(jià):149 元
叢書名:智能系統(tǒng)與技術(shù)叢書
- 作者:[意]安東尼奧·古利(Antonio Gulli),[印]阿米塔·卡普爾(Amita Kapoor),[美]蘇吉特·帕爾(Sujit Pal)
- 出版時(shí)間:2021/8/1
- ISBN:9787111687719
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TP18
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書簡(jiǎn)潔且全面地介紹了現(xiàn)代神經(jīng)網(wǎng)絡(luò)、人工智能和深度學(xué)習(xí)技術(shù),專門為軟件工程師和數(shù)據(jù)科學(xué)家設(shè)計(jì)。第1章逐步介紹神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)知識(shí)。第2章比較TensorFlow 1.x和TensorFlow 2.0編程模型。第3章重點(diǎn)介紹回歸。第4章介紹卷積神經(jīng)網(wǎng)絡(luò)及其在圖像處理中的應(yīng)用。第5章討論了CNN在圖像、視頻、音頻和文本處理方面的高級(jí)應(yīng)用。第6章重點(diǎn)介紹生成對(duì)抗網(wǎng)絡(luò)。第7章介紹詞嵌入。第8章介紹基本嵌入方法的各種擴(kuò)展。第9章介紹自動(dòng)編碼器。第10章深入研究無(wú)監(jiān)督學(xué)習(xí)模型。第11章重點(diǎn)介紹強(qiáng)化學(xué)習(xí)。第12章介紹AutoML。第13章介紹用于移動(dòng)設(shè)備和物聯(lián)網(wǎng)的TensorFlow的基礎(chǔ)知識(shí)。第14章討論了云環(huán)境以及如何利用它來(lái)訓(xùn)練和部署模型。第15章討論了深度學(xué)習(xí)背后的數(shù)學(xué)。第16章介紹TPU。本書內(nèi)容豐富,易于理解,示例具有代表性,是學(xué)習(xí)深度學(xué)習(xí)的絕佳指南。
本書圍繞TensorFlow和Keras講解神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)技術(shù)。在這個(gè)強(qiáng)大、受歡迎、可擴(kuò)展的機(jī)器學(xué)習(xí)技術(shù)棧中,你將學(xué)習(xí)如何編寫深度學(xué)習(xí)應(yīng)用。TensorFlow是專業(yè)級(jí)應(yīng)用選用的機(jī)器學(xué)習(xí)庫(kù),而Keras提供了一個(gè)簡(jiǎn)單且強(qiáng)大的Python API來(lái)訪問TensorFlow。TensorFlow 2提供了完整的集成Keras,使高階機(jī)器學(xué)習(xí)比以往任何時(shí)候都更加輕松便捷。本書還介紹了基于TensorFlow的神經(jīng)網(wǎng)絡(luò),貫穿了主要的應(yīng)用(回歸、CNN、GAN、RNN、NLP),還涵蓋了兩個(gè)可用的示例應(yīng)用,并深入探討了生產(chǎn)環(huán)境下的TF、TF Mobile,以及TensorFlow與AutoML的結(jié)合使用。
本書簡(jiǎn)潔且全面地介紹了現(xiàn)代神經(jīng)網(wǎng)絡(luò)、人工智能和深度學(xué)習(xí)技術(shù),專門為軟件工程師和數(shù)據(jù)科學(xué)家設(shè)計(jì)。它是另外兩本著作Deep Learning with Keras[1]和TensorFlow 1.x Deep Learning Cookbook[2]的延續(xù)。
本書目標(biāo)
本書對(duì)過去幾年中深度學(xué)習(xí)技術(shù)的演進(jìn)做了概括,并給出了用Python寫的數(shù)十種可運(yùn)行的深度神經(jīng)網(wǎng)絡(luò)代碼,它們都是用基于類Keras[1] API的模塊化深度網(wǎng)絡(luò)庫(kù)TensorFlow 2.0實(shí)現(xiàn)的。
本書將循序漸進(jìn)地介紹有監(jiān)督學(xué)習(xí)算法,包括簡(jiǎn)單線性回歸、經(jīng)典多層感知器,以及更為復(fù)雜的深度卷積網(wǎng)絡(luò)和生成對(duì)抗網(wǎng)絡(luò)。本書還涵蓋無(wú)監(jiān)督學(xué)習(xí)算法,包括自編碼器和生成網(wǎng)絡(luò),并對(duì)循環(huán)網(wǎng)絡(luò)和長(zhǎng)短期記憶網(wǎng)絡(luò)進(jìn)行詳細(xì)解釋。此外,本書還會(huì)對(duì)深度強(qiáng)化學(xué)習(xí)進(jìn)行全面介紹,并涵蓋深度學(xué)習(xí)加速器(GPU和TPU)、云開發(fā)以及在桌面系統(tǒng)、云服務(wù)、移動(dòng)設(shè)備/物聯(lián)網(wǎng)(IoT)和瀏覽器上的多環(huán)境部署。
實(shí)際應(yīng)用包括將文本分類為預(yù)定義類別、語(yǔ)法分析、語(yǔ)義分析、文本合成以及詞性標(biāo)注。書中我們還會(huì)探討圖像處理,包括手寫數(shù)字圖像識(shí)別、圖像分類以及具有相關(guān)圖像注釋的高級(jí)對(duì)象識(shí)別。
聲音分析包括識(shí)別來(lái)自多個(gè)揚(yáng)聲器的離散語(yǔ)音。本書還介紹使用自編碼器和GAN生成圖像,使用強(qiáng)化學(xué)習(xí)技術(shù)構(gòu)建能夠自主學(xué)習(xí)的深度Q學(xué)習(xí)網(wǎng)絡(luò)。實(shí)驗(yàn)是本書的精髓。每個(gè)網(wǎng)絡(luò)都增加了多種變體,這些變體通過更改輸入?yún)?shù)、網(wǎng)絡(luò)形狀、損失函數(shù)和優(yōu)化算法來(lái)逐步提高學(xué)習(xí)性能。本書還提供在CPU、GPU和TPU上進(jìn)行訓(xùn)練的對(duì)比。本書將介紹新領(lǐng)域AutoML,在該領(lǐng)域中,我們將學(xué)習(xí)如何高效和自動(dòng)地構(gòu)建深度學(xué)習(xí)模型。第15章專門介紹機(jī)器學(xué)習(xí)相關(guān)的數(shù)學(xué)知識(shí)。
機(jī)器學(xué)習(xí)、人工智能和深度學(xué)習(xí)寒武紀(jì)爆炸
人工智能(Artificial Intelligence,AI)為本書討論的所有內(nèi)容奠定了基礎(chǔ)。機(jī)器學(xué)習(xí)(Machine Learning,ML)是AI的一個(gè)分支,而深度學(xué)習(xí)(Deep Learning,DL)又是ML中的一個(gè)子集。下面簡(jiǎn)要討論本書中經(jīng)常出現(xiàn)的這三個(gè)概念。
AI表示機(jī)器模仿人類通常表現(xiàn)出的智能行為的任何活動(dòng)。更正式地說,這是一個(gè)研究領(lǐng)域,機(jī)器旨在復(fù)制認(rèn)知能力,例如學(xué)習(xí)行為、與環(huán)境的主動(dòng)交互、推理和演繹、計(jì)算機(jī)視覺、語(yǔ)音識(shí)別、問題求解、知識(shí)表示和感知。AI建立在計(jì)算機(jī)科學(xué)、數(shù)學(xué)和統(tǒng)計(jì)學(xué)以及心理學(xué)和其他研究人類行為的科學(xué)的基礎(chǔ)上。建立AI有多種策略。在20世紀(jì)70年代和20世紀(jì)80年代,專家系統(tǒng)變得非常流行。這些系統(tǒng)的目標(biāo)是通過用大量手動(dòng)定義的if-then規(guī)則表示知識(shí)來(lái)解決復(fù)雜的問題。這種方法適用于非常特定的領(lǐng)域中的小問題,但無(wú)法擴(kuò)展到較大的問題和多領(lǐng)域中。后來(lái),AI越來(lái)越關(guān)注基于統(tǒng)計(jì)的方法。
ML是AI的一個(gè)子學(xué)科,它專注于教授計(jì)算機(jī)如何對(duì)特定任務(wù)進(jìn)行學(xué)習(xí)而無(wú)須編程。ML背后的關(guān)鍵思想是可以創(chuàng)建從數(shù)據(jù)中學(xué)習(xí)并做出預(yù)測(cè)的算法。ML有三類:
有監(jiān)督學(xué)習(xí),向機(jī)器提供輸入數(shù)據(jù)及期望輸出,目的是從這些訓(xùn)練實(shí)例中學(xué)習(xí),以使機(jī)器可以對(duì)從未見過的數(shù)據(jù)做出有意義的預(yù)測(cè)。
無(wú)監(jiān)督學(xué)習(xí),僅向機(jī)器提供輸入數(shù)據(jù),機(jī)器隨后必須自己尋找一些有意義的結(jié)構(gòu),而無(wú)須外部監(jiān)督或輸入。
增強(qiáng)學(xué)習(xí),機(jī)器充當(dāng)代理,與環(huán)境交互。如果機(jī)器的行為符合要求,就會(huì)有獎(jiǎng)勵(lì);否則,就會(huì)受到懲罰。機(jī)器試圖通過學(xué)習(xí)相應(yīng)地發(fā)展其行為來(lái)化獎(jiǎng)勵(lì)。
DL在2012年席卷全球。在那一年,ImageNet 2012挑戰(zhàn)賽[3]發(fā)起,其目的是使用大型手工標(biāo)記數(shù)據(jù)集的子集來(lái)預(yù)測(cè)照片的內(nèi)容。名為AlexNet[4]的深度學(xué)習(xí)模型達(dá)到了15.3%的top-5錯(cuò)誤率,這與早前的結(jié)果相比有了顯著改進(jìn)。根據(jù)《經(jīng)濟(jì)學(xué)人》 [5]的說法,突然之間,人們開始關(guān)注深度學(xué)習(xí),不僅是在AI社區(qū)內(nèi)部,而且是整個(gè)技術(shù)行業(yè)。 自2012年以來(lái),我們看到了對(duì)ImageNet圖像進(jìn)行分類的多個(gè)模型的持續(xù)進(jìn)展[5](見圖1),錯(cuò)誤率低于2%,優(yōu)于5.1%的預(yù)計(jì)人為錯(cuò)誤率。
那僅僅是開始。如今,DL技術(shù)已成功應(yīng)用于異構(gòu)領(lǐng)域,包括但不限于醫(yī)療保健、環(huán)境工程、綠色能源、計(jì)算機(jī)視覺、文本分析、多媒體、金融、零售、游戲、模擬、工業(yè)、機(jī)器人技術(shù)和自動(dòng)駕駛汽車。在每一個(gè)領(lǐng)域中,DL技術(shù)都可以以一定的準(zhǔn)確度解決問題,而這是以前的方法無(wú)法實(shí)現(xiàn)的。
毫無(wú)疑問,人們對(duì)DL的興趣也在增加。有報(bào)告[9]顯示,每20分鐘就會(huì)有新的ML論文發(fā)表。機(jī)器學(xué)習(xí)論文的增長(zhǎng)率約為每月3.5%,每年50%。在過去的三年中,我們好像生活在DL的寒武紀(jì)大爆炸中,arXiv上論文數(shù)量的增長(zhǎng)速度超過了摩爾定律(見圖2)。正如評(píng)論所說:這使你感到人們相信這是計(jì)算的未來(lái)價(jià)值的來(lái)源。
圖1 ImageNet 2012上不同的深度學(xué)習(xí)模型實(shí)現(xiàn)的top-5準(zhǔn)確度
圖2 arXiv上ML論文數(shù)量似乎比摩爾定律增長(zhǎng)更快(源自:https://www.kdnuggets.com/2018/12/deep-learning-major-advances-review.html)
arXiv是電子預(yù)印本的存儲(chǔ)庫(kù),預(yù)印本尚未進(jìn)行完整的同行評(píng)審。
深度學(xué)習(xí)模型的復(fù)雜性也在增加。ResNet-50是一種圖像識(shí)別模型(參見第4章和第5章),具有約2600萬(wàn)個(gè)參數(shù)。每個(gè)參數(shù)都是用于微調(diào)模型的權(quán)重。Transformer、gpt-1、bert和gpt-2[7]都是自然語(yǔ)言處理模型(參見第8章),具備在文本上執(zhí)行各種任務(wù)
前言
作者簡(jiǎn)介
審校者簡(jiǎn)介
第1章 基于TensorFlow 2.0的神經(jīng)網(wǎng)絡(luò)基礎(chǔ)1
1.1 TensorFlow是什么1
1.2 Keras是什么3
1.3 TensorFlow 2.0有哪些重要的改動(dòng)3
1.4 神經(jīng)網(wǎng)絡(luò)概述4
1.5 感知器5
1.6 多層感知器個(gè)神經(jīng)網(wǎng)絡(luò)示例6
1.6.1 感知器訓(xùn)練的問題及對(duì)策6
1.6.2 激活函數(shù)sigmoid函數(shù)7
1.6.3 激活函數(shù)tanh函數(shù)7
1.6.4 激活函數(shù)ReLU函數(shù)8
1.6.5 兩個(gè)拓展激活函數(shù)ELU函數(shù)和LeakyReLU函數(shù)8
1.6.6 激活函數(shù)總結(jié)9
1.6.7 神經(jīng)網(wǎng)絡(luò)到底是什么9
1.7 示例識(shí)別手寫數(shù)字10
1.7.1 獨(dú)熱編碼10
1.7.2 在TensorFlow 2.0中定義一個(gè)簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)10
1.7.3 運(yùn)行一個(gè)簡(jiǎn)單的TensorFlow 2.0神經(jīng)網(wǎng)絡(luò)并建立測(cè)試基線14
1.7.4 使用隱藏層改進(jìn)TensorFlow 2.0的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)15
1.7.5 利用隨機(jī)失活進(jìn)一步改進(jìn)Ten-sor Flow 2.0的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)18
1.7.6 測(cè)試TensorFlow 2.0的不同優(yōu)化器19
1.7.7 增加epoch數(shù)24
1.7.8 控制優(yōu)化器學(xué)習(xí)率25
1.7.9 增加內(nèi)部隱藏神經(jīng)元的數(shù)量25
1.7.10 增加批量計(jì)算的大小26
1.7.11 手寫圖識(shí)別實(shí)驗(yàn)總結(jié)26
1.8 正則化27
1.8.1 采用正則化以避免過擬合27
1.8.2 理解批量歸一化28
1.9 Google ColabCPU、GPU和TPU29
1.10 情感分析31
1.11 超參數(shù)調(diào)諧和AutoML33
1.12 預(yù)測(cè)輸出34
1.13 反向傳播的實(shí)用概述34
1.14 我們學(xué)到了什么35
1.15 邁向深度學(xué)習(xí)方式35
1.16 參考文獻(xiàn)36
第2章 TensorFlow 1.x與2.x37
2.1 理解TensorFlow 1.x37
2.1.1 TensorFlow 1.x計(jì)算圖程序結(jié)構(gòu)37
2.1.2 常量、變量和占位符的使用39
2.1.3 操作對(duì)象示例40
2.1.4 TensorFlow 2.x中的TensorFlow 1.x示例43
2.2 理解TensorFlow 2.x44
2.2.1 即刻執(zhí)行44
2.2.2 AutoGraph45
2.2.3 Keras API的三種編程模型47
2.2.4 回調(diào)49
2.2.5 保存模型和權(quán)重50
2.2.6 使用tf.data.datasets訓(xùn)練50
2.2.7 tf.keras還是估算器53
2.2.8 不規(guī)則張量55
2.2.9 自定義訓(xùn)練55
2.2.10 TensorFlow 2.x中的分布式訓(xùn)練56
2.2.11 命名空間的改動(dòng)59
2.2.12 1.x至2.x的轉(zhuǎn)換59
2.2.13 高效使用TensorFlow 2.x59
2.3 TensorFlow 2.x生態(tài)系統(tǒng)60
2.4 Keras還是tf.keras61
2.5 小結(jié)62
第3章 回歸64
3.1 什么是回歸64
3.2 使用線性回歸進(jìn)行預(yù)測(cè)65
3.2.1 簡(jiǎn)單線性回歸65
3.2.2 多線性回歸68
3.2.3 多元線性回歸68
3.3 TensorFlow Estimator69
3.3.1 特征列69
3.3.2 輸入函數(shù)70
3.3.3 使用TensorFlow EstimatorAPI的MNIST70
3.4 使用線性回歸預(yù)測(cè)房?jī)r(jià)71
3.5 分類任務(wù)和決策邊界75
3.5.1 logistic回歸75
3.5.2 MNIST數(shù)據(jù)集上的logistic回歸76
3.6 小結(jié)80
3.7 參考文獻(xiàn)80
第4章 卷積神經(jīng)網(wǎng)絡(luò)81
4.1 深度卷積神經(jīng)網(wǎng)絡(luò)81
4.1.1 局部感受野82
4.1.2 共享權(quán)重和偏差82
4.1.3 數(shù)學(xué)示例83
4.1.4 TensorFlow 2.x中的ConvNets83
4.1.5 池化層84
4.2 DCNN的示例LeNet85
4.2.1 TensorFlow 2.0中的LeNet代碼85
4.2.2 理解深度學(xué)習(xí)的力量90
4.3 通過深度學(xué)習(xí)識(shí)別CIFAR-10圖像91
4.3.1 用更深的網(wǎng)絡(luò)提高CIFAR-10的性能93
4.3.2 用數(shù)據(jù)增強(qiáng)提高CIFAR-10的性能95
4.3.3 基于CIFAR-10預(yù)測(cè)97
4.4 用于大規(guī)模圖像識(shí)別的超深度卷積網(wǎng)絡(luò)98
4.4.1 基于VGG16神經(jīng)網(wǎng)絡(luò)識(shí)別貓100
4.4.2 使用tf.keras內(nèi)置的VGG16 Net模塊101
4.4.3 復(fù)用預(yù)建深度學(xué)習(xí)模型以提取特征102
4.5 小結(jié)103
4.6 參考文獻(xiàn)103
第5章 高級(jí)卷積神經(jīng)網(wǎng)絡(luò)104
5.1 計(jì)算機(jī)視覺104
5.1.1 復(fù)雜任務(wù)的CNN組合104
5.1.2 用tf.keras-estimator模型對(duì)Fashion-MNIST分類111
5.1.3 在GPU上運(yùn)行Fashion-MNISTtf.keras-estimator模型113
5.1.4 用于遷移學(xué)習(xí)的Deep Inception-v3 Net114
5.1.5 遷移學(xué)習(xí):分類人和馬117
5.1.6 基于tf.keras和TensorFlow Hub的Application Zoo120
5.1.7 其他CNN架構(gòu)121
5.1.8 回答有關(guān)圖像的問題124
5.1.9 風(fēng)格遷移127
5.1.10 創(chuàng)建DeepDream網(wǎng)絡(luò)129
5.1.11 查看深度網(wǎng)絡(luò)學(xué)到的內(nèi)容132
5.2 視頻133
5.3 文本文件134
5.4 音頻和音樂137
5.5 卷積運(yùn)算小結(jié)141
5.5.1 基本卷積神經(jīng)網(wǎng)絡(luò)141
5.5.2 空洞卷積141
5.5.3 可分離卷積141
5.5.4 深度卷積142
5.5.5 深度可分離卷積142
5.6 膠囊網(wǎng)絡(luò)142
5.6.1 CNN有什么問題142
5.6.2 Capsule網(wǎng)絡(luò)有什么新功能143
5.7 小結(jié)144
5.8 參考文獻(xiàn)144
第6章 生成對(duì)抗網(wǎng)絡(luò)146
6.1 什么是GAN146
6.2 深度卷積GAN152
6.3 一些有趣的GAN架構(gòu)161
6.3.1 SRGAN161
6.3.2 CycleGAN162
6.3.3 I