官术网_书友最值得收藏!

關于本書

我們寫本書的目的是為大家介紹PyTorch深度學習的基礎知識,并以一個實際項目來展示。我們力圖介紹深度學習底層的核心思想,并向讀者展示PyTorch如何將其實現。在本書中,我們試圖提供直觀印象以幫助大家進一步探索,同時,我們選擇性地深入細節,以解剖其背后的奧妙。

本書并不是一本參考書,相反,它是一本概念性的指南,旨在引導你在網上獨立探索更高級的材料。因此,我們關注的是PyTorch提供的一部分特性,最值得注意的是循環神經網絡,但PyTorch API的其他部分也同樣值得重視。

讀者對象

本書適用于那些已成為或打算成為深度學習實踐者以及想了解PyTorch的開發人員。我們假設本書的讀者是一些計算機科學家、數據科學家、軟件工程師、大學生或以后會學習相關課程的學生。由于我們并不要求讀者有深度學習的先驗知識,因此本書前半部分的某些內容可能對有經驗的實踐者來說是一些已經了解的概念。對這些讀者來說,我們希望本書能夠提供一個與已知主題稍有不同的視角。

我們希望讀者具備命令式編程和面向對象編程的基本知識。由于本書使用的編程語言是Python,因此大家需要熟悉Python的語法和操作環境,了解如何在所選擇的平臺上安裝Python包和運行腳本。熟悉C++、Java、JavaScript、Ruby或其他類似語言的讀者應該可以輕松上手,但是需要在本書之外做一些補充。同樣,如果讀者熟悉NumPy也很有用,但這并不是強制要求的。我們也希望讀者熟悉線性代數的一些基礎知識,如知道什么是矩陣、向量和點積。

本書的組織結構:路線圖

本書由3個部分組成。第1部分介紹基礎知識;第2部分在第1部分的基礎上介紹一個端到端的項目,并增加更高級的概念;簡短的第3部分以PyTorch部署之旅結束本書。大家可能會注意到各部分的寫作風格和圖片風格不同。盡管本書是無數小時的協同計劃、討論和編輯的結果,但寫作和繪圖的工作被分成了幾部分。Luca主要負責第1部分,Eli主要負責第2部分[1],Thomas主要負責第3部分(他試圖在第3部分將第1部分和第2部分的寫作風格結合起來)。我們決定保留這些部分的原始風格,而不是一味尋找各部分風格的共同點。以下是各部分所包括的章及其概述。

第1部分

在第1部分中,我們在PyTorch的使用上邁出第一步,了解PyTorch項目并開始掌握構建自己的項目所需要的基本技能。我們將介紹PyTorch API和一些PyTorch庫背后的特性,并訓練一個初始的分類模型。在第1部分結束時,我們將準備處理一個真實的項目。

第1章介紹PyTorch用于深度學習的庫及其在“深度學習革命”中的地位,并探討PyTorch與其他深度學習框架的區別。

第2章通過運行一些預先訓練好的網絡示例來展示PyTorch的實際應用,演示如何在PyTorch Hub中下載和運行模型。

第3章介紹PyTorch的基本構建組件——張量,介紹張量的一些API,并深入底層介紹一些實現細節。

第4章展示不同類型的數據如何被表示為張量,以及深度學習模型期望構造什么樣的張量。

第5章介紹梯度下降機制,以及PyTorch如何實現自動微分。

第6章展示利用PyTorch的神經網絡(nn)和優化(optim)模塊來建立和訓練一個用于回歸的神經網絡的過程。

第7章在第6章的基礎上介紹構建一個用于圖像分類的全連接層模型,并擴展介紹PyTorch API的知識。

第8章介紹卷積神經網絡,并探討關于構建神經網絡模型及其PyTorch實現方面更高級的概念。

第2部分

在第2部分中,每一章都會讓我們更接近一個全面的肺癌自動檢測解決方案。我們將把這個難題作為動機來演示解決諸如肺癌篩查的大規模問題所需的實際方法。這是一個專注于數據清洗工程、故障排除和問題求解的大型項目。

第9章從CT成像開始,介紹用于肺腫瘤分類的端到端策略。

第10章介紹使用標準PyTorch API加載人工標注數據和CT掃描的圖像,并將相關信息轉換為張量。

第11章介紹第1個分類模型,該模型基于第10章介紹的訓練數據構建。本章還會介紹對模型進行訓練,收集基本的性能指標,并使用張量可視化工具TensorBoard來監控訓練。

第12章探討并介紹實現標準性能指標,以及使用這些指標來識別之前完成的訓練中的缺陷。然后,介紹通過使用經過數據平衡和數據增強方法改進過的數據集來彌補這些缺陷。

第13章介紹分割,即像素到像素的模型架構,以及使用它來生成覆蓋整個CT掃描的可能結節位置的熱力圖。這張熱力圖可以用來在CT掃描中找到非人工標注數據的結節。

第14章介紹實現最終的端到端項目:使用新的分割模型和分類方法對癌癥患者進行診斷。

第3部分

第3部分為第15章,主要介紹部署相關內容,概述如何將PyTorch模型部署到簡單的Web服務中,或將它們嵌入C++程序中,抑或將它們發布到移動電話上。

關于代碼

本書中所有的代碼都是基于Python 3.6及以上的版本編寫的。本書中的代碼可以從異步社區中獲取。編寫本書時,Python的最新版本是3.6.8,本書正是使用該版本來測試書中的例子的。例如:

