-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

深度學習之TensorFlow工程化項目實戰

( 簡體 字)
作者:李金洪類別:1. -> 程式設計 -> 深度學習
譯者:
出版社:電子工業出版社深度學習之TensorFlow工程化項目實戰 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
序: