PyTorch是一個Python庫,可以幫助我們構建深度學習項目,。它強調靈活性并允許我們使用熟悉的Python格式來表達深度學習模型,。PyTorch的易用性使得其很早便被研究社區(qū)所接納,,并且自官方庫發(fā)布以來的幾年中,,它已成長為最廣泛應用的深度學習工具之一。PyTorch提供了一個核心數據結構——Tensor,,這是一個與NumPy數組非常相似的多維數組,。 基于Tensor構建了一系列功能,以簡化項目的啟動和運行,,以及對設計和訓練一個新的神經網絡體系結構的探索,。Tensor可用于加速數學運算(假設硬件和軟件搭配適當),除此之外,,PyTorch內置的包可用于分布式訓練,、高效數據加載,并且內置了大量常用的深度學習函數,。正如Python用于編程一樣,,PyTorch不僅是入門深度學習的杰出工具,,同時也是在專業(yè)環(huán)境下用于現實世界中高水平作業(yè)的工具。本書旨在為精通Python并愿意使用PyTorch來構建深度學習項目的軟件工程師,、數據科學家和積極進取的學生提供入門方法,。為此,書中采取了動手實戰(zhàn)的教學方式,。本書十分鼓勵在學習本書的同時隨時準備好使用計算機,,以便親自動手體驗相關案例,并繼續(xù)做更進一步的探索,。盡管深度學習的動手實踐很重要,,但是本書不僅僅是只作為一個工具技能使用的參考,更希望本書能夠幫助下一代的研究者和從業(yè)人員在未來幾十年的工作中,,將書中學到的理論知識作為骨架構建起新的軟件和應用,。
- 一些Python的編程經驗,,但不必有壓力,,僅僅需要掌握常見的Python數據類型、類,、和浮點數等相關知識,;
- 一顆愿意動手的心。跟著書中的知識動手實踐會使得學習變得更加容易,。
深度學習是一個龐大的學科領域,。本書只會涉及該領域中的一小部分,使用PyTorch構建一些小規(guī)模的項目,。大多數的項目示例中會用到2D和3D圖像數據集的處理,。本書專注于PyTorch的實戰(zhàn)練習,希望幫助讀者打好基礎,,從而能夠利用深度學習來解決現實問題或探索研究文獻中的新模型,。ArXiV存儲了很多深度學習相關的最新研究,托管地址是https://,。通過給模型輸送數據的方式,,深度學習可以執(zhí)行各種復雜的任務,例如機器翻譯,,玩策略游戲以及識別混亂場景中的目標物,。但是完成這些任務需要靈活的工具,可以應對不同的場景,,同時能提高效率,,可在較短時間內完成對大量數據的訓練。而且讀者有時也會需要預訓練好的網絡能夠對未知的輸入數據順利執(zhí)行,并得出正確的結果,。PyTorch非常容易上手,。許多研究者和從業(yè)者都認為PyTorch易于學習、使用,、擴展功能和調試代碼,。風格Python化,對于任何有過Python編程經驗的研發(fā)者來說,,使用PyTorch會有種非常熟悉的感覺,。 對于那些熟悉NumPy數組的研發(fā)者,PyTorch中的Tensor類會變得非常容易,。PyTorch感覺就像是能夠在GPU上運行并且?guī)в凶詣忧髮Чδ艿腘umPy,,非常適合于深度學習中的反向傳播。Tensor API功能非常強大,,基本可以滿足用戶的大部分需求,。PyTorch的設計理念是強大的表達能力,允許開發(fā)人員在實現復雜模型的同時避免增加不必要的復雜性(庫不是一個框架,,感覺這里在暗指某廠 - -),。在深度學習領域,PyTorch可以說是最容易將想法轉換為代碼實現的深度學習庫,。因此,,PyTorch已在研究中得到廣泛采用,國際會議的高引用率證明了這一點(哈哈,,感覺作者有點小傲嬌),。PyTorch也能完成從研發(fā)到生產的過渡。盡管PyTorch最初專注于研究,,但它也配備了高性能的C++運行引擎,,用戶完全可以脫離Python來部署模型,這一做法保留了PyTorch的大部分靈活性,,并且可以擺脫Python運行機制的限制,。作者認為當你精讀完本書一定會認同他的觀點(最后還是承認自賣自夸不太合適,還是得實踐出真知哈),。The deep learning revolution 在這一節(jié)中,,我們將介紹一些歷史來作證PyTorch適合深度學習(嗯,,作者自夸還是很有一套的),。 直到2000年代末,常用的“機器學習”系統(tǒng)還是非常依賴于特征工程,。特征是輸入數據的數值表征,,其產生的數值特征有助于后續(xù)算法(例如分類器)在面對新數據時獲得正確的結果。特征工程將原始的輸入數據轉換成特征,以便輸入給某個算法來解決某個問題。例如,,在手寫數字圖像中把0和1區(qū)分開,,可能需要使用一組filters來預估圖像上邊緣的方向并訓練一個分類器。之后給定一個邊緣方向的分布,,分類器就可以預測出準確的數字,。除了邊緣,特征也可能是零,、八或兩個環(huán)中的兩個封閉圓的數量,。與機器學習不同的是,深度學習從原始數據中自動學習特征,,進而成功地執(zhí)行任務,。在區(qū)分1和0的例子中,將在訓練過程中不斷迭代輸入數據和標簽來改進filters,。這并不是說特性工程在深度學習中不重要,,開發(fā)人員通常需要將某種形式的知識注入到學習系統(tǒng)中。然而,,神經網絡能夠根據輸入數據提取出有價值的特征,,這正是深層學習如此強大的原因。深度學習實踐者的重點不是關注如何人為提取這些特征,,而是思考模型架構,,使得該模型能夠從訓練數據中自主地提取特征。通常,,這些自動提取的特征比手工提取的特征要更具有代表性,!和其他的許多顛覆性技術一樣,這項技術也提供了不同的思路,。下圖中左側是一個機器學習的例子,,研發(fā)者忙于定義特征工程,模型最終的效果取決于研發(fā)者所提取特征的表征能力,。右側采用深度學習,,直接將原始 數據輸入給算法,基于優(yōu)化算法自動提取特征,,模型最終的效果取決于研發(fā)者根據任務所用的算法性能,。
|