在一年一度的開發者大會F8上,Facebook放出PyTorch的1.1版本,直指TensorFlow「腹地」。算法
不只宣佈支持TensorFlow的可視化工具TensorBoard,還正式向工業界邁進,新推出訓練 AI 系統」跨 GPU 分割神經網絡「功能。爲生產環境改進了PyTorch處理分佈式訓練的方式。PyTorch路線圖的下一步是,以更少的比特數運行神經網絡,實現更快的CPU和GPU性能,並支持AI從業者建立命名張量維數。編程
PyTorch是Fackebok於2017年初在機器學和科學計算工具Torch的基礎上,針對Python語言發佈的一個全新的機器學習工具包。一經發布,PyTorch就受到了業界的普遍關注和討論,目前PyTorch已經成爲機器學習從業人員最重要的研發工具之一。網絡
相較於更適合大規模部署,尤爲是涉及跨平臺和嵌入式部署的TensorFlow,PyTorch更適合用於研究、愛好者和小規模項目的快速原型開發;並且在下面這些方面至關有優點:用於研究或者用於生產的非功能性需求並非很苛刻;須要更好的開發和調試經驗;愛全部Python化的東西。架構
對於深度學習從業人員來講,PyTorch是TensorFlow以外的一個絕佳選擇。經過學習瞭解不一樣深度學習框架,能夠豐富其知識技能,針對實際業務需求選擇最合適的框架。學習他小編推薦《PyTorch深度學習》。框架
Artificial Intelligence is the new electricity!(人工智能猶如新型電力!)機器學習
電能的應用曾爲無數行業帶來了鉅變,現在人工智能也將帶來一樣的震撼。分佈式
人工智能和深度學習雖然常常被當成同義詞使用,但實際上這兩個術語有本質的區別。咱們會從專業的角度解釋這兩個術語,做爲業內人士的你就能夠像區分信號和噪聲同樣區分它們。函數
傳統機器學習算法使用手寫的特徵提取代碼來訓練算法,而深度學習算法使用現代技術自動提取這些特徵。工具
例如,一個用於預測圖像是否包含人臉的深度學習算法將在第一層檢查邊緣,第二層檢測鼻子和眼睛等形狀,最後一層檢測面部形狀或者更復雜的結構(見圖1.3)。每一層都基於前一層的數據表示進行訓練。若是你們以爲上面的解釋理解起來有些困難,請不要擔憂,本書的後續章節會更直觀地構造和詳細解釋這樣的網絡。性能
圖1.3 中間層的可視化輸出
得益於GPU、大數據、雲提供商如 Amazon Web Services(AWS)和Google Cloud,以及Torch、TensorFlow、Caffe和PyTorch這些框架的出現,深度學習的應用在過去幾年出現了巨大的增加。除此以外,一些大型公司還分享了已在龐大的數據集上訓練好的算法,於是使得後來者能夠通過不多的改動就可以以幾種用例爲基礎構建最早進的系統。
深度學習一些流行的應用以下:
圖1.4所示爲一個用於總結段落大意的簡例,計算機讀入一大段文本,並用幾行總結出中心語義。
圖1.4 計算機生成的本文摘要
接下來,咱們把圖1.5做爲普通的圖片輸入給計算機,並不告知計算機圖像中展現的是什麼。藉助對象檢測技術和詞典的幫助,咱們獲得的圖像描述是:兩個小女孩正在玩樂高玩具。計算機太聰明瞭,不是嗎?
圖1.5 對象檢測和圖像標註
媒體人士和人工智能領域外的人士,以及那些並不是真正的人工智能和深度學習參與者,一直暗示說,隨着人工智能和深度學習的進步,電影Terminator 2: Judgement Day中的場景會成爲現實。有些甚至在談論人類終將被機器人控制的時代,那時機器人將決定什麼對人類有益。目前而言,人工智能的能力被過度誇大了。現階段,大多數深度學習系統都部署在一個很是受控的環境中,並給出了有限的決策邊界。
個人想法是,當這些系統可以學會作出智能決策,而非僅僅完成模式匹配,當數以千百計的深度學習算法能夠協同工做,那時也許咱們有但願見到相似科幻電影中同樣表現的機器人。事實上,咱們尚不能實現通用的人工智能,即機器能夠在沒有指示的狀況下作任何事。如今的深度學習大可能是關於如何尋找現有數據的模式並預測將來結果。做爲深度學習業者,咱們應該像區別信號和噪聲同樣區分這些不實說法。
儘管深度學習在最近幾年纔開始廣爲流行,但其背後的理論早在20世紀50年代就開始造成了。表1.1給出了現今深度學習應用中最受歡迎的技術和出現的大概的時間點。
深度學習這個術語過去有幾種不一樣的叫法。20世紀70年代咱們稱之爲控制論(cybernetics),20世紀80年代稱之爲聯結主義(connectionism),而如今稱之爲深度學習或神經網絡。咱們將交替使用深度學習和神經網絡這兩個術語。神經網絡一般指的是那些受人腦運做啓發的算法。然而,做爲深度學習的從業者,咱們應明白神經網絡主要是由強大的數學理論(線性代數和微積分)、統計學(機率)和軟件工程激勵和支持的。
表1.1
技術 |
年份 |
神經網絡 |
1943 |
反向傳播 |
20世紀60年代初期 |
卷積神經網絡 |
1979 |
循環神經網絡 |
1980 |
長短時間記憶網絡 |
1997 |
爲什麼如今深度學習這麼流行?一些關鍵緣由以下:
深度學習要在數百萬甚至數十億的參數上進行復雜的數學運算。儘管過去這些年有所提升,但僅依靠如今的CPU執行這些運算極其耗時。一種叫做圖形處理單元(Graphics Processing Unit,GPU)的新型硬件在完成這些大規模的數學運算(如矩陣乘法)時能夠高出幾個數量級。
GPU最初是Nvidia和AMD公司爲遊戲產業而開發的。事實證實這種硬件極其高效。Nvidia最近的一款產品1080ti,僅用了幾天時間就構建了一個基於ImageNet數據集的圖像分類系統,而此前這須要大概1個月的時間。
若是打算購買用於深度學習的硬件,建議用戶根據預算選擇一款Nvidia的內存較大的GPU。記住,計算機內存和GPU內存並不相同,1080ti帶有大約11GB的內存,它的價格在700美圓左右。
你也可使用各類雲服務,如AWS、Google Cloud或Floyd(這家公司提供專爲深度學習優化的GPU機器)。若是剛開始深度學習,或在財務受限的狀況下爲公司的應用配置機器時,使用雲服務就很經濟。
優化後的系統性能可能有較大提高。
圖1.6所示爲不一樣CPU和GPU的性能基準的對比。
圖1.6 基於不一樣CPU和GPU的神經網絡架構的性能基準
數據是完成深度學習最重要的組成部分,因爲互聯網的普及和智能手機應用的增加,一些大公司,如Facebook和Google,能夠收集到大量不一樣格式的數據,特別是文本、圖片、視頻和音頻這類數據。在計算機視覺領域,ImageNet競賽在提供1,000種類別中的140萬張圖片的數據集方面發揮了巨大做用。
這些圖像類別是手工標註的,每一年都有數百個團隊參與競賽。過去比賽中一些成功的算法有VGG、ResNet、Inception、DenseNet等。如今這些算法已在行業中獲得應用,用於解決各類計算機視覺問題。深度學習領域還有其餘一些流行的數據集,這些數據集常被用於創建不一樣算法的性能基準:
各類不一樣算法的發展,如批規一化、激活函數、跳躍式鏈接(skip connection)、長短時間記憶網絡(LSTM)、dropout等,使得最近幾年能夠更快並更成功地訓練極深度網絡。本書接下來的章節中,咱們將深刻每種技術的細節,以及如何使用這些技術構建更好的模型。
在早期,人們須要具有C++和CUDA的專業知識來實現深度學習算法。如今隨着不少公司將它們的深度學習框架開源,使得那些具備腳本語言知識(如Python)的人,也能夠開始構建和使用深度學習算法。今天,這個行業中流行的深度學習框架有TensorFlow、Caffe二、Keras、Theano、PyTorch、Chainer、DyNet、MXNet和CNTK。
若是沒有這些框架,深度學習的應用也不會如此普遍。它們抽象出許多底層的複雜度,讓咱們能夠專一於應用。咱們尚處於深度學習的早期階段,不少組織機構都在對深度學習進行大量研究,幾乎天天都有突破性的成果,於是,各類框架也都各有利弊。
PyTorch
PyTorch以及其餘大多數深度學習框架,主要用於兩個方面:
讓PyTorch愈來愈受歡迎的是它的易用性和簡單性。不一樣於其餘大多數流行的使用靜態計算圖的深度學習框架,PyTorch使用動態計算,所以在構建複雜架構時能夠有更高的靈活性。
PyTorch大量使用了Python概念,例如類、結構和條件循環,容許用戶以純面向對象的方式構建深度學習算法。大部分的其餘流行框架引進了本身的編程風格,有時編寫新算法會很複雜,甚至不支持直觀的調試。後續章節將詳細討論計算圖。
儘管PyTorch新近才發佈而且還處於β版本,因爲它的簡單易用和出色的性能、易於調試性,以及來自不一樣公司如SalesForce等的強大支持,PyTorch受到了數據科學家和深度學習研究人員的巨大歡迎。
因爲PyTorch最初主要爲研究目的而構建,所以不建議用於那些對延遲要求很是高的生產環境。然而,隨着名爲Open Neural Network Exchange(ONNX)的新項目的出現,這種狀況正在發生改變,該項目的重點是將在PyTorch上開發的模型部署到適用於生產的Caffe2這樣的平臺上。在本書寫做時,這個項目剛剛啓動,於是過多的定論還爲時尚早。該項目了獲得Facebook和微軟的支持。
在本書的其他部分,咱們將學習用於構建計算機視覺和天然語言處理領域的強大深度學習應用的各類模塊(較小的概念或技術)。
書名:《PyTorch深度學習》
做者:做者 [印度]毗溼奴•布拉馬尼亞(Vishnu Subramanian)
譯者:王海玲 劉江峯
編輯推薦:
PyTorch是Facebook於2017年初在機器學習和科學計算工具Torch的基礎上,針對Python語言發佈的一個全新的機器學習工具包,一經推出便受到了業界的普遍關注和討論,目前已經成爲機器學習從業人員首選的一款研發工具。 《PyTorch深度學習》是使用PyTorch構建神經網絡模型的實用指南,包括PyTorch與深度學習的基礎知識、神經網絡的構成、神經網絡的高級知識、機器學習基礎知識、深度學習在計算機視覺中的應用、深度學習在序列數據和文本中的應用、生成網絡、現代網絡架構,以PyTorch與深度學習的將來走向。
- END -