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