【缺書】NT售價: 795 元
TensorFlow是目前使用最廣泛的機器學習框架,滿足了廣大用戶的需求。如今TensorFlow已經更新到2.0版本,具有更強的易用性。本書通過大量的實例講解在TensorFlow框架上實現人工智能的技術,兼容TensorFlow 1.0與TensorFlow 2.0版本,覆蓋多種開發場景。書中的內容主要源于作者在代碼醫生工作室的工作積累。作者將自己在真實項目中使用TensorFlow的經驗與技巧全部寫進書里,讓讀者可以接觸到最真實的案例,最實戰的場景,盡快搭上人工智能的“列車”。作者將自身的項目實戰經驗濃縮到三本書里,形成了“深度學習三部曲”。三本書形成一套完善的知識體系,構成了完備的技術棧閉環。本書是“深度學習三部曲”的最后一本。-《Python帶我起飛:入門、進階、商業實戰》,主要講解了Python基礎語法。與深度學習關系不大,但包含了開發神經網絡模型所必備的基礎知識。-《深度學習之TensorFlow:入門、原理與進階實戰》,主要講解了深度學習的基礎網絡模型及TensorFlow框架的基礎編程方法。-《深度學習之TensorFlow工程化項目實戰》,主要講解在實戰項目中用到的真實模型,以及將TensorFlow框架用于各種生產環境應用場景的編程方法。這三本書可以將一個零基礎的讀者順利帶入深度學習行業,并讓其能夠成為一名合格的深度學習工程師。----------------------------------本書特色1. 兼容TensorFlow 1.x與TensorFlow 2.0版本,提供了大量的編程經驗本書兼顧TensorFlow 1.x與TensorFlow 2.0兩個版本,給出了如何將TensorFlow 1.x代碼升級為TensorFlow 2.0可用的代碼。2. 覆蓋了TensorFlow的大量接口TensorFlow是一個非常龐大的框架,內部有很多接口可以滿足不同用戶的需求。合理使用現有接口可以在開發過程中起到事半功倍的效果。然而,由于TensorFlow的代碼迭代速度太快,有些接口的配套文檔并不是很全。作者花了大量的時間與精力,對一些實用接口的使用方法進行摸索與整理,并將這些方法寫到書中。3. 提供了高度可重用代碼,公開了大量的商用代碼片段本書實例中的代碼大多都來自代碼醫生工作室的商業項目,這些代碼的易用性、穩定性、可重用性都很強。讀者可以將這些代碼提取出來直接用在自己的項目中,加快開發進度。4. 書中的實戰案例可應用于真實場景本書中大部分實例都是當前應用非常廣泛的通用任務,包括圖片分類、目標識別、像素分割、文本分類、語音合成等多個方向。讀者可以在書中介紹的模型的基礎上,利用自己的業務數據集快速實現AI功能。5. 從工程角度出發,覆蓋工程開發全場景本書以工程實現為目標,全面覆蓋開發工程化AI項目中所涉及的知識,并全部配有實例,包括開發數據集、訓練模型、特征工程、開發模型、保護模型文件、模型防御、服務端和終端的模型部署。其中,特征工程部分全面講解了TensorFlow中的特征列接口。該接口可以使數據在特征處理階段就以圖的方式進行加工,從而保證了在訓練場景下和使用場景下模型的輸入統一。6. 提供了大量前沿論文鏈接地址,便于讀者進一步深入學習本書使用的AI模型,大多來源于前沿的技術論文,并在原有論文基礎上做了一些結構改進。這些實例具有很高的科研價值。讀者可以根據書中提供的論文鏈接地址,進一步深入學習更多的前沿知識,再配合本書的實例進行充分理解,達到融會貫通。本書也可以幫助AI研究者進行學術研究。7. 注重方法與經驗的傳遞本書在講解知識時,更注重傳授方法與經驗。全書共有幾十個“提示”標簽,其中的內容都是含金量很高的成功經驗分享與易錯事項總結,有關于經驗技巧的,也有關于風險規避的,可以幫助讀者在學習的路途上披荊斬棘,快速進步。----------------------------------本書讀者對象-人工智能愛好者 -人工智能開發工程師-人工智能專業的高校學生 ? -使用TensorFlow框架的工程師-人工智能專業的教師 ? -集成人工智能的開發人員-人工智能初學者
本書針對TensorFlow 1.0以上版本編寫,采用"實例”的形式編寫,通過60個實例全面而深入地講解"深度學習神經網絡原理”和"Tensorflow使用方法”兩方面。書中的實例具有很強的實用,如對圖片分類、制作一個簡單的聊天機器人、進行圖像識別等。本書還免費提供了所有案例的源代碼及數據樣本,這些代碼和樣本不僅方便了讀者學習,而且也能為以后的工作提供便利。全書共分為4篇: 第 1 篇 準備; 第2篇 入門 ; 第 3 篇 基礎——常用的神經網絡結構; 第 4 篇 進階--——掌握深度學習模型;第 5 篇 高級--——深度學習模型實戰。
=====第1篇 準備第1章 學習準備/2∣1.1 TensorFlow能做什么/2∣1.2 學習TensorFlow的必備知識/3∣1.3 學習技巧:跟讀代碼/4∣1.4 如何學習本書/4-第2章 搭建開發環境/52.1 準備硬件環境/52.2 下載及安裝Anaconda/62.3 安裝TensorFlow/92.4 GPU版本的安裝方法/10∣2.4.1 在Windows中安裝CUDA/10∣2.4.2 在Linux中安裝CUDA/13∣2.4.3 在Windows中安裝cuDNN/13∣2.4.4 在Linux中安裝cuDNN/14∣2.4.5 常見錯誤及解決方案/162.5 測試顯卡的常用命令/162.6 TensorFlow 1.x版本與2.x版本共存的解決方案/18-第3章 實例1:用AI模型識別圖像是桌子、貓、狗,還是其他/213.1 準備代碼環境并預訓練模型/213.2 代碼實現:初始化環境變量,并載入ImgNet標簽/243.3 代碼實現:定義網絡結構/253.4 代碼實現:載入模型進行識別/263.5 擴展:用更多預訓練模型完成圖片分類任務/28∣===== 第2篇 基礎∣第4章 用TensorFlow制作自己的數據集/304.1 快速導讀/30∣4.1.1 什么是數據集/30∣4.1.2 TensorFlow的框架/31∣4.1.3 什么是TFDS/314.2 實例2:將模擬數據制作成內存對象數據集/32∣4.2.1 代碼實現:生成模擬數據/32∣4.2.2 代碼實現:定義占位符/33∣4.2.3 代碼實現:建立會話,并獲取顯數據/34∣4.2.4 代碼實現:模擬數據可視化/34∣4.2.5 運行程序/34∣4.2.6 代碼實現:創建帶有迭代值并支持亂序功能的模擬數據集/354.3 實例3:將圖片制作成內存對象數據集/37∣4.3.1 樣本介紹/38∣4.3.2 代碼實現:載入文件名稱與標簽/39∣4.3.3 代碼實現:生成隊列中的批次樣本數據/40∣4.3.4 代碼實現:在會話中使用數據集/41∣4.3.5 運行程序/424.4 實例4:將Excel文件制作成內存對象數據集/42∣4.4.1 樣本介紹/43∣4.4.2 代碼實現:逐行讀取數據并分離標簽/43∣4.4.3 代碼實現:生成隊列中的批次樣本數據/44∣4.4.4 代碼實現:在會話中使用數據集/45∣4.4.5 運行程序/464.5 實例5:將圖片文件制作成TFRecord數據集/46∣4.5.1 樣本介紹/47∣4.5.2 代碼實現:讀取樣本文件的目錄及標簽/47∣4.5.3 代碼實現:定義函數生成TFRecord數據集/48∣4.5.4 代碼實現:讀取TFRecord數據集,并將其轉化為隊列/49∣4.5.5 代碼實現:建立會話,將數據保存到文件/50∣4.5.6 運行程序/514.6 實例6:將內存對象制作成Dataset數據集/52∣4.6.1 如何生成Dataset數據集/52∣4.6.2 如何使用Dataset接口/53∣4.6.3 tf.data.Dataset接口所支持的數據集變換操作/54∣4.6.4 代碼實現:以元組和字典的方式生成Dataset對象/58∣4.6.5 代碼實現:對Dataset對象中的樣本進行變換操作/59∣4.6.6 代碼實現:創建Dataset迭代器/60∣4.6.7 代碼實現:在會話中取出數據/60∣4.6.8 運行程序/61∣4.6.9 使用tf.data.Dataset.from_tensor_slices接口的注意事項/624.7 實例7:將圖片文件制作成Dataset數據集/63∣4.7.1 代碼實現:讀取樣本文件的目錄及標簽/64∣4.7.2 代碼實現:定義函數,實現圖片轉換操作/64∣4.7.3 代碼實現:用自定義函數實現圖片歸一化/65∣4.7.4 代碼實現:用第三方函數將圖片旋轉30°/65∣4.7.5 代碼實現:定義函數,生成Dataset對象/66∣4.7.6 代碼實現:建立會話,輸出數據/67∣4.7.7 運行程序/684.8 實例8:將TFRecord文件制作成Dataset數據集/69∣4.8.1 樣本介紹/69∣4.8.2 代碼實現:定義函數,生成Dataset對象/70∣4.8.3 代碼實現:建立會話輸出數據/71∣4.8.4 運行程序/724.9 實例9:在動態圖中讀取Dataset數據集/72∣4.9.1 代碼實現:添加動態圖調用/72∣4.9.2 制作數據集/73∣4.9.3 代碼實現:在動態圖中顯示數據/73∣4.9.4 擴展示例10:在TensorFlow 2.x中操作數據集/744.10 實例11:在不同場景中使用數據集/77∣4.10.1 代碼實現:在訓練場景中使用數據集/78∣4.10.2 代碼實現:在應用模型場景中使用數據集/79∣4.10.3 代碼實現:在訓練與測試混合場景中使用數據集/804.11 tf.data.Dataset接口的更多應用/81-第5章 10分鐘快速訓練自己的圖片分類模型/825.1 快速導讀/82∣5.1.1 認識模型和模型檢查點文件/82∣5.1.2 了解“預訓練模型”與微調(Fine-Tune)/82∣5.1.3 學習TensorFlow中的預訓練模型庫——TF-Hub庫/835.2 實例12:通過微調模型分辨男女/83∣5.2.1 準備工作/84∣5.2.2 代碼實現:處理樣本數據并生成Dataset對象/85∣5.2.3 代碼實現:定義微調模型的類MyNASNetModel/88∣5.2.4 代碼實現:構建MyNASNetModel類中的基本模型/88∣5.2.5 代碼實現:實現MyNASNetModel類中的微調操作/89∣5.2.6 代碼實現:實現與訓練相關的其他方法/90∣5.2.7 代碼實現:構建模型,用于訓練、測試、使用/92∣5.2.8 代碼實現:通過二次迭代來訓練微調模型/94∣5.2.9 代碼實現:測試模型/965.3 擴展:通過攝像頭實時分辨男女/1005.4 TF-slim接口中的更多成熟模型/100∣5.5 實例13:用TF-Hub庫微調模型以評估人物的年齡/100∣5.5.1 準備樣本/101∣5.5.2 下載TF-Hub庫中的模型/102∣5.5.3 代碼實現:測試TF-Hub庫中的MobileNet_V2模型/104∣5.5.4 用TF-Hub庫微調MobileNet_V2模型/107∣5.5.5 代碼實現:用模型評估人物的年齡/109∣5.5.6 擴展:用TF-Hub庫中的其他模型實現不同領域的分類任務/113∣5.6 總結/113∣5.7 練習題/114∣5.7.1 基于TF-slim接口的練習/115∣5.7.2 基于TF-Hub庫的練習/115-第6章 用TensorFlow編寫訓練模型的程序/1176.1 快速導讀/117∣6.1.1 訓練模型是怎么一回事/117∣6.1.2 用“靜態圖”方式訓練模型/117∣6.1.3 用“動態圖”方式訓練模型/118∣6.1.4 什么是估算器框架接口(Estimators API)/119∣6.1.5 什么是tf.layers接口/120∣6.1.6 什么是tf.keras接口/121∣6.1.7 什么是tf.js接口/122∣6.1.8 什么是TFLearn框架/123∣6.1.9 該選擇哪種框架/123∣6.1.10 分配運算資源與使用分布策略/124∣6.1.11 用tfdbg調試TensorFlow模型/127∣6.1.12 用鉤子函數(Training_Hooks)跟蹤訓練狀態/127∣6.1.13 用分布式運行方式訓練模型/128∣6.1.14 用T2T框架系統更方便地訓練模型/128∣6.1.15 將TensorFlow 1.x中的代碼移植到2.x版本/129∣6.1.16 TensorFlow 2.x中的新特性——自動圖/1306.2 實例14:用靜態圖訓練一個具有保存檢查點功能的回歸模型/131∣6.2.1 準備開發步驟/131∣6.2.2 生成檢查點文件/131∣6.2.3 載入檢查點文件/132∣6.2.4 代碼實現:在線性回歸模型中加入保存檢查點功能/132∣6.2.5 修改迭代次數,二次訓練/1356.3 實例15:用動態圖(eager)訓練一個具有保存檢查點功能的回歸模型/136∣6.3.1 代碼實現:啟動動態圖,生成模擬數據/136∣6.3.2 代碼實現:定義動態圖的網絡結構/137∣6.3.3 代碼實現:在動態圖中加入保存檢查點功能/138∣6.3.4 代碼實現:按指定迭代次數進行訓練,并可視化結果/139∣6.3.5 運行程序,顯示結果/140∣6.3.6 代碼實現:用另一種方法計算動態圖梯度/141∣6.3.7 擴展實例16:在動態圖中獲取參數變量/142∣6.3.8 小心動態圖中的參數陷阱/144∣6.3.9 擴展實例17:在靜態圖中使用動態圖/1456.4 實例18:用估算器框架訓練一個回歸模型/147∣6.4.1 代碼實現:生成樣本數據集/147∣6.4.2 代碼實現:設置日志級別/148∣6.4.3 代碼實現:實現估算器的輸入函數/148∣6.4.4 代碼實現:定義估算器的模型函數/149∣6.4.5 代碼實現:通過創建config文件指定硬件的運算資源/151∣6.4.6 代碼實現:定義估算器/152∣6.4.7 用tf.estimator.RunConfig控制更多的訓練細節/153∣6.4.8 代碼實現:用估算器訓練模型/153∣6.4.9 代碼實現:通過熱啟動實現模型微調/155∣6.4.10 代碼實現:測試估算器模型/158∣6.4.11 代碼實現:使用估算器模型/158∣6.4.12 擴展實例19:為估算器添加日志鉤子函數/1596.5 實例20:將估算器代碼改寫成靜態圖代碼/161∣6.5.1 代碼實現:復制網絡結構/161∣6.5.2 代碼實現:重用輸入函數/163∣6.5.3 代碼實現:創建會話恢復模型/163∣6.5.4 代碼實現:繼續訓練/1636.6 實例21:用tf.layers API在動態圖上識別手寫數字/165∣6.6.1 代碼實現:啟動動態圖并加載手寫圖片數據集/165∣6.6.2 代碼實現:定義模型的類/166∣6.6.3 代碼實現:定義網絡的反向傳播/167∣6.6.4 代碼實現:訓練模型/1676.7 實例22:用tf.keras API訓練一個回歸模型/168∣6.7.1 代碼實現:用model類搭建模型/168∣6.7.2 代碼實現:用sequential類搭建模型/169∣6.7.3 代碼實現:搭建反向傳播的模型/171∣6.7.4 代碼實現:用兩種方法訓練模型/172∣6.7.5 代碼實現:獲取模型參數/172∣6.7.6 代碼實現:測試模型與用模型進行預測/173∣6.7.7 代碼實現:保存模型與加載模型/173∣6.7.8 代碼實現:將模型導出成JSON文件,再將JSON文件導入模型/175∣6.7.9 擴展實例23:在tf.keras接口中使用預訓練模型ResNet/176∣6.7.10 擴展:在動態圖中使用tf.keras接口/178∣6.7.11 擴展實例24:在靜態圖中使用tf.keras接口/1786.8 實例25:用tf.js接口后方訓練一個回歸模型/180∣6.8.1 代碼實現:在HTTP的頭標簽中添加tfjs模塊/180∣6.8.2 代碼實現:用JavaScript腳本實現回歸模型/181∣6.8.3 運行程序:在瀏覽器中查看效果/181∣6.8.4 擴展:tf.js 接口的應用場景/1826.9 實例26:用估算器框架實現分布式部署訓練/182∣6.9.1 運行程序:修改估算器模型,使其支持分布式/182∣6.9.2 通過TF_CONFIG進行分布式配置/183∣6.9.3 運行程序/185∣6.9.4 擴展:用分布策略或KubeFlow框架進行分布式部署/1866.10 實例27:在分布式估算器框架中用tf.keras接口訓練ResNet模型,識別圖片中是橘子還是蘋果/186∣6.10.1 樣本準備/186∣6.10.2 代碼實現:準備訓練與測試數據集/187∣6.10.3 代碼實現:制作模型輸入函數/187∣6.10.4 代碼實現:搭建ResNet模型/188∣6.10.5 代碼實現:訓練分類器模型/189∣6.10.6 運行程序:評估模型/190∣6.10.7 擴展:全連接網絡的優化/1906.11 實例28:在T2T框架中用tf.layers接口實現MNIST數據集分類/191∣6.11.1 代碼實現:查看T2T框架中的數據集(problems)/191∣6.11.2 代碼實現:構建T2T框架的工作路徑及下載數據集/192∣6.11.3 代碼實現:在T2T框架中搭建自定義卷積網絡模型/193∣6.11.4 代碼實現:用動態圖方式訓練自定義模型/194∣6.11.5 代碼實現:在動態圖中用metrics模塊評估模型/1956.12 實例29:在T2T框架中,用自定義數據集訓練中英文翻譯模型/196∣6.12.1 代碼實現:聲明自己的problems數據集/196∣6.12.2 代碼實現:定義自己的problems數據集/197∣6.12.3 在命令行下生成tfrecoder格式的數據/198∣6.12.4 查找T2T框架中的模型及超參,并用指定的模型及超參進行訓練/199∣6.12.5 用訓練好的T2T框架模型進行預測/201∣6.12.6 擴展:在T2T框架中,如何選取合適的模型及超參/2026.13 實例30:將TensorFlow 1.x中的代碼升級為可用于2.x版本的代碼/203∣6.13.1 準備工作:創建Python虛環境/203∣6.13.2 使用工具轉換源碼/204∣6.13.3 修改轉換后的代碼文件/204∣6.13.4 將代碼升級到TensorFlow 2.x版本的經驗總結/205∣第3篇 進階∣-第7章 特征工程——會說話的數據/2087.1 快速導讀/208∣7.1.1 特征工程的基礎知識/208∣7.1.2 離散數據特征與連續數據特征/209∣7.1.3 了解特征列接口/210∣7.1.4 了解序列特征列接口/210∣7.1.5 了解弱學習器接口——梯度提升樹(TFBT接口)/210∣7.1.6 了解特征預處理模塊(tf.Transform)/211∣7.1.7 了解因子分解模塊/212∣7.1.8 了解加權矩陣分解算法/212∣7.1.9 了解Lattice模塊——點陣模型/213∣7.1.10 聯合訓練與集成學習/2147.2 實例31:用wide_deep模型預測人口收入/214∣7.2.1 了解人口收入數據集/214∣7.2.2 代碼實現:探索性數據分析/217∣7.2.3 認識wide_deep模型/218∣7.2.4 部署代碼文件/219∣7.2.5 代碼實現:初始化樣本常量/220∣7.2.6 代碼實現:生成特征列/220∣7.2.7 代碼實現:生成估算器模型/222∣7.2.8 代碼實現:定義輸入函數/223∣7.2.9 代碼實現:定義用于導出凍結圖文件的函數/224∣7.2.10 代碼實現:定義類,解析啟動參數/225∣7.2.11 代碼實現:訓練和測試模型/226∣7.2.12 代碼實現:使用模型/227∣7.2.13 運行程序/2287.3 實例32:用弱學習器中的梯度提升樹算法預測人口收入/229∣7.3.1 代碼實現:為梯度提升樹模型準備特征列/230∣7.3.2 代碼實現:構建梯度提升樹模型/230∣7.3.3 代碼實現:訓練并導出梯度提升樹模型/231∣7.3.4 代碼實現:設置啟動參數,運行程序/232∣7.3.5 擴展:更靈活的TFBT接口/2337.4 實例33:用feature_column模塊轉換特征列/233∣7.4.1 代碼實現:用feature_column模塊處理連續值特征列/234∣7.4.2 代碼實現:將連續值特征列轉化成離散值特征列/237∣7.4.3 代碼實現:將離散文本特征列轉化為one-hot與詞向量/239∣7.4.4 代碼實現:根據特征列生成交叉列/2467.5 實例34:用sequence_feature_column接口完成自然語言處理任務的數據預處理工作/248∣7.5.1 代碼實現:構建模擬數據/248∣7.5.2 代碼實現:構建詞嵌入初始值/249∣7.5.3 代碼實現:構建詞嵌入特征列與共享特征列/249∣7.5.4 代碼實現:構建序列特征列的輸入層/250∣7.5.5 代碼實現:建立會話輸出結果/2517.6 實例35:用factorization模塊的kmeans接口聚類COCO數據集中的標注框/253∣7.6.1 代碼實現:設置要使用的數據集/253∣7.6.2 代碼實現:準備帶聚類的數據樣本/253∣7.6.3 代碼實現:定義聚類模型/255∣7.6.4 代碼實現:訓練模型/256∣7.6.5 代碼實現:輸出圖示化結果/256∣7.6.6 代碼實現:提取并排序聚類結果/258∣7.6.7 擴展:聚類與神經網絡混合訓練/2587.7 實例36:用加權矩陣分解模型實現基于電影評分的推薦系統/259∣7.7.1 下載并加載數據集/259∣7.7.2 代碼實現:根據用戶和電影特征列生成稀疏矩陣/260∣7.7.3 代碼實現:建立WALS模型,并對其進行訓練/261∣7.7.4 代碼實現:評估WALS模型/263∣7.7.5 代碼實現:用WALS模型為用戶推薦電影/264∣7.7.6 擴展:使用WALS的估算器接口/2657.8 實例37:用Lattice模塊預測人口收入/265∣7.8.1 代碼實現:讀取樣本,并創建輸入函數/266∣7.8.2 代碼實現:創建特征列,并保存校準關鍵點/267∣7.8.3 代碼實現:創建校準線性模型/270∣7.8.4 代碼實現:創建校準點陣模型/270∣7.8.5 代碼實現:創建隨機微點陣模型/271∣7.8.6 代碼實現:創建集合的微點陣模型/271∣7.8.7 代碼實現:定義評估與訓練函數/272∣7.8.8 代碼實現:訓練并評估模型/273∣7.8.9 擴展實例38:將點陣模型嵌入神經網絡中/2747.9 實例38:結合知識圖譜實現基于電影的推薦系統/278∣7.9.1 準備數據集/278∣7.9.2 預處理數據/279∣7.9.3 搭建MKR模型/279∣7.9.4 訓練模型并輸出結果/2867.10 總結:可解釋性算法的意義/286-第8章 卷積神經網絡(CNN)——在圖像處理中應用最廣泛的模型/2878.1 快速導讀/287∣8.1.1 認識卷積神經網絡/287∣8.1.2 什么是空洞卷積/288∣8.1.3 什么是深度卷積/290∣8.1.4 什么是深度可分離卷積/290∣8.1.5 了解卷積網絡的缺陷及補救方法/291∣8.1.6 了解膠囊神經網絡與動態路由/292∣8.1.7 了解矩陣膠囊網絡與EM路由算法/297∣8.1.8 什么是NLP任務/298∣8.1.9 了解多頭注意力機制與內部注意力機制/298∣8.1.10 什么是帶有位置向量的詞嵌入/300∣8.1.11 什么是目標檢測任務/300∣8.1.12 什么是目標檢測中的上采樣與下采樣/301∣8.1.13 什么是圖片分割任務/3018.2 實例39:用膠囊網絡識別黑白圖中服裝的圖案/302∣8.2.1 熟悉樣本:了解Fashion-MNIST數據集/302∣8.2.2 下載Fashion-MNIST數據集/303∣8.2.3 代碼實現:讀取及顯示Fashion-MNIST數據集中的數據/304∣8.2.4 代碼實現:定義膠囊網絡模型類CapsuleNetModel/305∣8.2.5 代碼實現:實現膠囊網絡的基本結構/306∣8.2.6 代碼實現:構建膠囊網絡模型/309∣8.2.7 代碼實現:載入數據集,并訓練膠囊網絡模型/310∣8.2.8 代碼實現:建立會話訓練模型/311∣8.2.9 運行程序/313∣8.2.10 擴展實例40:實現帶有EM路由的膠囊網絡/3148.3 實例41:用TextCNN模型分析評論者是否滿意/322∣8.3.1 熟悉樣本:了解電影評論數據集/322∣8.3.2 熟悉模型:了解TextCNN模型/322∣8.3.3 數據預處理:用preprocessing接口制作字典/323∣8.3.4 代碼實現:生成NLP文本數據集/326∣8.3.5 代碼實現:定義TextCNN模型/327∣8.3.6 代碼實現:訓練TextCNN模型/330∣8.3.7 運行程序/332∣8.3.8 擴展:提升模型精度的其他方法/3338.4 實例42:用帶注意力機制的模型分析評論者是否滿意/333∣8.4.1 熟悉樣本:了解tf.keras接口中的電影評論數據集/333∣8.4.2 代碼實現:將tf.keras接口中的IMDB數據集還原成句子/334∣8.4.3 代碼實現:用tf.keras接口開發帶有位置向量的詞嵌入層/336∣8.4.4 代碼實現:用tf.keras接口開發注意力層/338∣8.4.5 代碼實現:用tf.keras接口訓練模型/340∣8.4.6 運行程序/341∣8.4.7 擴展:用Targeted Dropout技術進一步提升模型的性能/3428.5 實例43:搭建YOLO V3模型,識別圖片中的酒杯、水果等物體/343∣8.5.1 YOLO V3模型的樣本與結構/343∣8.5.2 代碼實現:Darknet-53 模型的darknet塊/344∣8.5.3 代碼實現:Darknet-53 模型的下采樣卷積/345∣8.5.4 代碼實現:搭建Darknet-53模型,并返回3種尺度特征值/345∣8.5.5 代碼實現:定義YOLO檢測模塊的參數及候選框/346∣8.5.6 代碼實現:定義YOLO檢測塊,進行多尺度特征融合/347∣8.5.7 代碼實現:將YOLO檢測塊的特征轉化為bbox attrs單元/347∣8.5.8 代碼實現:實現YOLO V3的檢測部分/349∣8.5.9 代碼實現:用非極大值抑制算法對檢測結果去重/352∣8.5.10 代碼實現:載入預訓練權重/355∣8.5.11 代碼實現:載入圖片,進行目標實物的識別/356∣8.5.12 運行程序/3588.6 實例44:用YOLO V3模型識別門牌號/359∣8.6.1 工程部署:準備樣本/359∣8.6.2 代碼實現:讀取樣本數據,并制作標簽/359∣8.6.3 代碼實現:用tf.keras接口構建YOLO V3模型,并計算損失/364∣8.6.4 代碼實現:在動態圖中訓練模型/368∣8.6.5 代碼實現:用模型識別門牌號/372∣8.6.6 擴展:標注自己的樣本/3748.7 實例45:用Mask R-CNN模型定位物體的像素點/375∣8.7.1 下載COCO數據集及安裝pycocotools/376∣8.7.2 代碼實現:驗證pycocotools及讀取COCO數據集/377∣8.7.3 拆分Mask R-CNN模型的處理步驟/383∣8.7.4 工程部署:準備代碼文件及模型/385∣8.7.5 代碼實現:加載數據創建模型,并輸出模型權重/385∣8.7.6 代碼實現:搭建殘差網絡ResNet/387∣8.7.7 代碼實現:搭建Mask R-CNN模型的骨干網絡ResNet/393∣8.7.8 代碼實現:可視化Mask R-CNN模型骨干網絡的特征輸出/396∣8.7.9 代碼實現:用特征金字塔網絡處理骨干網絡特征/400∣8.7.10 計算RPN中的錨點/402∣8.7.11 代碼實現:構建RPN/403∣8.7.12 代碼實現:用非極大值抑制算法處理RPN的結果/405∣8.7.13 代碼實現:提取RPN的檢測結果/410∣8.7.14 代碼實現:可視化RPN的檢測結果/412∣8.7.15 代碼實現:在MaskRCNN類中對ROI區域進行分類/415∣8.7.16 代碼實現:金字塔網絡的區域對齊層(ROIAlign)中的區域框與特征的匹配算法/416∣8.7.17 代碼實現:在金字塔網絡的ROIAlign層中按區域邊框提取內容/418∣8.7.18 代碼實現:調試并輸出ROIAlign層的內部運算值/421∣8.7.19 代碼實現:對ROI內容進行分類/422∣8.7.20 代碼實現:用檢測器DetectionLayer檢測ROI內容,得到最終的實物矩形/426∣8.7.21 代碼實現:根據ROI內容進行實物像素分割/432∣8.7.22 代碼實現:用Mask R-CNN模型分析圖片/436∣8.8 實例46:訓練Mask R-CNN模型,進行形狀的識別/439∣8.8.1 工程部署:準備代碼文件及模型/440∣8.8.2 樣本準備:生成隨機形狀圖片/440∣8.8.3 代碼實現:為Mask R-CNN模型添加損失函數/442∣8.8.4 代碼實現:為Mask R-CNN模型添加訓練函數,使其支持微調與全網訓練/444∣8.8.5 代碼實現:訓練并使用模型/446∣8.8.6 擴展:替換特征提取網絡/449-第9章 循環神經網絡(RNN)——處理序列樣本的神經網絡/4509.1 快速導讀/450∣9.1.1 什么是循環神經網絡/450∣9.1.2 了解RNN模型的基礎單元LSTM與GRU/451∣9.1.3 認識QRNN單元/451∣9.1.4 認識SRU單元/451∣9.1.5 認識IndRNN單元/452∣9.1.6 認識JANET單元/453∣9.1.7 優化RNN模型的技巧/453∣9.1.8 了解RNN模型中多項式分布的應用/453∣9.1.9 了解注意力機制的Seq2Seq框架/454∣9.1.10 了解BahdanauAttention與LuongAttention/456∣9.1.11 了解單調注意力機制/457∣9.1.12 了解混合注意力機制/458∣9.1.13 了解Seq2Seq接口中的采樣接口(Helper)/460∣9.1.14 了解RNN模型的Wrapper接口/460∣9.1.15 什么是時間序列(TFTS)框架/461∣9.1.16 什么是梅爾標度/461∣9.1.17 什么是短時傅立葉變換/4629.2 實例47:搭建RNN模型,為女孩生成英文名字/463∣9.2.1 代碼實現:讀取及處理樣本/463∣9.2.2 代碼實現:構建Dataset數據集/466∣9.2.3 代碼實現:用tf.keras接口構建生成式RNN模型/467∣9.2.4 代碼實現:在動態圖中訓練模型/468∣9.2.5 代碼實現:載入檢查點文件并用模型生成名字/469∣9.2.6 擴展:用RNN模型編寫文章/4719.3 實例48:用帶注意力機制的Seq2Seq模型為圖片添加內容描述/471∣9.3.1 設計基于圖片的Seq2Seq/471∣9.3.2 代碼實現:圖片預處理——用ResNet提取圖片特征并保存/472∣9.3.3 代碼實現:文本預處理——過濾處理、字典建立、對齊與向量化處理/475∣9.3.4 代碼實現:創建數據集/477∣9.3.5 代碼實現:用tf.keras接口構建Seq2Seq模型中的編碼器/477∣9.3.6 代碼實現:用tf.keras接口構建Bahdanau類型的注意力機制/478∣9.3.7 代碼實現:搭建Seq2Seq模型中的解碼器Decoder/478∣9.3.8 代碼實現:在動態圖中計算Seq2Seq模型的梯度/480∣9.3.9 代碼實現:在動態圖中為Seq2Seq模型添加檢查點功能/480∣9.3.10 代碼實現:在動態圖中訓練Seq2Seq模型/481∣9.3.11 代碼實現:用多項式分布采樣獲取圖片的內容描述/4829.4 實例49:用IndRNN與IndyLSTM單元制作聊天機器人/485∣9.4.1 下載及處理樣本/486∣9.4.2 代碼實現:讀取樣本,分詞并創建字典/487∣9.4.3 代碼實現:對樣本進行向量化、對齊、填充預處理/489∣9.4.4 代碼實現:在Seq2Seq模型中加工樣本/489∣9.4.5 代碼實現:在Seq2Seq模型中,實現基于IndRNN與IndyLSTM的動態多層RNN編碼器/491∣9.4.6 代碼實現:為Seq2Seq模型中的解碼器創建Helper/491∣9.4.7 代碼實現:實現帶有Bahdanau注意力、dropout、OutputProjectionWrapper的解碼器/492∣9.4.8 代碼實現:在Seq2Seq模型中實現反向優化/493∣9.4.9 代碼實現:創建帶有鉤子函數的估算器,并進行訓練/494∣9.4.10 代碼實現:用估算器框架評估模型/496∣9.4.11 擴展:用注意力機制的Seq2Seq模型實現中英翻譯/4989.5 實例50:預測飛機發動機的剩余使用壽命/498∣9.5.1 準備樣本/499∣9.5.2 代碼實現:預處理數據——制作數據集的輸入樣本與標簽/500∣9.5.3 代碼實現:建立帶有JANET單元的多層動態RNN模型/504∣9.5.4 代碼實現:訓練并測試模型/505∣9.5.5 運行程序/507∣9.5.6 擴展:為含有JANET單元的RNN模型添加注意力機制/5089.6 實例51:將動態路由用于RNN模型,對路透社新聞進行分類/509∣9.6.1 準備樣本/509∣9.6.2 代碼實現:預處理數據——對齊序列數據并計算長度/510∣9.6.3 代碼實現:定義數據集/510∣9.6.4 代碼實現:用動態路由算法聚合信息/511∣9.6.5 代碼實現:用IndyLSTM單元搭建RNN模型/513∣9.6.6 代碼實現:建立會話,訓練網絡/514∣9.6.7 擴展:用分級網絡將文章(長文本數據)分類/5159.7 實例52:用TFTS框架預測某地區每天的出生人數/515∣9.7.1 準備樣本/515∣9.7.2 代碼實現:數據預處理——制作TFTS框架中的讀取器/515∣9.7.3 代碼實現:用TFTS框架定義模型,并進行訓練/516∣9.7.4 代碼實現:用TFTS框架評估模型/517∣9.7.5 代碼實現:用模型進行預測,并將結果可視化/517∣9.7.6 運行程序/518∣9.7.7 擴展:用TFTS框架進行異常值檢測/5199.8 實例53:用Tacotron模型合成中文語音(TTS)/520∣9.8.1 準備安裝包及樣本數據/520∣9.8.2 代碼實現:將音頻數據分幀并轉為梅爾頻譜/521∣9.8.3 代碼實現:用多進程預處理樣本并保存結果/523∣9.8.4 拆分Tacotron網絡模型的結構/525∣9.8.5 代碼實現:搭建CBHG網絡/527∣9.8.6 代碼實現:構建帶有混合注意力機制的模塊/529∣9.8.7 代碼實現:構建自定義wrapper/531∣9.8.8 代碼實現:構建自定義采樣器/534∣9.8.9 代碼實現:構建自定義解碼器/537∣9.8.10 代碼實現:構建輸入數據集/539∣9.8.11 代碼實現:構建Tacotron網絡/542∣9.8.12 代碼實現:構建Tacotron網絡模型的訓練部分/545∣9.8.13 代碼實現:訓練模型并合成音頻文件/546∣9.8.14 擴展:用pypinyin模塊實現文字到聲音的轉換/551-========第4篇 高級-第10章 生成式模型——能夠輸出內容的模型/55410.1 快速導讀/554∣10.1.1 什么是自編碼網絡模型/554∣10.1.2 什么是對抗神經網絡模型/554∣10.1.3 自編碼網絡模型與對抗神經網絡模型的關系/555∣10.1.4 什么是批量歸一化中的自適應模式/555∣10.1.5 什么是實例歸一化/556∣10.1.6 了解SwitchableNorm及更多的歸一化方法/556∣10.1.7 什么是圖像風格轉換任務/557∣10.1.8 什么是人臉屬性編輯任務/558∣10.1.9 什么是TFgan框架/55810.2 實例54:構建DeblurGAN模型,將模糊相片變清晰/559∣10.2.1 獲取樣本/559∣10.2.2 準備SwitchableNorm算法模塊/560∣10.2.3 代碼實現:構建DeblurGAN中的生成器模型/560∣10.2.4 代碼實現:構建DeblurGAN中的判別器模型/562∣10.2.5 代碼實現:搭建DeblurGAN的完整結構/563∣10.2.6 代碼實現:引入庫文件,定義模型參數/563∣10.2.7 代碼實現:定義數據集,構建正反向模型/564∣10.2.8 代碼實現:計算特征空間損失,并將其編譯到生成器模型的訓練模型中/566∣10.2.9 代碼實現:按指定次數訓練模型/568∣10.2.10 代碼實現:用模型將模糊相片變清晰/569∣10.2.11 練習題/572∣10.2.12 擴展:DeblurGAN模型的更多妙用/57210.3 實例55:構建AttGAN模型,對照片進行加胡子、加頭簾、加眼鏡、變年輕等修改/573∣10.3.1 獲取樣本/573∣10.3.2 了解AttGAN模型的結構/574∣10.3.3 代碼實現:實現支持動態圖和靜態圖的數據集工具類/575∣10.3.4 代碼實現:將CelebA做成數據集/577∣10.3.5 代碼實現:構建AttGAN模型的編碼器/581∣10.3.6 代碼實現:構建含有轉置卷積的解碼器模型/582∣10.3.7 代碼實現:構建AttGAN模型的判別器模型部分/584∣10.3.8 代碼實現:定義模型參數,并構建AttGAN模型/585∣10.3.9 代碼實現:定義訓練參數,搭建正反向模型/587∣10.3.10 代碼實現:訓練模型/592∣10.3.11 擴展實例56:為人臉添加不同的眼鏡/595∣10.3.12 擴展:AttGAN模型的局限性/59710.4 實例57:用RNN.WGAN模型模擬生成惡意請求/597∣10.4.1 獲取樣本:通過Panabit設備獲取惡意請求樣本/597∣10.4.2 了解RNN.WGAN模型/600∣10.4.3 代碼實現:構建RNN.WGAN模型/601∣10.4.4 代碼實現:訓練指定長度的RNN.WGAN模型/607∣10.4.5 代碼實現:用長度依次遞增的方式訓練模型/612∣10.4.6 運行代碼/613∣10.4.7 擴展:模型的使用及優化/614-第11章 模型的攻與防——看似智能的AI也有脆弱的一面/61611.1 快速導讀/616∣11.1.1 什么是FGSM方法/616∣11.1.2 什么是cleverhans模塊/616∣11.1.3 什么是黑箱攻擊/617∣11.1.4 什么是基于雅可比矩陣的數據增強方法/618∣11.1.5 什么是數據中毒攻擊/62011.2 實例58:用FGSM方法生成樣本,并攻擊PNASNet模型,讓其將“狗”識別成“盤子”/621∣11.2.1 代碼實現:創建PNASNet模型/621∣11.2.2 代碼實現:搭建輸入層并載入圖片,復現PNASNet模型的預測效果/623∣11.2.3 代碼實現:調整參數,定義圖片的變化范圍/624∣11.2.4 代碼實現:用梯度下降方式生成對抗樣本/625∣11.2.5 代碼實現:用生成的樣本攻擊模型/626∣11.2.6 擴展:如何防范攻擊模型的行為/627∣11.2.7 代碼實現:將數據增強方式用在使用場景,以加固PNASNet模型,防范攻擊/62711.3 實例59:擊破數據增強防護,制作抗旋轉對抗樣本/629∣11.3.1 代碼實現:對輸入的數據進行多次旋轉/629∣11.3.2 代碼實現:生成并保存魯棒性更好的對抗樣本/630∣11.3.3 代碼實現:在PNASNet模型中比較對抗樣本的效果/63111.4 實例60:以黑箱方式攻擊未知模型/633∣11.4.1 準備工程代碼/633∣11.4.2 代碼實現:搭建通用模型框架/634∣11.4.3 代碼實現:搭建被攻擊模型/637∣11.4.4 代碼實現:訓練被攻擊模型/638∣11.4.5 代碼實現:搭建替代模型/639∣11.4.6 代碼實現:訓練替代模型/639∣11.4.7 代碼實現:黑箱攻擊目標模型/641∣11.4.8 擴展:利用黑箱攻擊中的對抗樣本加固模型/645-=====第5篇 實戰——深度學習實際應用-第12章 TensorFlow模型制作——一種功能,多種身份/64812.1 快速導讀/648∣12.1.1 詳細分析檢查點文件/648∣12.1.2 什么是模型中的凍結圖/649∣12.1.3 什么是TF Serving模塊與saved_model模塊/649∣12.1.4 用編譯子圖(defun)提升動態圖的執行效率/649∣12.1.5 什么是TF_Lite模塊/652∣12.1.6 什么是TFjs-converter模塊/65312.2 實例61:在源碼與檢查點文件分離的情況下,對模型進行二次訓練/653∣12.2.1 代碼實現:在線性回歸模型中,向檢查點文件中添加指定節點/654∣12.2.2 代碼實現:在脫離源碼的情況下,用檢查點文件進行二次訓練/657∣12.2.3 擴展:更通用的二次訓練方法/65912.3 實例62:導出/導入凍結圖文件/661∣12.3.1 熟悉TensorFlow中的freeze_graph工具腳本/661∣12.3.2 代碼實現:從線性回歸模型中導出凍結圖文件/662∣12.3.3 代碼實現:導入凍結圖,并用模型進行預測/66412.4 實例63:逆向分析凍結圖模型/665∣12.4.1 使用import_to_tensorboard工具/666∣12.4.2 用TensorBoard工具查看模型結構/66612.5 實例64:用saved_model模塊導出與導入模型文件/668∣12.5.1 代碼實現:用saved_model模塊導出模型文件/668∣12.5.2 代碼實現:用saved_model模塊導入模型文件/669∣12.5.3 擴展:用saved_model模塊導出帶有簽名的模型文件/67012.6 實例65:用saved_model_cli工具查看及使用saved_model模型/672∣12.6.1 用show參數查看模型/672∣12.6.2 用run參數運行模型/673∣12.6.3 擴展:了解scan參數的黑名單機制/674∣12.7 實例66:用TF-Hub庫導入、導出詞嵌入模型文件/674∣12.7.1 代碼實現:模擬生成通用詞嵌入模型/674∣12.7.2 代碼實現:用TF-Hub庫導出詞嵌入模型/675∣12.7.3 代碼實現:導出TF-Hub模型/678∣12.7.4 代碼實現:用TF-Hub庫導入并使用詞嵌入模型/680-第13章 部署TensorFlow模型——模型與項目的深度結合/68113.1 快速導讀/681∣13.1.1 什么是gRPC服務與HTTP/REST API/681∣13.1.2 了解TensorFlow對移動終端的支持/682∣13.1.3 了解樹莓派上的人工智能/68313.2 實例67:用TF_Serving部署模型并進行遠程使用/684∣13.2.1 在Linux系統中安裝TF_Serving/684∣13.2.2 在多平臺中用Docker安裝TF_Serving/685∣13.2.3 編寫代碼:固定模型的簽名信息/686∣13.2.4 在Linux中開啟TF_Serving服務/688∣13.2.5 編寫代碼:用gRPC訪問遠程TF_Serving服務/689∣13.2.6 用HTTP/REST API訪問遠程TF_Serving服務/691∣13.2.7 擴展:關于TF_Serving的更多例子/69413.3 實例68:在安卓手機上識別男女/694∣13.3.1 準備工程代碼/694∣13.3.2 微調預訓練模型/695∣13.3.3 搭建安卓開發環境/698∣13.3.4 制作lite模型文件/701∣13.3.5 修改分類器代碼,并運行APP/70213.4 實例69:在iPhone手機上識別男女并進行活體檢測/703∣13.4.1 搭建iOS開發環境/703∣13.4.2 布署工程代碼并編譯/704∣13.4.3 載入Lite模型,實現識別男女功能/706∣13.4.4 代碼實現:調用攝像頭并采集視頻流/707∣13.4.5 代碼實現:提取人臉特征/710∣13.4.6 活體檢測算法介紹/712∣13.4.7 代碼實現:實現活體檢測算法/713∣13.4.8 代碼實現:完成整體功能并運行程序/71413.5 實例70:在樹莓派上搭建一個目標檢測器/717∣13.5.1 安裝樹莓派系統/718∣13.5.2 在樹莓派上安裝TensorFlow/721∣13.5.3 編譯并安裝Protobuf/725∣13.5.4 安裝OpenCV/726∣13.5.5 下載目標檢測模型SSDLite/726∣13.5.6 代碼實現:用SSDLite 模型進行目標檢測/727-第14章 商業實例——科技源于生活,用于生活/73014.1 實例71:將特征匹配技術應用在商標識別領域/730∣14.1.1 項目背景/730∣14.1.2 技術方案/730∣14.1.3 預處理圖片——統一尺寸/731∣14.1.4 用自編碼網絡加夾角余弦實現商標識別/731∣14.1.5 用卷積網絡加triplet-loss提升特征提取效果/731∣14.1.6 進一步的優化空間/73214.2 實例72:用RNN抓取蠕蟲病毒/732∣14.2.1 項目背景/733∣14.2.2 判斷是否惡意域名不能只靠域名/733∣14.2.3 如何識別惡意域名/73314.3 實例73:迎賓機器人的技術關注點——體驗優先/734∣14.3.1 迎賓機器人的產品背景/734∣14.3.2 迎賓機器人的實現方案/734∣14.3.3 迎賓機器人的同類產品/73614.4 實例74:基于攝像頭的路邊停車場項目/737∣14.4.1 項目背景/737∣14.4.2 技術方案/738∣14.4.3 方案缺陷/738∣14.4.4 工程化補救方案/73814.5 實例75:智能冰箱產品——硬件成本之痛/739∣14.5.1 智能冰箱系列的產品背景/739∣14.5.2 智能冰箱的技術基礎/740∣14.5.3 真實的非功能性需求——低成本/740∣14.5.4 未來的技術趨勢及應對策略/741