预购商品
书目分类
特别推荐
雖然很多深度學習工具都使用Python,但PyTorch 庫是真正具備Pytho風格的。對於任何瞭解NumPy 和scikit-lear等工具的人來說,上手PyTorch 輕而易舉。PyTorch 在不犧牲高級特性的情況下簡化了深度學習,它非常適合構建快速模型,並且可以平穩地從個人應用擴展到企業級應用。由於像蘋果、Facebook和摩根大通這樣的公司都使用PyTorch,所以當你掌握了PyTorth,就會擁有更多的職業選擇。 本書是教你使用 PyTorch 創建神經網路和深度學習系統的實用指南。它幫助讀者快速從零開始構建一個真實示例:腫瘤圖像分類器。在此過程中,它涵蓋了整個深度學習管道的關鍵實踐,包括 PyTorch張量 API、用 Pytho載入資料、監控訓練以及將結果進行視覺化展示。 本書主要內容: (1)訓練深層神經網路; (2)實現模組和損失函數; (3)使用 PyTorch Hub 預先訓練的模型; (4)探索在 Jupyter Notebooks 中編寫示例代碼。 本書適用於對深度學習感興趣的 Pytho程式師。瞭解深度學習的基礎知識對閱讀本書有的幫助,但讀者無須具有使用 PyTorch 或其他深度學習框架的經驗。
第1部分 PyTorch核心 第1章 深度學習和PyTorch庫簡介 3 1.1 深度學習革命 4 1.2 PyTorch深度學習 5 1.3 為什麼用PyTorch 6 1.4 PyTorch如何支持深度學習概述 8 1.5 硬體和軟體要求 10 1.6 練習題 12 1.7 本章小結 13 第2章 預訓練網路 14 2.1 一個識別圖像主體的預訓練網路 15 2.1.1 獲取一個預先訓練好的網路用於圖像識別 16 2.1.2 AlexNet 17 2.1.3 ResNet 19 2.1.4 準備運行 19 2.1.5 運行模型 21 2.2 一個足以以假亂真的預訓練模型 23 2.2.1 GAN遊戲 24 2.2.2 CycleGAN 25 2.2.3 一個把馬成斑馬的網路 26 2.3 一個描述場景的預訓練網路 29 2.4 Torch Hub 31 2.5 總結 32 2.6 練習題 32 2.7 本章小結 33 第3章 從張量開始 34 3.1 實際數據轉為浮點數 34 3.2 張量:多維數組 36 3.2.1 從Python列表到PyTorch張量 36 3.2.2 構造第 1個張量 37 3.2.3 張量的本質 37 3.3 索引張量 40 3.4 命名張量 40 3.5 張量的元素類型 43 3.5.1 使用dtype指定數字類型 43 3.5.2 適合任何場合的dtype 44 3.5.3 管理張量的dtype屬性 44 3.6 張量的API 45 3.7 張量的存儲視圖 46 3.7.1 索引存儲區 47 3.7.2 修改存儲值:就地操作 48 3.8 張量元數據:大小、偏移量和步長 48 3.8.1 另一個張量的存儲視圖 49 3.8.2 無轉置 51 3.8.3 高維轉置 52 3.8.4 連續張量 53 3.9 將張量存儲到GPU 55 3.10 NumPy互通性 57 3.11 廣義張量也是張量 57 3.12 序列化張量 58 3.13 總結 60 3.14 練習題 60 3.15 本章小結 60 第4章 使用張量表徵真實數據 61 4.1 處理圖像 62 4.1.1 添加顏色通道 62 4.1.2 載入影像檔 63 4.1.3 改佈局 63 4.1.4 正規化數據 64 4.2 三維圖像:體數據 65 4.3 表示表格數據 66 4.3.1 使用真實的數據集 67 4.3.2 載入葡萄酒數據張量 68 4.3.3 表示分數 70 4.3.4 獨熱編碼 70 4.3.5 何時分類 72 4.3.6 尋找閾值 73 4.4 處理時間序列 75 4.4.1 增加時間維度 76 4.4.2 按時間段調整數據 77 4.4.3 準備訓練 79 4.5 表示文本 81 4.5.1 將文本轉化為數字 81 4.5.2 獨熱編碼字元 82 4.5.3 獨熱編碼整個詞 83 4.5.4 文本嵌入 85 4.5.5 作為藍圖的文本嵌入 87 4.6 總結 88 4.7 練習題 88 4.8 本章小結 88 第5章 學習的機制 90 5.1 永恆的建模經驗 90 5.2 學習就是參數估計 92 5.2.1 一個熱點問題 93 5.2.2 收集一些數據 93 5.2.3 視覺化數據 94 5.2.4 選擇線性模型首試 94 5.3 減少損失是我們想要的 95 5.4 沿著梯度下降 98 5.4.1 減小損失 99 5.4.2 進行分析 99 5.4.3 反覆運算以適應模型 101 5.4.4 歸一化輸入 104 5.4.5 再次視覺化數據 106 5.5 PyTorch自動求導:反向傳播的一切 107 5.5.1 自動計算梯度 107 5.5.2 優化器 111 5.5.3 訓練、驗證和過擬合 115 5.5.4 自動求導更新及關閉 120 5.6 總結 121 5.7 練習題 122 5.8 本章小結 122 第6章 使用神經網路擬合數據 123 6.1 人工神經網路 124 6.1.1 組成一個多層網路 125 6.1.2 理解誤差函數 125 6.1.3 我們需要的只是啟動函數 126 6.1.4 更多啟動函數 128 6.1.5 選擇佳啟動函數 128 6.1.6 學習對於神經網路意味著什麼 129 6.2 PyTorch nn模組 131 6.2.1 使用__call__而不是forward 132 6.2.2 回到線性模型 133 6.3 終完成一個神經網路 137 6.3.1 替換線性模型 137 6.3.2 檢查參數 138 6.3.3 與線性模型對比 141 6.4 總結 142 6.5 練習題 142 6.6 本章小結 142 第7章 區分鳥和飛機:從圖像學習 143 7.1 微小圖像數據集 143 7.1.1 下載CIFAR-10 144 7.1.2 Dataset類 145 7.1.3 Dataset換 146 7.1.4 數據歸一化 149 7.2 區分鳥和飛機 150 7.2.1 構建數據集 151 7.2.2 一個全連接模型 152 7.2.3 分類器的輸出 153 7.2.4 用概率表示輸出 154 7.2.5 分類的損失 157 7.2.6 訓練分類器 159 7.2.7 全連接網路的局限 165 7.3 總結 167 7.4 練習題 167 7.5 本章小結 168 第8章 使用卷積進行泛化 169 8.1 卷積介紹 169 8.2 卷積實戰 172 8.2.1 填充邊界 173 8.2.2 用卷積檢測特徵 175 8.2.3 使用深度和池化技術進一步研究 177 8.2.4 為我們的網路整合一切 179 8.3 子類化nn.Module 181 8.3.1 將我們的網路作為一個nn.Module 182 8.3.2 PyTorch如何跟蹤參數和子模組 183 8.3.3 函數式API 184 8.4 訓練我們的conv 185 8.4.1 測量精度 187 8.4.2 保存並載入我們的模型 188 8.4.3 在GPU上訓練 188 8.5 模型設計 190 8.5.1 增加記憶體容量:寬度 191 8.5.2 説明我們的模型收斂和泛化:正則化 192 8.5.3 深入學習更複雜的結構:深度 195 8.5.4 本節設計的比較 200 8.5.5 已經過時了 201 8.6 總結 201 8.7 練習題 201 8.8 本章小結 202 第2部分 從現實世界的圖像中學習:肺癌的早期檢測 第9章 使用PyTorch來檢測癌症 205 9.1 用例簡介 205 9.2 為一個大型項目做準備 206 9.3 到底什麼是CT掃描 207 9.4 項目:肺癌的端到端檢測儀 210 9.4.1 為什麼我們不把數據扔給神經網路直到它起作用呢 213 9.4.2 什麼是結節 216 9.4.3 我們的數據來源:LUNA大挑戰賽 217 9.4.4 下載LUNA數據集 218 9.5 總結 219 9.6 本章小結 219 第10章 將數據源組合成統一的數據集 220 10.1 原始CT數據檔 222 10.2 解析LUNA的標注 數據 222 10.2.1 訓練集和驗證集 224 10.2.2 統一標注和候選 數據 225 10.3 載入單個CT掃描 227 10.4 使用病人坐標系定位結節 230 10.4.1 病人坐標系 230 10.4.2 CT掃描形狀和體素大小 232 10.4.3 毫米和體素位址之間的轉換 233 10.4.4 從CT掃描中取出一個結節 234 10.5 一個簡單的數據集實現 235 10.5.1 使用getCtRawCandidate函數緩存候選數組 238 10.5.2 在LunaDataset.__init__中構造我們的數據集 238 10.5.3 分隔訓練集和驗證集 239 10.5.4 呈現數據 240 10.6 總結 241 10.7 練習題 241 10.8 本章小結 242 第11章 訓練分類模型以檢測可疑腫瘤 243 11.1 一個基本的模型和訓練迴圈 243 11.2 應用程式的主入口點 246 11.3 預訓練和初始化 247 11.3.1 初始化模型和優化器 247 11.3.2 數據載入器的維護和供給 249 11.4 我們的首次神經網路設計 251 11.4.1 核心卷積 251 11.4.2 完整模型 254 11.5 訓練和驗證模型 257 11.5.1 puteBatchLoss函數 258 11.5.2 類似的驗證迴圈 260 11.6 輸出性能指標 261 11.7 運行訓練腳本 265 11.7.1 訓練所需的數據 266 11.7.2 插曲:enumerateWithEstimate函數 266 11.8 評估模型:得到99.7%的正確率是否意味著我們完成了任務 268 11.9 用TensorBoard繪製訓練指標 269 11.9.1 運行TensorBoard 269 11.9.2 增加TensorBoard對指標記錄函數的支援 272 11.10 為什麼模型不學習檢測結節 274 11.11 總結 275 11.12 練習題 275 11.13 本章小結 275 第12章 通過指標和數據增強來提升訓練 277 12.1 高級改進計畫 278 12.2 好狗與壞狗:假陽性與假陰性 279 12.3 用圖表表示陽性與陰性 280 12.3.1 召回率是Roe的強項 282 12.3.2 精度是Preston的強項 283 12.3.3 在logMetrics中實現精度和召回率 284 12.3.4 我們的性能指標:F1分數 285 12.3.5 我們的模型在新指標下表現如何 289 12.4 理想的數據集是什麼樣的 290 12.4.1 使數據看起來更理想化 292 12.4.2 使用平衡的LunaDataset與之前的數據集運行情況對比 296 12.4.3 認識過擬合 298 12.5 重新審視過擬合的問題 300 12.6 通過數據增強防止過擬合 300 12.6.1 具體的數據增強技術 301 12.6.2 看看數據增強帶來的改進 306 12.7 總結 308 12.8 練習題 308 12.9 本章小結 309 第13章 利用分割法尋找可疑結節 310 13.1 向我們的項目添加第 2個模型 310 13.2 各種類型的分割 312 13.3 語義分割:逐圖元分類 313 13.4 更新分割模型 317 13.5 更新數據集以進行分割 319 13.5.1 U-Net有非常具體的對輸入大小的要求 320 13.5.2 U-Net對三維和二維數據的權衡 320 13.5.3 構建真實、有效的數據集 321 13.5.4 實現Luna2dSegmentationDataset 327 13.5.5 構建訓練和驗證數據 331 13.5.6 實現TrainingLuna2dSegmentationDataset 332 13.5.7 在GPU上增強數據 333 13.6 更新用於分割的訓練腳本 335 13.6.1 初始化分割和增強模型 336 13.6.2 使用Adam優化器 336 13.6.3 骰子損失 337 13.6.4 將圖像導入TensorBoard 340 13.6.5 更新指標日誌 343 13.6.6 保存模型 344 13.7 結果 345 13.8 總結 348 13.9 練習題 348 13.10 本章小結 349 第14章 端到端的結節分析及下一步的方向 350 14.1 接近終點線 350 14.2 驗證集的獨立性 352 14.3 連接CT分割和候選結節分類 353 14.3.1 分割 354 14.3.2 將體素分組為候選結節 355 14.3.3 我們發現結節了?分類以減少假陽性 357 14.4 定量驗證 360 14.5 預測惡性腫瘤 361 14.5.1 獲取惡性腫瘤資訊 361 14.5.2 曲線基線下的區域:按直徑分類 362 14.5.3 重用預先存在的權重:微調 365 14.5.4 TensorBoard中的輸出 370 14.6 在診斷時所見的內容 374 14.7 接下來呢?其他靈感和數據的來源 376 14.7.1 防止過擬合:更好的正則化 377 14.7.2 精細化訓練數據 379 14.7.3 競賽結果及研究論文 380 14.8 總結 381 14.9 練習題 382 14.10 本章小結 383 第3部分 部署 第15章 部署到生產環境 387 15.1 PyTorch模型的服務 388 15.1.1 支援Flask服務的模型 388 15.1.2 我們想從部署中得到的東西 390 15.1.3 批次處理請求 391 15.2 匯出模型 395 15.2.1 PyTorch與ONNX的互通性 396 15.2.2 PyTorch自己的匯出:跟蹤 397 15.2.3 具有跟蹤模型的伺服器 398 15.3 與PyTorch JIT編譯器交互 398 15.3.1 經典Python/PyTorch的期望是什麼 399 15.3.2 PyTorch作為介面和後端的雙重特性 400 15.3.3 TorchScript 400 15.3.4 為可追溯的差異編寫腳本 404 15.4 LibTorch:C++中的PyTorch 405 15.4.1 從C++中運行JITed模型 405 15.4.2 從C++ API開始 408 15.5 部署到移動設備 411 15.6 新興技術:PyTorch 模型的企業服務 416 15.7 總結 416 15.8 練習題 416 15.9 本章小結 416
伊萊.史蒂文斯(Eli Stevens)職業生涯的大部分時間都在美國硅谷的初創公司工作,從軟件工程師(網路設備製造業)到首席技術官(開發腫瘤放療軟件)。在本書出版時,他正在汽車自動駕駛行業從事機器學習相關工作。 盧卡.安蒂加(Luca Antiga)於21 世紀初擔任生物醫學工程研究員。2010 年到2020 年間,他是一家人工智慧工程公司的聯合創始人和首席技術官。他參與了多個開源項目,包括PyTorch的核心模組。最近,他作為聯合創始人創建了一家總部位於美國的初創公司,專注于資料定義軟件的基礎設施。 湯瑪斯.菲曼(Thomas Viehmann)是一名德國慕尼克的機器學習和PyTorch 的專業培訓師和顧問,也是PyTorch 核心開發人員。擁有數學博士學位的他不畏懼理論,擅長將理論應用於實際的計算挑戰。
客服公告
热门活动
订阅电子报