深度學習之TensorFlow工程化項目實戰 ( 簡體 字) |
作者:李金洪 | 類別:1. -> 程式設計 -> 深度學習 |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 51217 詢問書籍請說出此書號!【缺書】 NT售價: 795 元 |
出版日:5/1/2019 |
頁數:768 |
光碟數:0 |
|
站長推薦:  |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121363924 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: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章 搭建開發環境/5 2.1 準備硬件環境/5 2.2 下載及安裝Anaconda/6 2.3 安裝TensorFlow/9 2.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 常見錯誤及解決方案/16 2.5 測試顯卡的常用命令/16 2.6 TensorFlow 1.x版本與2.x版本共存的解決方案/18 - 第3章 實例1:用AI模型識別圖像是桌子、貓、狗,還是其他/21 3.1 準備代碼環境并預訓練模型/21 3.2 代碼實現:初始化環境變量,并載入ImgNet標簽/24 3.3 代碼實現:定義網絡結構/25 3.4 代碼實現:載入模型進行識別/26 3.5 擴展:用更多預訓練模型完成圖片分類任務/28 ∣ ===== 第2篇 基礎 ∣ 第4章 用TensorFlow制作自己的數據集/30 4.1 快速導讀/30 ∣4.1.1 什么是數據集/30 ∣4.1.2 TensorFlow的框架/31 ∣4.1.3 什么是TFDS/31 4.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 代碼實現:創建帶有迭代值并支持亂序功能的模擬數據集/35 4.3 實例3:將圖片制作成內存對象數據集/37 ∣4.3.1 樣本介紹/38 ∣4.3.2 代碼實現:載入文件名稱與標簽/39 ∣4.3.3 代碼實現:生成隊列中的批次樣本數據/40 ∣4.3.4 代碼實現:在會話中使用數據集/41 ∣4.3.5 運行程序/42 4.4 實例4:將Excel文件制作成內存對象數據集/42 ∣4.4.1 樣本介紹/43 ∣4.4.2 代碼實現:逐行讀取數據并分離標簽/43 ∣4.4.3 代碼實現:生成隊列中的批次樣本數據/44 ∣4.4.4 代碼實現:在會話中使用數據集/45 ∣4.4.5 運行程序/46 4.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 運行程序/51 4.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接口的注意事項/62 4.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 運行程序/68 4.8 實例8:將TFRecord文件制作成Dataset數據集/69 ∣4.8.1 樣本介紹/69 ∣4.8.2 代碼實現:定義函數,生成Dataset對象/70 ∣4.8.3 代碼實現:建立會話輸出數據/71 ∣4.8.4 運行程序/72 4.9 實例9:在動態圖中讀取Dataset數據集/72 ∣4.9.1 代碼實現:添加動態圖調用/72 ∣4.9.2 制作數據集/73 ∣4.9.3 代碼實現:在動態圖中顯示數據/73 ∣4.9.4 擴展示例10:在TensorFlow 2.x中操作數據集/74 4.10 實例11:在不同場景中使用數據集/77 ∣4.10.1 代碼實現:在訓練場景中使用數據集/78 ∣4.10.2 代碼實現:在應用模型場景中使用數據集/79 ∣4.10.3 代碼實現:在訓練與測試混合場景中使用數據集/80 4.11 tf.data.Dataset接口的更多應用/81 - 第5章 10分鐘快速訓練自己的圖片分類模型/82 5.1 快速導讀/82 ∣5.1.1 認識模型和模型檢查點文件/82 ∣5.1.2 了解“預訓練模型”與微調(Fine-Tune)/82 ∣5.1.3 學習TensorFlow中的預訓練模型庫——TF-Hub庫/83 5.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 代碼實現:測試模型/96 5.3 擴展:通過攝像頭實時分辨男女/100 5.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編寫訓練模型的程序/117 6.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中的新特性——自動圖/130 6.2 實例14:用靜態圖訓練一個具有保存檢查點功能的回歸模型/131 ∣6.2.1 準備開發步驟/131 ∣6.2.2 生成檢查點文件/131 ∣6.2.3 載入檢查點文件/132 ∣6.2.4 代碼實現:在線性回歸模型中加入保存檢查點功能/132 ∣6.2.5 修改迭代次數,二次訓練/135 6.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:在靜態圖中使用動態圖/145 6.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:為估算器添加日志鉤子函數/159 6.5 實例20:將估算器代碼改寫成靜態圖代碼/161 ∣6.5.1 代碼實現:復制網絡結構/161 ∣6.5.2 代碼實現:重用輸入函數/163 ∣6.5.3 代碼實現:創建會話恢復模型/163 ∣6.5.4 代碼實現:繼續訓練/163 6.6 實例21:用tf.layers API在動態圖上識別手寫數字/165 ∣6.6.1 代碼實現:啟動動態圖并加載手寫圖片數據集/165 ∣6.6.2 代碼實現:定義模型的類/166 ∣6.6.3 代碼實現:定義網絡的反向傳播/167 ∣6.6.4 代碼實現:訓練模型/167 6.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接口/178 6.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 接口的應用場景/182 6.9 實例26:用估算器框架實現分布式部署訓練/182 ∣6.9.1 運行程序:修改估算器模型,使其支持分布式/182 ∣6.9.2 通過TF_CONFIG進行分布式配置/183 ∣6.9.3 運行程序/185 ∣6.9.4 擴展:用分布策略或KubeFlow框架進行分布式部署/186 6.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 擴展:全連接網絡的優化/190 6.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模塊評估模型/195 6.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框架中,如何選取合適的模型及超參/202 6.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章 特征工程——會說話的數據/208 7.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 聯合訓練與集成學習/214 7.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 運行程序/228 7.3 實例32:用弱學習器中的梯度提升樹算法預測人口收入/229 ∣7.3.1 代碼實現:為梯度提升樹模型準備特征列/230 ∣7.3.2 代碼實現:構建梯度提升樹模型/230 ∣7.3.3 代碼實現:訓練并導出梯度提升樹模型/231 ∣7.3.4 代碼實現:設置啟動參數,運行程序/232 ∣7.3.5 擴展:更靈活的TFBT接口/233 7.4 實例33:用feature_column模塊轉換特征列/233 ∣7.4.1 代碼實現:用feature_column模塊處理連續值特征列/234 ∣7.4.2 代碼實現:將連續值特征列轉化成離散值特征列/237 ∣7.4.3 代碼實現:將離散文本特征列轉化為one-hot與詞向量/239 ∣7.4.4 代碼實現:根據特征列生成交叉列/246 7.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 代碼實現:建立會話輸出結果/251 7.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 擴展:聚類與神經網絡混合訓練/258 7.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的估算器接口/265 7.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:將點陣模型嵌入神經網絡中/274 7.9 實例38:結合知識圖譜實現基于電影的推薦系統/278 ∣7.9.1 準備數據集/278 ∣7.9.2 預處理數據/279 ∣7.9.3 搭建MKR模型/279 ∣7.9.4 訓練模型并輸出結果/286 7.10 總結:可解釋性算法的意義/286 - 第8章 卷積神經網絡(CNN)——在圖像處理中應用最廣泛的模型/287 8.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 什么是圖片分割任務/301 8.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路由的膠囊網絡/314 8.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 擴展:提升模型精度的其他方法/333 8.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技術進一步提升模型的性能/342 8.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 運行程序/358 8.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 擴展:標注自己的樣本/374 8.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)——處理序列樣本的神經網絡/450 9.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 什么是短時傅立葉變換/462 9.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模型編寫文章/471 9.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 代碼實現:用多項式分布采樣獲取圖片的內容描述/482 9.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模型實現中英翻譯/498 9.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模型添加注意力機制/508 9.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 擴展:用分級網絡將文章(長文本數據)分類/515 9.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框架進行異常值檢測/519 9.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章 生成式模型——能夠輸出內容的模型/554 10.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框架/558 10.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模型的更多妙用/572 10.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模型的局限性/597 10.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也有脆弱的一面/616 11.1 快速導讀/616 ∣11.1.1 什么是FGSM方法/616 ∣11.1.2 什么是cleverhans模塊/616 ∣11.1.3 什么是黑箱攻擊/617 ∣11.1.4 什么是基于雅可比矩陣的數據增強方法/618 ∣11.1.5 什么是數據中毒攻擊/620 11.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模型,防范攻擊/627 11.3 實例59:擊破數據增強防護,制作抗旋轉對抗樣本/629 ∣11.3.1 代碼實現:對輸入的數據進行多次旋轉/629 ∣11.3.2 代碼實現:生成并保存魯棒性更好的對抗樣本/630 ∣11.3.3 代碼實現:在PNASNet模型中比較對抗樣本的效果/631 11.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模型制作——一種功能,多種身份/648 12.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模塊/653 12.2 實例61:在源碼與檢查點文件分離的情況下,對模型進行二次訓練/653 ∣12.2.1 代碼實現:在線性回歸模型中,向檢查點文件中添加指定節點/654 ∣12.2.2 代碼實現:在脫離源碼的情況下,用檢查點文件進行二次訓練/657 ∣12.2.3 擴展:更通用的二次訓練方法/659 12.3 實例62:導出/導入凍結圖文件/661 ∣12.3.1 熟悉TensorFlow中的freeze_graph工具腳本/661 ∣12.3.2 代碼實現:從線性回歸模型中導出凍結圖文件/662 ∣12.3.3 代碼實現:導入凍結圖,并用模型進行預測/664 12.4 實例63:逆向分析凍結圖模型/665 ∣12.4.1 使用import_to_tensorboard工具/666 ∣12.4.2 用TensorBoard工具查看模型結構/666 12.5 實例64:用saved_model模塊導出與導入模型文件/668 ∣12.5.1 代碼實現:用saved_model模塊導出模型文件/668 ∣12.5.2 代碼實現:用saved_model模塊導入模型文件/669 ∣12.5.3 擴展:用saved_model模塊導出帶有簽名的模型文件/670 12.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模型——模型與項目的深度結合/681 13.1 快速導讀/681 ∣13.1.1 什么是gRPC服務與HTTP/REST API/681 ∣13.1.2 了解TensorFlow對移動終端的支持/682 ∣13.1.3 了解樹莓派上的人工智能/683 13.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的更多例子/694 13.3 實例68:在安卓手機上識別男女/694 ∣13.3.1 準備工程代碼/694 ∣13.3.2 微調預訓練模型/695 ∣13.3.3 搭建安卓開發環境/698 ∣13.3.4 制作lite模型文件/701 ∣13.3.5 修改分類器代碼,并運行APP/702 13.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 代碼實現:完成整體功能并運行程序/714 13.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章 商業實例——科技源于生活,用于生活/730 14.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 進一步的優化空間/732 14.2 實例72:用RNN抓取蠕蟲病毒/732 ∣14.2.1 項目背景/733 ∣14.2.2 判斷是否惡意域名不能只靠域名/733 ∣14.2.3 如何識別惡意域名/733 14.3 實例73:迎賓機器人的技術關注點——體驗優先/734 ∣14.3.1 迎賓機器人的產品背景/734 ∣14.3.2 迎賓機器人的實現方案/734 ∣14.3.3 迎賓機器人的同類產品/736 14.4 實例74:基于攝像頭的路邊停車場項目/737 ∣14.4.1 項目背景/737 ∣14.4.2 技術方案/738 ∣14.4.3 方案缺陷/738 ∣14.4.4 工程化補救方案/738 14.5 實例75:智能冰箱產品——硬件成本之痛/739 ∣14.5.1 智能冰箱系列的產品背景/739 ∣14.5.2 智能冰箱的技術基礎/740 ∣14.5.3 真實的非功能性需求——低成本/740 ∣14.5.4 未來的技術趨勢及應對策略/741 |
序: |