$ python
Python 3.6.8 (default, Jan 14 2019, 11:02:34)
[GCC 8.0.1 20180414 on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

在Bash提示符下輸入的命令行以$開頭(如本例中的$ python行),固定寬度的內聯代碼看起來像Python中的self用法一樣。

以>>>開頭的代碼塊是Python交互式提示符下的會話腳本。提示符>>>本身不被視為輸入,輸出文本行也不以>>>和…開頭。在某些情況下,在>>>之前插入一個額外的空行,以提高輸出的可讀性。當你在交互式提示符下輸入實際的文本時,這些空白行并不包括在內。

>>> print("Hello, world!")
Hello, world!

>>>  print("Until next time...") ?--- 在實際的交互式會話期間不會出現此空行
Until next time...

我們也大量使用Jupyter Notebook,如第1章1.5.1小節所述。我們提供的作為官方GitHub倉庫的Jupyter Notebook代碼如下所示:

# In[1]:
print("Hello, world!")

# Out[1]:
Hello, world!

# In[2]:
print("Until next time...")

# Out[2]:
Until next time...

絕大多數Jupyter Notebook中的示例代碼在第1個單元格(cell,一對In Out會話被視作一個代碼單元)中包含以下模板代碼(在前幾章的代碼中可能缺少模板代碼中的某幾行),這些模板代碼在之后的代碼中我們不再提及。

# In[1]:
%matplotlib inline
from matplotlib import pyplot as plt
import numpy as np

import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim

torch.set_printoptions(edgeitems=2)
torch.manual_seed(123)

另外,代碼塊是.py源文件的一部分或是一份完整的代碼。

代碼清單 main.py:5, def main

def main():
    print("Hello, world!")

if __name__ == '__main__':
    main()

書中的許多代碼示例都使用了2空格縮進。由于版面的限制,代碼清單中的每行被限制在80個字符以內,這對于大量縮進的代碼段是不切實際的。使用2空格縮進有助于減少換行。本書所有的代碼都可以下載(同樣請訪問異步社區的本書頁面),這些代碼使用的是一致的4空格縮進。以_t作為后綴的變量是用于CPU存儲器的張量,以_g作為后綴的變量用于GPU存儲器,以_a作為后綴的變量是NumPy數組。

軟件和硬件要求

第1部分不需要任何特定的計算資源,當前任何計算機或在線的計算資源都是足夠的,也不需要特定的操作系統。第2部分我們計劃完成一個完整的訓練運行環境,將需要一個支持CUDA的GPU。第2部分中使用的默認環境配置參數假定為一個有8GB RAM的GPU(我們建議使用NVIDIA GTX 1070或更高的配置),如果你的硬件可用的RAM較少,這些參數可以進行調整。第2部分的癌癥檢測項目需要下載大約60GB的原始數據,因此至少需要200GB的可用磁盤空間用于訓練。幸運的是,某些在線計算服務提供免費使用一定時長的GPU,我們將在適當的部分更詳細地討論計算所需的資源需求。

你需要Python 3.6或更高的版本,相關說明在Python官網上可以找到。有關PyTorch的安裝信息,請參閱PyTorch官方網站的入門指南。我們建議Windows用戶安裝Anaconda或Miniconda。用戶若使用其他操作系統,諸如Linux,通常有更多的可行選項,其中pip是Python最常用的包管理器。我們提供了一個名為requirements.txt的文件,pip可以按照該文件來安裝依賴項。由于目前的蘋果筆記本計算機沒有支持CUDA的GPU,因此對于采用macOS的PyTorch預編譯軟件包只支持CPU。當然,有經驗的用戶可以自由地安裝與你首選的開發環境最兼容的軟件包。

其他在線資源

雖然本書沒有假設讀者有深度學習的先驗知識,但本書并不是深度學習的基礎導論。本書涵蓋基礎知識,但我們的重點是熟練使用PyTorch庫。我們鼓勵有興趣的讀者通過閱讀本書建立對深度學習的直觀理解。為此,Grokking Deep Learning是一本非常值得學習的書,可以幫助大家開發一個強大心智模型,并直觀地了解深度神經網絡的機制。要獲得全面的介紹和參考,我們建議你閱讀Goodfellow等人編寫的Deep Learning[2]。當然,Manning出版社有一個關于深度學習的目錄列表,其中涵蓋了該領域各種各樣的主題。你可以根據自己的興趣,從中選擇一本作為你下一步要閱讀的書。


[1] Eli和Thomas的寫作風格在其他部分也有所體現,如果某章的寫作風格改變了,大家不要感到震驚!

[2] 中文版《深度學習》由人民郵電出版社出版。——譯者注

主站蜘蛛池模板: 香河县| 莱阳市| 灵寿县| 大埔区| 鱼台县| 富锦市| 从化市| 惠水县| 五原县| 荔波县| 南昌县| 彭阳县| 龙海市| 临高县| 峨眉山市| 黄大仙区| 福海县| 陵水| 个旧市| 温宿县| 横山县| 奉化市| 沙湾县| 岫岩| 株洲市| 鹤山市| 广汉市| 兴义市| 贵德县| 吴忠市| 大方县| 彰化县| 莒南县| 吉首市| 洛阳市| 贡觉县| 来凤县| 成安县| 敦化市| 铁岭县| 扎鲁特旗|