深度學(xué)習(xí)實戰(zhàn):基于TensorFlow 2和Keras(原書第2版)
定 價:149 元
叢書名:智能系統(tǒng)與技術(shù)叢書
當(dāng)前圖書已被 26 所學(xué)校薦購過!
查看明細
- 作者:[意]安東尼奧·古利(Antonio Gulli),[印]阿米塔·卡普爾(Amita Kapoor),[美]蘇吉特·帕爾(Sujit Pal)
- 出版時間:2021/8/1
- ISBN:9787111687719
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP18
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書簡潔且全面地介紹了現(xiàn)代神經(jīng)網(wǎng)絡(luò)、人工智能和深度學(xué)習(xí)技術(shù),專門為軟件工程師和數(shù)據(jù)科學(xué)家設(shè)計。第1章逐步介紹神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)知識。第2章比較TensorFlow 1.x和TensorFlow 2.0編程模型。第3章重點介紹回歸。第4章介紹卷積神經(jīng)網(wǎng)絡(luò)及其在圖像處理中的應(yīng)用。第5章討論了CNN在圖像、視頻、音頻和文本處理方面的高級應(yīng)用。第6章重點介紹生成對抗網(wǎng)絡(luò)。第7章介紹詞嵌入。第8章介紹基本嵌入方法的各種擴展。第9章介紹自動編碼器。第10章深入研究無監(jiān)督學(xué)習(xí)模型。第11章重點介紹強化學(xué)習(xí)。第12章介紹AutoML。第13章介紹用于移動設(shè)備和物聯(lián)網(wǎng)的TensorFlow的基礎(chǔ)知識。第14章討論了云環(huán)境以及如何利用它來訓(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ù)。在這個強大、受歡迎、可擴展的機器學(xué)習(xí)技術(shù)棧中,你將學(xué)習(xí)如何編寫深度學(xué)習(xí)應(yīng)用。TensorFlow是專業(yè)級應(yīng)用選用的機器學(xué)習(xí)庫,而Keras提供了一個簡單且強大的Python API來訪問TensorFlow。TensorFlow 2提供了完整的集成Keras,使高階機器學(xué)習(xí)比以往任何時候都更加輕松便捷。本書還介紹了基于TensorFlow的神經(jīng)網(wǎng)絡(luò),貫穿了主要的應(yīng)用(回歸、CNN、GAN、RNN、NLP),還涵蓋了兩個可用的示例應(yīng)用,并深入探討了生產(chǎn)環(huán)境下的TF、TF Mobile,以及TensorFlow與AutoML的結(jié)合使用。
本書簡潔且全面地介紹了現(xiàn)代神經(jīng)網(wǎng)絡(luò)、人工智能和深度學(xué)習(xí)技術(shù),專門為軟件工程師和數(shù)據(jù)科學(xué)家設(shè)計。它是另外兩本著作Deep Learning with Keras[1]和TensorFlow 1.x Deep Learning Cookbook[2]的延續(xù)。
本書目標(biāo)
本書對過去幾年中深度學(xué)習(xí)技術(shù)的演進做了概括,并給出了用Python寫的數(shù)十種可運行的深度神經(jīng)網(wǎng)絡(luò)代碼,它們都是用基于類Keras[1] API的模塊化深度網(wǎng)絡(luò)庫TensorFlow 2.0實現(xiàn)的。
本書將循序漸進地介紹有監(jiān)督學(xué)習(xí)算法,包括簡單線性回歸、經(jīng)典多層感知器,以及更為復(fù)雜的深度卷積網(wǎng)絡(luò)和生成對抗網(wǎng)絡(luò)。本書還涵蓋無監(jiān)督學(xué)習(xí)算法,包括自編碼器和生成網(wǎng)絡(luò),并對循環(huán)網(wǎng)絡(luò)和長短期記憶網(wǎng)絡(luò)進行詳細解釋。此外,本書還會對深度強化學(xué)習(xí)進行全面介紹,并涵蓋深度學(xué)習(xí)加速器(GPU和TPU)、云開發(fā)以及在桌面系統(tǒng)、云服務(wù)、移動設(shè)備/物聯(lián)網(wǎng)(IoT)和瀏覽器上的多環(huán)境部署。
實際應(yīng)用包括將文本分類為預(yù)定義類別、語法分析、語義分析、文本合成以及詞性標(biāo)注。書中我們還會探討圖像處理,包括手寫數(shù)字圖像識別、圖像分類以及具有相關(guān)圖像注釋的高級對象識別。
聲音分析包括識別來自多個揚聲器的離散語音。本書還介紹使用自編碼器和GAN生成圖像,使用強化學(xué)習(xí)技術(shù)構(gòu)建能夠自主學(xué)習(xí)的深度Q學(xué)習(xí)網(wǎng)絡(luò)。實驗是本書的精髓。每個網(wǎng)絡(luò)都增加了多種變體,這些變體通過更改輸入?yún)?shù)、網(wǎng)絡(luò)形狀、損失函數(shù)和優(yōu)化算法來逐步提高學(xué)習(xí)性能。本書還提供在CPU、GPU和TPU上進行訓(xùn)練的對比。本書將介紹新領(lǐng)域AutoML,在該領(lǐng)域中,我們將學(xué)習(xí)如何高效和自動地構(gòu)建深度學(xué)習(xí)模型。第15章專門介紹機器學(xué)習(xí)相關(guān)的數(shù)學(xué)知識。
機器學(xué)習(xí)、人工智能和深度學(xué)習(xí)寒武紀(jì)爆炸
人工智能(Artificial Intelligence,AI)為本書討論的所有內(nèi)容奠定了基礎(chǔ)。機器學(xué)習(xí)(Machine Learning,ML)是AI的一個分支,而深度學(xué)習(xí)(Deep Learning,DL)又是ML中的一個子集。下面簡要討論本書中經(jīng)常出現(xiàn)的這三個概念。
AI表示機器模仿人類通常表現(xiàn)出的智能行為的任何活動。更正式地說,這是一個研究領(lǐng)域,機器旨在復(fù)制認知能力,例如學(xué)習(xí)行為、與環(huán)境的主動交互、推理和演繹、計算機視覺、語音識別、問題求解、知識表示和感知。AI建立在計算機科學(xué)、數(shù)學(xué)和統(tǒng)計學(xué)以及心理學(xué)和其他研究人類行為的科學(xué)的基礎(chǔ)上。建立AI有多種策略。在20世紀(jì)70年代和20世紀(jì)80年代,專家系統(tǒng)變得非常流行。這些系統(tǒng)的目標(biāo)是通過用大量手動定義的if-then規(guī)則表示知識來解決復(fù)雜的問題。這種方法適用于非常特定的領(lǐng)域中的小問題,但無法擴展到較大的問題和多領(lǐng)域中。后來,AI越來越關(guān)注基于統(tǒng)計的方法。
ML是AI的一個子學(xué)科,它專注于教授計算機如何對特定任務(wù)進行學(xué)習(xí)而無須編程。ML背后的關(guān)鍵思想是可以創(chuàng)建從數(shù)據(jù)中學(xué)習(xí)并做出預(yù)測的算法。ML有三類:
有監(jiān)督學(xué)習(xí),向機器提供輸入數(shù)據(jù)及期望輸出,目的是從這些訓(xùn)練實例中學(xué)習(xí),以使機器可以對從未見過的數(shù)據(jù)做出有意義的預(yù)測。
無監(jiān)督學(xué)習(xí),僅向機器提供輸入數(shù)據(jù),機器隨后必須自己尋找一些有意義的結(jié)構(gòu),而無須外部監(jiān)督或輸入。
增強學(xué)習(xí),機器充當(dāng)代理,與環(huán)境交互。如果機器的行為符合要求,就會有獎勵;否則,就會受到懲罰。機器試圖通過學(xué)習(xí)相應(yīng)地發(fā)展其行為來化獎勵。
DL在2012年席卷全球。在那一年,ImageNet 2012挑戰(zhàn)賽[3]發(fā)起,其目的是使用大型手工標(biāo)記數(shù)據(jù)集的子集來預(yù)測照片的內(nèi)容。名為AlexNet[4]的深度學(xué)習(xí)模型達到了15.3%的top-5錯誤率,這與早前的結(jié)果相比有了顯著改進。根據(jù)《經(jīng)濟學(xué)人》 [5]的說法,突然之間,人們開始關(guān)注深度學(xué)習(xí),不僅是在AI社區(qū)內(nèi)部,而且是整個技術(shù)行業(yè)。 自2012年以來,我們看到了對ImageNet圖像進行分類的多個模型的持續(xù)進展[5](見圖1),錯誤率低于2%,優(yōu)于5.1%的預(yù)計人為錯誤率。
那僅僅是開始。如今,DL技術(shù)已成功應(yīng)用于異構(gòu)領(lǐng)域,包括但不限于醫(yī)療保健、環(huán)境工程、綠色能源、計算機視覺、文本分析、多媒體、金融、零售、游戲、模擬、工業(yè)、機器人技術(shù)和自動駕駛汽車。在每一個領(lǐng)域中,DL技術(shù)都可以以一定的準(zhǔn)確度解決問題,而這是以前的方法無法實現(xiàn)的。
毫無疑問,人們對DL的興趣也在增加。有報告[9]顯示,每20分鐘就會有新的ML論文發(fā)表。機器學(xué)習(xí)論文的增長率約為每月3.5%,每年50%。在過去的三年中,我們好像生活在DL的寒武紀(jì)大爆炸中,arXiv上論文數(shù)量的增長速度超過了摩爾定律(見圖2)。正如評論所說:這使你感到人們相信這是計算的未來價值的來源。
圖1 ImageNet 2012上不同的深度學(xué)習(xí)模型實現(xiàn)的top-5準(zhǔn)確度
圖2 arXiv上ML論文數(shù)量似乎比摩爾定律增長更快(源自:https://www.kdnuggets.com/2018/12/deep-learning-major-advances-review.html)
arXiv是電子預(yù)印本的存儲庫,預(yù)印本尚未進行完整的同行評審。
深度學(xué)習(xí)模型的復(fù)雜性也在增加。ResNet-50是一種圖像識別模型(參見第4章和第5章),具有約2600萬個參數(shù)。每個參數(shù)都是用于微調(diào)模型的權(quán)重。Transformer、gpt-1、bert和gpt-2[7]都是自然語言處理模型(參見第8章),具備在文本上執(zhí)行各種任務(wù)
前言
作者簡介
審校者簡介
第1章 基于TensorFlow 2.0的神經(jīng)網(wǎng)絡(luò)基礎(chǔ)1
1.1 TensorFlow是什么1
1.2 Keras是什么3
1.3 TensorFlow 2.0有哪些重要的改動3
1.4 神經(jīng)網(wǎng)絡(luò)概述4
1.5 感知器5
1.6 多層感知器個神經(jīng)網(wǎng)絡(luò)示例6
1.6.1 感知器訓(xùn)練的問題及對策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 兩個拓展激活函數(shù)ELU函數(shù)和LeakyReLU函數(shù)8
1.6.6 激活函數(shù)總結(jié)9
1.6.7 神經(jīng)網(wǎng)絡(luò)到底是什么9
1.7 示例識別手寫數(shù)字10
1.7.1 獨熱編碼10
1.7.2 在TensorFlow 2.0中定義一個簡單的神經(jīng)網(wǎng)絡(luò)10
1.7.3 運行一個簡單的TensorFlow 2.0神經(jīng)網(wǎng)絡(luò)并建立測試基線14
1.7.4 使用隱藏層改進TensorFlow 2.0的簡單神經(jīng)網(wǎng)絡(luò)15
1.7.5 利用隨機失活進一步改進Ten-sor Flow 2.0的簡單神經(jīng)網(wǎng)絡(luò)18
1.7.6 測試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 增加批量計算的大小26
1.7.11 手寫圖識別實驗總結(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ù)測輸出34
1.13 反向傳播的實用概述34
1.14 我們學(xué)到了什么35
1.15 邁向深度學(xué)習(xí)方式35
1.16 參考文獻36
第2章 TensorFlow 1.x與2.x37
2.1 理解TensorFlow 1.x37
2.1.1 TensorFlow 1.x計算圖程序結(jié)構(gòu)37
2.1.2 常量、變量和占位符的使用39
2.1.3 操作對象示例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 命名空間的改動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 使用線性回歸進行預(yù)測65
3.2.1 簡單線性回歸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ù)測房價71
3.5 分類任務(wù)和決策邊界75
3.5.1 logistic回歸75
3.5.2 MNIST數(shù)據(jù)集上的logistic回歸76
3.6 小結(jié)80
3.7 參考文獻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í)識別CIFAR-10圖像91
4.3.1 用更深的網(wǎng)絡(luò)提高CIFAR-10的性能93
4.3.2 用數(shù)據(jù)增強提高CIFAR-10的性能95
4.3.3 基于CIFAR-10預(yù)測97
4.4 用于大規(guī)模圖像識別的超深度卷積網(wǎng)絡(luò)98
4.4.1 基于VGG16神經(jīng)網(wǎng)絡(luò)識別貓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 參考文獻103
第5章 高級卷積神經(jīng)網(wǎng)絡(luò)104
5.1 計算機視覺104
5.1.1 復(fù)雜任務(wù)的CNN組合104
5.1.2 用tf.keras-estimator模型對Fashion-MNIST分類111
5.1.3 在GPU上運行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 卷積運算小結(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 參考文獻144
第6章 生成對抗網(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