PyTorch與深度學(xué)習(xí)實戰(zhàn) 課件全套 第1-7章 深度學(xué)習(xí)概述- 基于TipDM大數(shù)據(jù)挖掘建模平臺實現(xiàn)文本生成_第1頁
PyTorch與深度學(xué)習(xí)實戰(zhàn) 課件全套 第1-7章 深度學(xué)習(xí)概述- 基于TipDM大數(shù)據(jù)挖掘建模平臺實現(xiàn)文本生成_第2頁
PyTorch與深度學(xué)習(xí)實戰(zhàn) 課件全套 第1-7章 深度學(xué)習(xí)概述- 基于TipDM大數(shù)據(jù)挖掘建模平臺實現(xiàn)文本生成_第3頁
PyTorch與深度學(xué)習(xí)實戰(zhàn) 課件全套 第1-7章 深度學(xué)習(xí)概述- 基于TipDM大數(shù)據(jù)挖掘建模平臺實現(xiàn)文本生成_第4頁
PyTorch與深度學(xué)習(xí)實戰(zhàn) 課件全套 第1-7章 深度學(xué)習(xí)概述- 基于TipDM大數(shù)據(jù)挖掘建模平臺實現(xiàn)文本生成_第5頁
已閱讀5頁,還剩450頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

深度學(xué)習(xí)簡介1深度學(xué)習(xí)常見應(yīng)用目錄深度學(xué)習(xí)的定義2深度學(xué)習(xí)目前在很多領(lǐng)域的表現(xiàn)都優(yōu)于過去的方法,在圖像分類與識別、語音識別與合成、人臉識別、視頻分類與行為識別等領(lǐng)域都有著不俗的表現(xiàn)。除此以外,深度學(xué)習(xí)還涉及到與生活相關(guān)的紋理識別、行人檢測、場景標(biāo)記、門牌識別等領(lǐng)域。人臉識別采用深度學(xué)習(xí)方法后的識別率超過了目前非深度學(xué)習(xí)算法以及人類的識別率,深度學(xué)習(xí)技術(shù)在語音識別領(lǐng)域更是取得了突破性的進展,在大規(guī)模圖像分類問題上也遠(yuǎn)超傳統(tǒng)方法。深度學(xué)習(xí)的定義深度學(xué)習(xí)(DeepLearning,DL)是機器學(xué)習(xí)(MachineLearning,ML)領(lǐng)域中一個新的研究方向,深度學(xué)習(xí)被引入機器學(xué)習(xí)使其更接近于最初的目標(biāo)——人工智能(ArtificialIntelligence,AI)。深度學(xué)習(xí)的目標(biāo)是學(xué)習(xí)樣本數(shù)據(jù)的內(nèi)在規(guī)律和表示層次。在2015年第9期《自然》雜志中,存在與深度學(xué)習(xí)定義相關(guān)的內(nèi)容:深度學(xué)習(xí)方法是具有多層次特征描述的特征學(xué)習(xí),通過一些簡單但非線性的模塊將每一層特征描述(從未加工的數(shù)據(jù)開始)轉(zhuǎn)化為更高一層的、更為抽象一些的特征描述。深度學(xué)習(xí)的定義深度學(xué)習(xí)的關(guān)鍵在于這些層次的特征不是由人工設(shè)計的,而是使用一種通用的學(xué)習(xí)步驟從數(shù)據(jù)中學(xué)習(xí)獲取的。這些學(xué)習(xí)過程中獲得的信息對文字、圖像和聲音等數(shù)據(jù)的解釋有很大的幫助。深度學(xué)習(xí)在搜索技術(shù)、數(shù)據(jù)挖掘、機器翻譯、多媒體學(xué)習(xí)、語音識別、推薦和個性化技術(shù)以及其他相關(guān)領(lǐng)域都取得了很多成果。深度學(xué)習(xí)使機器模仿視聽和思考等人類的活動,解決了很多復(fù)雜的模式識別難題,使得人工智能相關(guān)技術(shù)取得了很大進步,最終目標(biāo)是讓機器能夠像人一樣具有分析學(xué)習(xí)能力。深度學(xué)習(xí)的定義20世紀(jì)80、90年代,由于計算機計算能力有限和相關(guān)技術(shù)的限制,可用于分析的數(shù)據(jù)量太小,深度學(xué)習(xí)在模式分析中并沒有表現(xiàn)出優(yōu)異的識別性能。在2002年,杰弗里·辛頓(GeoffreyHinton)等提出受限玻耳茲曼機(RestrictedBoltzmannMachines,RBM)的一個快速學(xué)習(xí)算法,即對比散度算法(ContrastiveDivergence,CD-K)以后,啟發(fā)了被廣泛使用的深度信念網(wǎng)絡(luò)(DeepBeliefNets,DBN)等深度網(wǎng)絡(luò)的出現(xiàn)。與此同時,能自動從數(shù)據(jù)中提取特征的稀疏編碼技術(shù)也被應(yīng)用于深度學(xué)習(xí)中。近年來,隨著深度學(xué)習(xí)技術(shù)在圖像領(lǐng)域上的應(yīng)用,能夠提取局部區(qū)域特征的卷積神經(jīng)網(wǎng)絡(luò)方法被大量研究。深度學(xué)習(xí)的定義1深度學(xué)習(xí)常見應(yīng)用目錄深度學(xué)習(xí)的定義2深度學(xué)習(xí)的常見應(yīng)用有圖像分類、圖像分割、圖像生成、圖像標(biāo)題的生成、圖像風(fēng)格變換、目標(biāo)檢測、物體測量、物體分揀、視覺定位、情感分析、無人駕駛、機器翻譯、文本到語音轉(zhuǎn)換、手寫文字轉(zhuǎn)錄和音頻生成。深度學(xué)習(xí)常見應(yīng)用圖像分類的核心是從給定的分類集合中,給圖像分配一個標(biāo)簽的任務(wù)。實際上,圖像分類是分析一個輸入圖像并返回一個將圖像分類的標(biāo)簽。標(biāo)簽總是來自預(yù)定義的可能類別集。利用深度學(xué)習(xí)算法可以實現(xiàn)對貓的圖像進行分類,如下圖所示。圖像分類圖像分割就是將圖像分成若干個特定的、具有獨特性質(zhì)的區(qū)域并提出感興趣目標(biāo)的技術(shù)和過程,它是由圖像處理到圖像分析的關(guān)鍵步驟。從數(shù)學(xué)角度來看,圖像分割是將數(shù)字圖像劃分成互不相交的區(qū)域的過程。圖像分割的過程也是一個標(biāo)記過程,即把屬于同一區(qū)域的像素賦予相同的編號。圖像分割對街道車輛圖像進行分割的結(jié)果,如下圖所示。圖像分割有一種新的研究,能實現(xiàn)在生成圖像的過程中不需要另外輸入任何圖像,只要前期使用大量的真實圖像讓網(wǎng)絡(luò)進行學(xué)習(xí),即可由網(wǎng)絡(luò)自動生成新的圖像。目前常見的生成模型有VAE系列、GAN系列等。其中GAN系列算法近年來取得了巨大的進展,最新GAN模型產(chǎn)生的圖片效果達到了肉眼難辨真?zhèn)蔚某潭取D像生成GAN模型生成的假動漫人物圖像如下圖所示。圖像生成神經(jīng)圖像標(biāo)題(NeuralImageCaption,NIC)模型會自動生成介紹輸入圖像的文字。該模型由深層的卷積神經(jīng)網(wǎng)絡(luò)和自然語言語言處理的循環(huán)神經(jīng)網(wǎng)絡(luò)(RecurrentNeuralNetwork,RNN)構(gòu)成。卷積神經(jīng)網(wǎng)絡(luò)提取圖像特征,RNN生成文本。圖像標(biāo)題生成輸入的原圖像如下圖所示,可以生成諸如“一群人正在騎馬”或“一群人正在草原上騎馬”或“一群人正在藍(lán)天白云下的草原上享受騎馬”等標(biāo)題。圖像標(biāo)題生成圖像風(fēng)格的變換是利用了卷積神經(jīng)網(wǎng)絡(luò)可以提取高層特征的效果,不在像素級別進行損失函數(shù)的計算,而是將原圖像和生成圖像都輸入至一個已經(jīng)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)里,在得到的某種特征表示上計算歐式距離(內(nèi)容損失函數(shù))。這樣得到的圖像與原圖內(nèi)容相似,但像素級別不一定相似,且所得圖像更具魯棒性。輸入兩個圖像,計算機會生成一個新的圖像。圖像風(fēng)格轉(zhuǎn)換兩個輸入圖像中,一個稱為“內(nèi)容圖像”,如圖1-5所示;另外一個稱為“風(fēng)格圖像”,如圖1-6所示。如果將梵高的繪畫風(fēng)格應(yīng)用于內(nèi)容圖像上,那么深度學(xué)習(xí)會按照要求繪制出新風(fēng)格,其輸出圖像如圖1-7所示。圖像風(fēng)格轉(zhuǎn)換目標(biāo)檢測就是從圖像中確定物體的位置,并對物體進行分類。根據(jù)騎行圖像對騎行者進行檢測,如下圖所示。目標(biāo)檢測目標(biāo)檢測是機器視覺領(lǐng)域最主要的應(yīng)用之一,例如,汽車違規(guī)行駛的檢測會為了保障行車、行人的安全在路口安裝交通檢測系統(tǒng),檢測汽車的行駛速度是否超過限制、是否存在違規(guī)變道行為、是否存在闖紅燈行為、是否遮擋車牌、是否系安全帶等。而人工檢測存在著較多的弊端,如準(zhǔn)確率低,長時間工作準(zhǔn)確性更是無法保障,而且檢測速度慢,容易出現(xiàn)錯判和漏判。因此,機器視覺在目標(biāo)檢測的應(yīng)用方面也就顯得非常重要。目標(biāo)檢測目標(biāo)檢測比物體識別更難。原因在于目標(biāo)檢測需要從圖像中確定物體的位置,有時還有可能存在多個物體。對于這樣的問題,人們提出了多個基于卷積神經(jīng)網(wǎng)絡(luò)(ConvolutionalNeuralNetworks,CNN)的方法,這些方法有著非常優(yōu)秀的性能。在使用卷積神經(jīng)網(wǎng)絡(luò)進行目標(biāo)檢測的方法中,區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(Region-ConvolutionalNeuralNetworks,R-CNN)較早地運用在目標(biāo)檢測上,因此該算法較為成熟。R-CNN算法在提高訓(xùn)練和測試的速度的同時提高了檢測精度。目標(biāo)檢測在日常生活中,物體測量通常是對物體的質(zhì)量、長度、高度、體積等進行測量。在機器視覺應(yīng)用中,使用光的反射進行非接觸式測量,如右圖所示,是某款手機使用非接觸光學(xué)測量方法對桌子進行的測量。物體測量技術(shù)多用于工業(yè)方面,主要包括對汽車零部件、齒輪、半導(dǎo)體元件管腳、螺紋等進行測量。物體測量物體分揀是建立在識別、檢測之后的一個環(huán)節(jié),通過機器視覺對圖像中的目標(biāo)進行檢測和識別,實現(xiàn)自動分揀,如下圖所示。物體分揀在工業(yè)應(yīng)用領(lǐng)域常用于食品分揀、零件表面瑕疵自動分揀、棉花纖維分揀等。同時,物體分揀在物流、倉庫中的運用更為廣泛,在分揀過程中,機器通過按照物品種類、物品大小、出入庫的先后順序等方法對物體進行分揀。物體分揀視覺定位要求機器能夠快速準(zhǔn)確地找到被測零件并確認(rèn)其位置,如下圖所示。在半導(dǎo)體封裝領(lǐng)域,設(shè)備需要根據(jù)機器視覺取得芯片位置信息、調(diào)整拾取頭、準(zhǔn)確拾取芯片并進行綁定,這就是視覺定位在機器視覺工業(yè)領(lǐng)域最基本的應(yīng)用。視覺定位情感分析最核心的問題就是從一段文字中判斷作者對主體的評價是好評還是差評。針對通用場景下帶有主觀描述的中文文本,利用深度學(xué)習(xí)算法自動判斷該文本的情感極性類別并給出相應(yīng)的置信度,情感極性分為積極、消極、中性或更多維的情緒,情感分析的例子如下圖所示。情感分析無人駕駛被認(rèn)為是強化學(xué)習(xí)短期內(nèi)能技術(shù)落地的一個應(yīng)用方向,很多公司投入大量資源在無人駕駛上,其中百度的無人巴士“阿波龍”已經(jīng)在北京、武漢等地展開試運營,自動無人駕駛的行車視野如下圖所示。未來生活中,深度學(xué)習(xí)算法在交通領(lǐng)域的應(yīng)用,可能會創(chuàng)造出一個完全智能調(diào)度的移動出行網(wǎng)絡(luò)。無人駕駛機器翻譯技術(shù)的發(fā)展一直與計算機技術(shù)、信息論、語言學(xué)等學(xué)科的發(fā)展緊密相隨。從早期的詞典匹配,到詞典結(jié)合語言學(xué)專家知識的規(guī)則翻譯,再到基于語料庫的統(tǒng)計機器翻譯,隨著計算機運算能力的提升和多語言信息資源的爆發(fā)式增長,機器翻譯技術(shù)逐漸開始為普通用戶提供實時便捷的翻譯服務(wù)。1954年,英俄機器翻譯試驗的成功,向公眾和科學(xué)界展示了機器翻譯的可行性,從而拉開了機器翻譯研究的序幕。1966年,機器翻譯研究因各種原因陷入了近乎停滯的僵局。70年代后,計算機科學(xué)、語言學(xué)研究的發(fā)展,從技術(shù)層面推動了機器翻譯研究的復(fù)蘇。機器翻譯隨著互聯(lián)網(wǎng)的普遍應(yīng)用,世界經(jīng)濟一體化進程的加速以及國際社會交流的日漸頻繁,傳統(tǒng)的人工作業(yè)的方式已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足迅猛增長的翻譯需求,機器翻譯迎來了一個新的發(fā)展機遇。機器翻譯的效果如下圖所示,左邊為需要翻譯成英文的中文文本,右邊是由機器翻譯出來的英文文本。機器翻譯基于文本生成人工合成的語音,通常被稱為文本轉(zhuǎn)語音(TTS),它有許多的應(yīng)用,如語音驅(qū)動的設(shè)備、導(dǎo)航系統(tǒng)和視力障礙者設(shè)備中不可缺少的工具。從根本上說,TTS能讓人在不需要視覺交互的情況下與技術(shù)進行互動。百度研究院發(fā)布的DeepVoice是一個文本到語音轉(zhuǎn)換系統(tǒng),完全由深度神經(jīng)網(wǎng)絡(luò)構(gòu)建。文本到語音的轉(zhuǎn)換將自然語言的文本很自然流暢地變?yōu)檎Z音,也因此出現(xiàn)了語音小說,免去了讀者閱讀的麻煩。文本到語音轉(zhuǎn)換自動識別用戶手寫體文字,并將其直接轉(zhuǎn)化為計算機可以識別的文字。對用戶手寫字體字形進行提取,其中包括利用文本行的水平投影進行行切分,以及利用文本列的垂直投影進行列切分;將提取的用戶手寫體字形特征向量與計算機的字形特征向量進行匹配,并建立用戶手寫體與計算機字體的對應(yīng)關(guān)系,生成計算機可識別的文字。手寫文字轉(zhuǎn)錄WaveNet網(wǎng)絡(luò)是深度學(xué)習(xí)中卷積神經(jīng)網(wǎng)絡(luò)的一種變體,該網(wǎng)絡(luò)直接對音頻信號的原始波形進行建模,一次處理一個樣本。除了能夠產(chǎn)出聽起來更為自然的聲音,使用原始波形意味著WaveNet網(wǎng)絡(luò)可以建模幾乎任何類型的音頻。WaveNet網(wǎng)絡(luò)應(yīng)用領(lǐng)域之一便是音頻生成。基于WaveNet網(wǎng)絡(luò)生成的音頻質(zhì)量優(yōu)于目前的文本轉(zhuǎn)語音(TTS)系統(tǒng),將計算機輸出音頻與人類自然語音差距縮小50%。音頻生成深度學(xué)習(xí)與其他領(lǐng)域1深度學(xué)習(xí)與自然語言處理目錄深度學(xué)習(xí)與計算機視覺2深度學(xué)習(xí)與語音識別3深度學(xué)習(xí)與機器學(xué)習(xí)4深度學(xué)習(xí)與人工智能5深度學(xué)習(xí)最早興起于圖像識別,但是在短短幾年時間內(nèi),深度學(xué)習(xí)已經(jīng)被推廣到了機器學(xué)習(xí)的各個領(lǐng)域。如今,深度學(xué)習(xí)在很多應(yīng)用領(lǐng)域都有非常出色的表現(xiàn),如計算機視覺、自然語言處理、語音識別等。深度學(xué)習(xí)在其他領(lǐng)域的應(yīng)用,使這些領(lǐng)域迎來了高速發(fā)展期。深度學(xué)習(xí)與計算機視覺計算機視覺是一門研究如何使機器“看”的科學(xué),涉及計算機如何從數(shù)字圖像或視頻中獲得高級理解。形象地說,即通過給計算機安裝上眼睛(照相機)和大腦(算法),讓計算機能夠感知環(huán)境。以代替人眼對目標(biāo)進行識別、跟蹤和測量等操作,并對圖像進行進一步的處理,使圖像更適合人眼觀察或傳入儀器。計算機視覺既是工程領(lǐng)域,也是科學(xué)領(lǐng)域中的一個富有挑戰(zhàn)性重要研究領(lǐng)域。作為一門綜合性的學(xué)科,計算機視覺已經(jīng)吸引了來自各個學(xué)科的研究者參加到對它的研究之中。其中包括計算機科學(xué)和工程、信號處理、物理學(xué)、應(yīng)用數(shù)學(xué)和統(tǒng)計學(xué)、神經(jīng)生理學(xué)和認(rèn)知科學(xué)等學(xué)科。深度學(xué)習(xí)與計算機視覺計算機視覺是深度學(xué)習(xí)技術(shù)最早取得突破性成就的領(lǐng)域。在2010年到2011年間,基于傳統(tǒng)機器學(xué)習(xí)的算法并沒有帶來正確率(預(yù)測正確的樣本數(shù)量占總樣本數(shù)量的比例)的大幅度提升。在2012年的ILSVRC比賽中,杰弗里·辛頓(GeoffreyHinton)教授研究小組利用深度學(xué)習(xí)技術(shù)在ImageNet數(shù)據(jù)集上將圖像分類的錯誤率(預(yù)測錯誤的樣本數(shù)量占總樣本數(shù)量的比例)大幅度下降到16%。在2012年到2015年間,通過對深度學(xué)習(xí)算法的不斷研究,使深度學(xué)習(xí)在ImageNet數(shù)據(jù)集上實現(xiàn)圖像分類的錯誤率以較大的速度遞減。這說明深度學(xué)習(xí)打破了傳統(tǒng)機器學(xué)習(xí)算法在圖像分類上的瓶頸,使得圖像分類問題得到了更好的解決。深度學(xué)習(xí)與計算機視覺在ImageNet數(shù)據(jù)集上,深度學(xué)習(xí)不僅突破了圖像分類的技術(shù)瓶頸,同時也突破了物體識別的技術(shù)瓶頸。相對于圖像分類,物體識別的難度更高,圖像分類問題只需判斷圖片中包含哪一種物體,但在物體識別問題中,需要給出所包含物體的具體位置。而且一張圖片中可能出現(xiàn)多個需要識別的物體,所有可以被識別的物體都需要用不同的方框標(biāo)注出來。在物體識別問題中,人臉識別是應(yīng)用非常廣泛的技術(shù),它既可以應(yīng)用于娛樂行業(yè),又可以應(yīng)用于安防、風(fēng)控行業(yè)。在娛樂行業(yè)中,基于人臉識別的相機自動對焦、自動美顏等功能基本已經(jīng)成為每一款自拍軟件的必備功能。深度學(xué)習(xí)與計算機視覺在安防、風(fēng)控領(lǐng)域,人臉識別的應(yīng)用更是大大地提高了工作效率并節(jié)省了人力成本。例如,在互聯(lián)網(wǎng)金融行業(yè),為了控制貸款風(fēng)險,在用戶注冊或貸款發(fā)放時需要驗證本人信息。個人信息驗證中一個很重要的步驟是驗證用戶提供的證件和用戶是否為同一個人,通過人臉識別技術(shù),這個過程可以被更為高效地實現(xiàn)。在計算機視覺領(lǐng)域,光學(xué)字符識別(OpticalCharacterRecognition,OCR)也較早地使用了深度學(xué)習(xí)。早在1989年,卷積神經(jīng)網(wǎng)絡(luò)就已經(jīng)成功應(yīng)用到識別手寫郵政編碼的問題上,達到接近95%的正確率。在MNIST手寫體數(shù)字識別數(shù)據(jù)集上,最新的深度學(xué)習(xí)算法可以達到99.77%的正確率,這也超過了人類的表現(xiàn)。深度學(xué)習(xí)與計算機視覺光學(xué)字符識別在金融界的應(yīng)用十分廣泛,在21世紀(jì)初期,楊立昆(YannLeCun)教授將基于卷積神經(jīng)網(wǎng)絡(luò)的手寫體數(shù)字識別系統(tǒng)應(yīng)用于銀行支票的數(shù)額識別。此系統(tǒng)在2000年左右已經(jīng)處理了某國全部支票數(shù)量的10%~20%。數(shù)字識別技術(shù)也可以應(yīng)用到地圖的開發(fā)中,某公司實現(xiàn)的數(shù)字識別系統(tǒng)可以從街景圖中識別任意長度的數(shù)字,并在SVHN數(shù)據(jù)集上達到96%的正確率。除此之外,文字識別技術(shù)可以將掃描的圖書數(shù)字化,從而實現(xiàn)圖書內(nèi)容的搜索功能。深度學(xué)習(xí)與計算機視覺1深度學(xué)習(xí)與自然語言處理目錄深度學(xué)習(xí)與計算機視覺2深度學(xué)習(xí)與語音識別3深度學(xué)習(xí)與機器學(xué)習(xí)4深度學(xué)習(xí)與人工智能5深度學(xué)習(xí)自然語言處理(NaturalLanguageProcessing,NLP)是人工智能和語言學(xué)領(lǐng)域的分支學(xué)科。自然語言處理包含機器理解、解釋和生成人類語言的方法,因此,也將它描述為自然語言理解(NaturalLanguageUnderstanding,NLU)和自然語言生成(NaturalLanguageGeneration,NLG)。傳統(tǒng)的NLP方法采用基于語言學(xué)的方法,它基于語言的基本語義和句法元素(如詞性)構(gòu)建?;谏疃葘W(xué)習(xí)的自然語言處理避開了對中間元素的需求,并且可以針對通用任務(wù)學(xué)習(xí)該任務(wù)本身的層次表示。1966年自動語言處理咨詢委員會的報告強調(diào)了機器翻譯從流程到實施成本面臨的巨大困難,導(dǎo)致投資方減少了在資金方面的投資,使得NLP的研究幾乎停滯。深度學(xué)習(xí)與自然語言處理1960年到1970年的十年是世界知識研究的一個重要時期,該時期強調(diào)語義而非句法結(jié)構(gòu),探索名詞和動詞之間的語法在這個時代扮演著重要的角色。1960年到1970年的十年期間出現(xiàn)了處理諸如短語的增強過渡網(wǎng)絡(luò),以及以自然語言回答的語言處理系統(tǒng)SHRDLU。隨后又出現(xiàn)了LUNAR系統(tǒng),即一個將自然語言理解與基于邏輯的系統(tǒng)相結(jié)合的問答系統(tǒng)。在20世紀(jì)80年代初期,開始了基于語法研究自然語言的階段,語言學(xué)家發(fā)展了不同的語法結(jié)構(gòu),并開始將與用戶意圖的短語關(guān)聯(lián)起來。于是開發(fā)出許多自然語言處理工具,如SYSTRAN、METEO等,在翻譯、信息檢索中被大量使用。深度學(xué)習(xí)與自然語言處理20世紀(jì)90年代是統(tǒng)計語言處理的時代,在大多數(shù)基于NLP的系統(tǒng)中,使用了許多新的收集數(shù)據(jù)的方法。例如使用語料庫進行語言處理或使用基于概率和分類的方法處理語言數(shù)據(jù)。2000年初期,在自然語言學(xué)習(xí)會議上,出現(xiàn)了許多有趣的NLP研究,如分塊、命名實體識別和依賴解析等。在此期間一系列很多成果得以誕生,如約書亞·本吉奧(YoshuaBengio)提出的第一個神經(jīng)語言模型,使用查找表來預(yù)測單詞。隨后提出的許多基于遞歸神經(jīng)網(wǎng)絡(luò)和長短時記憶模型被自然語言處理廣泛使用。其中帕賓(Papineni)提出的雙語評估模型直到今天仍被用作機器翻譯的標(biāo)準(zhǔn)度量標(biāo)準(zhǔn)。深度學(xué)習(xí)與自然語言處理此后出現(xiàn)的多任務(wù)學(xué)習(xí)技術(shù)使得機器可以同時學(xué)習(xí)多個任務(wù),米科洛夫(Mikolov)等人提高了本吉奧提出的訓(xùn)練詞嵌入的效率。并通過移除隱藏層產(chǎn)生Word2vec,在給定附近單詞的情況下準(zhǔn)確預(yù)測中心單詞。通過學(xué)習(xí)大量數(shù)據(jù)集獲得的效率,使得密集的表示形式能夠捕獲各種語義和關(guān)系,從而可以完成諸如機器翻譯之類的各種任務(wù),并能夠以無監(jiān)督的方式實現(xiàn)“轉(zhuǎn)移學(xué)習(xí)”。隨后出現(xiàn)的基于序列學(xué)習(xí)的通用神經(jīng)框架,由編碼器神經(jīng)網(wǎng)絡(luò)處理輸入序列,解碼器神經(jīng)網(wǎng)絡(luò)根據(jù)輸入序列狀態(tài)和當(dāng)前輸出狀態(tài)來預(yù)測輸出。其在機器翻譯和問題解答方面都取得了不錯的應(yīng)用效果。深度學(xué)習(xí)與自然語言處理1深度學(xué)習(xí)與自然語言處理目錄深度學(xué)習(xí)與計算機視覺2深度學(xué)習(xí)與語音識別3深度學(xué)習(xí)與機器學(xué)習(xí)4深度學(xué)習(xí)與人工智能5語音識別(AutomaticSpeechRecognition,ASR)是指能夠讓計算機自動地識別語音中所攜帶信息的技術(shù)。語音是人類實現(xiàn)信息交互最直接、最便捷、最自然的方式之一。自AI的概念出現(xiàn)以來,讓計算機甚至機器人像自然人一樣實現(xiàn)利用語音進行交互就一直是AI領(lǐng)域研究者的夢想。最近幾年,深度學(xué)習(xí)理論在語音識別和圖像識別領(lǐng)域取得了令人振奮的性能提升,迅速成為了當(dāng)下學(xué)術(shù)界和產(chǎn)業(yè)界的研究熱點,為處在瓶頸期的語音識別領(lǐng)域提供了一個強有力的工具。在語音識別領(lǐng)域,深度神經(jīng)網(wǎng)絡(luò)(DeepNeuralNetwork,DNN)模型給處在瓶頸階段的傳統(tǒng)的隱馬爾可夫模型(GMM-HMM)帶來了巨大的革新,使得語音識別的準(zhǔn)確率又上了一個新的臺階。深度學(xué)習(xí)與語音識別在2012年的微軟亞洲研究院(MicrosoftResearchAsia,MSRA)二十一世紀(jì)計算大會(21stCenturyComputing)上。微軟高級副總裁理查德·拉什德(RichardRashid)現(xiàn)場演示了微軟開發(fā)的從英語到漢語的同聲傳譯系統(tǒng)。同聲傳譯系統(tǒng)不僅要求計算機能夠?qū)斎氲恼Z音進行識別,而且要求計算機將識別出來的結(jié)果翻譯成另外一門語言,并將翻譯好的結(jié)果通過語音合成的方式輸出。同時,百度也將深度學(xué)習(xí)應(yīng)用于語音識別的研究,使用了深層卷積神經(jīng)網(wǎng)絡(luò)等結(jié)構(gòu)。并將長短期記憶網(wǎng)絡(luò)(LongShort-termMemory,LSTM)和基于神經(jīng)網(wǎng)絡(luò)的時序類分類算法(CTC)的端到端語音識別技術(shù)相結(jié)合,使得語言識別的正確率有所提高。深度學(xué)習(xí)與語音識別2016年9月,微軟的研究者在產(chǎn)業(yè)標(biāo)準(zhǔn)語音識別任務(wù)上,取得了6.3%的詞錯率。國內(nèi)科大訊飛提出了基于前饋型序列記憶網(wǎng)絡(luò)(Feed-forwardSequentialMemoryNetwork,F(xiàn)SMN)的語音識別系統(tǒng)。該系統(tǒng)使用大量的卷積層直接對整句語音信號進行建模,更好地表達了語音的長時相關(guān)性。其效果比學(xué)術(shù)界和工業(yè)界最好的雙向循環(huán)神經(jīng)網(wǎng)絡(luò)語音識別系統(tǒng)識別率提升了15%以上。由此可見,深度學(xué)習(xí)技術(shù)對語言識別率的提高有著不可忽略的貢獻。深度學(xué)習(xí)與語音識別1深度學(xué)習(xí)與自然語言處理目錄深度學(xué)習(xí)與計算機視覺2深度學(xué)習(xí)與語音識別3深度學(xué)習(xí)與機器學(xué)習(xí)4深度學(xué)習(xí)與人工智能5為了更好地理解深度學(xué)習(xí)(DL)和機器學(xué)習(xí)(ML)的關(guān)系,繪制它們之間的包含關(guān)系,如下圖所示。深度學(xué)習(xí)(DL)是機器學(xué)習(xí)(ML)的一個子領(lǐng)域,它除了可以學(xué)習(xí)特征和任務(wù)之間的關(guān)聯(lián)以外,還能自動從簡單特征中提取更加復(fù)雜的特征。深度學(xué)習(xí)與機器學(xué)習(xí)機器學(xué)習(xí)(ML)是人工智能(AI)的一個子領(lǐng)域,在過去10年變得很流行。與人工智能一樣,機器學(xué)習(xí)不是一種替代,而是對傳統(tǒng)程序方法的補充。機器學(xué)習(xí)是根據(jù)輸入與輸出編寫算法,最終獲得一套規(guī)則。而傳統(tǒng)程序是根據(jù)輸入,編寫一套規(guī)則,從而獲得理想的輸出。傳統(tǒng)程序和機器學(xué)習(xí)的流程對比,如下圖所示。深度學(xué)習(xí)與機器學(xué)習(xí)大多數(shù)機器學(xué)習(xí)在結(jié)構(gòu)化數(shù)據(jù)(例如銷售預(yù)測,推薦系統(tǒng)和營銷個性化)上表現(xiàn)良好。影響機器學(xué)習(xí)效果的一個重要環(huán)節(jié)是特征工程,數(shù)據(jù)科學(xué)家需要花費大量時間來使機器學(xué)習(xí)算法能夠正常執(zhí)行且取得滿意的效果。但在某些領(lǐng)域,如自然語言處理的特征工程則面臨著高維度問題的挑戰(zhàn)。在面對等高維度問題時,使用典型的機器學(xué)習(xí)技術(shù)(例如線性回歸,隨機森林等)來解決就非常具有挑戰(zhàn)性。機器學(xué)習(xí)的一個特殊分支稱為深度學(xué)習(xí),傳統(tǒng)的機器學(xué)習(xí)算法,通過手寫特征提取的方法來訓(xùn)練算法,而深度學(xué)習(xí)算法能夠?qū)崿F(xiàn)以自動的方式提取特征進行訓(xùn)練。深度學(xué)習(xí)與機器學(xué)習(xí)例如,利用深度學(xué)習(xí)算法來預(yù)測圖像是否包含面部特征,從而實現(xiàn)對面部特征進行提取。其中深度學(xué)習(xí)網(wǎng)絡(luò)第一層檢測圖像的邊緣,第二層檢測形狀(如鼻子和眼睛),最后一層檢測面部形狀或更復(fù)雜的結(jié)構(gòu)。每層都基于上一層的數(shù)據(jù)表示進行訓(xùn)練。隨著GPU、大數(shù)據(jù)以及諸如Torch、TensorFlow、Caffe和PyTorch之類的深度學(xué)習(xí)框架興起,深度學(xué)習(xí)的使用在過去幾年中得到了極大的發(fā)展。除此之外,大公司共享在龐大數(shù)據(jù)集上訓(xùn)練的模型,幫助初創(chuàng)企業(yè)能較為輕松地在多個用例上構(gòu)建了先進的系統(tǒng)。深度學(xué)習(xí)與機器學(xué)習(xí)1深度學(xué)習(xí)與自然語言處理目錄深度學(xué)習(xí)與計算機視覺2深度學(xué)習(xí)與語音識別3深度學(xué)習(xí)與機器學(xué)習(xí)4深度學(xué)習(xí)與人工智能5人工智能(ArtificialIntelligence,AI)是計算機科學(xué)的一個分支,它企圖了解智能的本質(zhì),并生產(chǎn)出一種新的能以人類智能相似的方式做出反應(yīng)的智能機器。且對模擬、延伸和擴展人的智能的理論、方法和技術(shù)進行研究與開發(fā),是一門技術(shù)科學(xué)。計算機在被輸入普通圖像而沒有輸入其他任何相關(guān)信息時,使用對象檢測以及在詞典的幫助下,計算機可以對圖像的信息進行理解并輸出相印的標(biāo)題,即是智能的一種體現(xiàn)。人工智能目前可以按學(xué)習(xí)能力分為弱人工智能、強人工智能和超人工智能。深度學(xué)習(xí)與人工智能一是弱人工智能;弱人工智能(ArtificialNarrowIntelligence,ANI),只專注于完成某個特定的任務(wù),是擅長如語音識別、圖像識別和翻譯等單個方面的人工智能。弱人工智能是用于解決特定的具體類的任務(wù)問題而存在,大都基于統(tǒng)計數(shù)據(jù),并以此歸納出模型。由于弱人工智能只能處理較為單一的問題,且發(fā)展程度并沒有達到模擬人腦思維的程度,所以弱人工智能仍然屬于“工具”的范疇,與傳統(tǒng)的“產(chǎn)品”在本質(zhì)上并無區(qū)別。二是強人工智能:強人工智能(ArtificialGenerallnteligence,AGI),屬于人類級別的人工智能。強人工智能在各方面都能和人類比肩,它能夠進行思考、計劃、解決問題、抽象思維、理解復(fù)雜理念、快速學(xué)習(xí)和從經(jīng)驗中學(xué)習(xí)等操作,并且和人類一樣得心應(yīng)手。深度學(xué)習(xí)與人工智能三是超人工智能;超人工智能(ArtificialSuperIntelligence,ASI),在幾乎所有領(lǐng)域都比最聰明的人類大腦都聰明許多。包括科學(xué)創(chuàng)新、通識和社交技能。在超人工智能階段,人工智能已經(jīng)跨過“奇點”,其計算和思維能力已經(jīng)遠(yuǎn)超人腦。此時的人工智能已經(jīng)不是人類可以理解和想象。人工智能將打破人腦受到的維度限制,其所觀察和思考的內(nèi)容,人腦已經(jīng)無法理解,人工智能將形成一個新的社會。簡而言之,機器學(xué)習(xí)是實現(xiàn)人工智能的一種方法,而深度學(xué)習(xí)是實現(xiàn)機器學(xué)習(xí)的一種技術(shù)??梢哉f,人工智能的根本在于智能,而機器學(xué)習(xí)則是部署支持人工智能的計算方法,深度學(xué)習(xí)是實現(xiàn)機器學(xué)習(xí)的一種方式。深度學(xué)習(xí)與人工智能PyTorch簡介2017年1月,臉書人工智能研究院在GitHub上開源了PyTorch深度學(xué)習(xí)框架,并迅速成為GitHub熱度榜榜首。PyTorch特點是擁有生態(tài)完整性和接口易用性,使之成為當(dāng)下最流行的動態(tài)框架之一。PyTorch簡介1PyTorch生態(tài)目錄各深度學(xué)習(xí)框架對比2PyTorch特性3PyTorch安裝41.TensorFlow2015年,某公司宣布推出全新的機器學(xué)習(xí)開源工具TensorFlow,是基于深度學(xué)習(xí)基礎(chǔ)框架DistBelief構(gòu)建而成。主要用于機器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò),一經(jīng)推出就獲得了較大的成功,并迅速成為用戶使用最多的深度學(xué)習(xí)框架。并在2019年,推出了TensorFlow2正式版本。而TensorFlow兩個版本之間各有優(yōu)勢,1.x的版本使用靜態(tài)圖進行運算,計算速度會比2.x版本的動態(tài)圖快,但是2.x搭建網(wǎng)絡(luò)的過程比1.x版本的簡單。各深度學(xué)習(xí)框架對比目前常用的深度學(xué)習(xí)框架還有Theano、TensorFlow、Keras、Caffe、MXNet、CNTK、PaddlePaddle。這些深度學(xué)習(xí)框架被應(yīng)用于計算機視覺、自然語言處理、語音識別、機器學(xué)習(xí)等多個領(lǐng)域。因為TensorFlow得到了專業(yè)人員的進行開發(fā)、維護,所以該框架有著良好的發(fā)展性。同時,TensorFlow還擁有眾多低級、高級接口,使得其功能十分豐富。但是,由于TensorFlow發(fā)展過快,造成了接口、文檔混亂的問題。各深度學(xué)習(xí)框架對比Caffe的全稱是ConvolutionalArchitectureforFastFeatureEmbedding,同樣是一個高效的深度學(xué)習(xí)框架,支持命令行、Python和MATLAB接口,支持在CPU上運行,也可以在GPU上運行。Caffe2繼承了Caffe的優(yōu)點,速度更快,現(xiàn)在僅需一小時就可以訓(xùn)練完成ImageNet這樣超大規(guī)模的數(shù)據(jù)集。Caffe2盡管已上市很長時間了,但仍然是一個不太成熟的框架,官網(wǎng)至今也沒有提供完整的文檔。Caffe的特點概括起來,全平臺支持,性能優(yōu)異,不足之處文檔完善不夠。各深度學(xué)習(xí)框架對比2.Caffe/Caffe2Keras是由Python編寫而成并使用TensorFlow、Theano以及CNTK作為后端。Kera1.1.0以前的版本主要使用Theano作為后端,這是因為Keras本身并不具備底層運算的能力,所以需要具備這種能力的后端協(xié)同工作。在TensorFlow開源后,Keras開始支持TensorFlow作為后端。隨著TensorFlow受歡迎程度的增加,Keras開始將TensorFlow作為默認(rèn)后端。Keras的特性之一就是可以改變后端,從一個后端訓(xùn)練并保存的模型可以在其他后端加載和運行。在TensorFlow2發(fā)布時,Keras成為了TensorFlow的官方API,即tf.keras。該API用于快速的模型設(shè)計和訓(xùn)練。隨著Keras2.3.0版本的發(fā)布,作者聲明,Keras2.3.0是Keras首個與tf.keras同步的版本,也是最后一個支持多個后端(Theano、CNTK)的版本。各深度學(xué)習(xí)框架對比3.KerasCNTK是微軟開發(fā)的深度學(xué)習(xí)框架,目前已經(jīng)發(fā)展成一個通用的、跨平臺的深度學(xué)習(xí)系統(tǒng),在語音識別領(lǐng)域的使用尤其廣泛。CNTK擁有豐富的神經(jīng)網(wǎng)絡(luò)組件,使得用戶不需要編寫底層的C++或CUDA,就能通過組合這些組件設(shè)計新的、復(fù)雜的Layer。同樣,CNTK也支持CPU和GPU兩種開發(fā)模式。CNTK以計算圖的形式描述結(jié)構(gòu),葉子節(jié)點代表輸入或者網(wǎng)絡(luò)參數(shù),其他節(jié)點代表計算步驟。CNTK同時也擁有較高的靈活度,通過配置文件定義網(wǎng)絡(luò)結(jié)構(gòu),通過命令行程序執(zhí)行訓(xùn)練,支持構(gòu)建任意的計算圖,支持AdaGrad、RmsProp等優(yōu)化方法。各深度學(xué)習(xí)框架對比4.CNTKMXNet是一個深度學(xué)習(xí)庫,也支持主流的開發(fā)語言,如C++、Python、R、MATLAB、JavaScript。支持命令行和程序,可以運行在CPU、GPU上。它的優(yōu)勢在于同樣的模型MXNet占用更小的內(nèi)存和顯存,在分布式環(huán)境下優(yōu)勢更明顯于其他框架。為了完善MXNet生態(tài)圈,其先后推出包括MinPy、Keras等諸多接口,但目前也停止了更新。MXNet特點概括起來是分布式性能強大,支持開發(fā)語言豐富,但文檔完整性不夠,稍顯混亂。各深度學(xué)習(xí)框架對比5.MXNet各類框架的特點如表所示。各深度學(xué)習(xí)框架對比框架優(yōu)點缺點TensorFlow設(shè)計的神經(jīng)網(wǎng)絡(luò)代碼簡潔,分布式深度學(xué)習(xí)算法的執(zhí)行效率高,部署模型便利,迭代更新速度快,社區(qū)活躍程度高非常底層,需要編寫大量的代碼,入門比較困難。必須一遍又一遍重新發(fā)明輪子,過于復(fù)雜的系統(tǒng)設(shè)計Caffe/Caffe2通用性好,非常穩(wěn)健,非??焖?,性能優(yōu)異,幾乎全平臺支持不夠靈活,文檔非常貧乏,安裝比較困難,需要解決大量的依賴包Keras語法明晰,文檔友好,使用簡單,入門容易用戶絕大多數(shù)時間是在調(diào)用接口,很難學(xué)到真正深度學(xué)習(xí)的內(nèi)容CNTK通用、跨平臺,支持多機,多GPU分布式訓(xùn)練,訓(xùn)練效率高,部署簡單,性能突出,擅長語音方面相關(guān)研究目前不支持ARM架構(gòu),限制了其在移動設(shè)備上的發(fā)揮,社區(qū)不夠活躍MXNet支持大多數(shù)編程語言,支持語言最多,使得使用R語言的開發(fā)者特別偏愛MXNet,適合AWS平臺使用文檔略顯混亂PyTorch簡潔,代碼易于理解,易用,在許多評測中,PyTorch速勝過TensorFlow和Keras等框架,社區(qū)活躍,文檔完整API整體設(shè)計粗糙,部分bug查不到解決方案,社區(qū)的規(guī)模正在擴大1PyTorch生態(tài)目錄各深度學(xué)習(xí)框架對比2PyTorch特性3PyTorch安裝4相比較于年輕的PyTorch,TensorFlow由于發(fā)布較早,用戶基數(shù)大,社區(qū)龐大,其生態(tài)相當(dāng)完整,從底層張量運算到云端模型部署,TensorFlow都可以做到。盡管PyTorch發(fā)布較晚,但PyTorch仍然有著較為完備的生態(tài)環(huán)境。不同應(yīng)用領(lǐng)域?qū)?yīng)的PyTorch庫如表所示。PyTorch生態(tài)應(yīng)用領(lǐng)域?qū)?yīng)的PyTorch庫計算機視覺TorchVision自然語言處理PyTorchNLP圖卷積PyTorchGeometric工業(yè)部署ONNX協(xié)議上層APIFastai對于計算機視覺,PyTorch有應(yīng)用廣泛的TorchVision庫。對于自然語言處理,PyTorch有PyTorchNLP、AllenNLP庫。對于圖卷積這類新型圖網(wǎng)絡(luò),有PyTorchGeometric庫。對于工業(yè)部署,ONN協(xié)議能保證模型的順利部署。對于上層API,基于PyTorch的Fastai框架相當(dāng)簡潔。PyTorch生態(tài)1PyTorch生態(tài)目錄各深度學(xué)習(xí)框架對比2PyTorch特性3PyTorch安裝41.簡潔簡潔的好處就是代碼易于理解。PyTorch的設(shè)計追求最少的封裝。遵循著tensor→variable(autograd)→nn.Mondule三個由低到高的抽象層次,分別代表高維數(shù)組(張量)、自動求導(dǎo)(變量)和神經(jīng)網(wǎng)絡(luò)。而且這三個抽象之間關(guān)系緊密,可以同時進行修改和操作。PyTorch特性在眾多的深度學(xué)習(xí)框架中,PyTorch是比較高速快捷簡單易學(xué)的框架。該框架同時具備了簡潔、速度、易用、擁有活躍的社區(qū)和使用動態(tài)方法計算等特點。PyTorch的靈活性不以犧牲速度為代價,在很多評測中,PyTorch的速度表現(xiàn)勝過TensorFlow和Keras等框架。PyTorch特性2.速度PyTorch是面向?qū)ο笤O(shè)計的。PyTorch的面向?qū)ο蟮慕涌谠O(shè)計來源于Torch,而Torch的接口設(shè)計以靈活易用而著稱。PyTorch繼承了Torch的優(yōu)點,使得其符合程序員的設(shè)計思維。PyTorch特性3.易用PyTorch提供了完整的學(xué)習(xí)文檔,開發(fā)人員在論壇及時和用戶交流。谷歌人工智能研究院對PyTorch提供了強大的技術(shù)支持,不會出現(xiàn)曇花一現(xiàn)的局面。PyTorch特性4.活躍的社區(qū)動態(tài)方法使得PyTorch的調(diào)試相對簡單。模型中的每一個步驟、每一個流程都可以被使用者輕松地控制、調(diào)試、輸出。在PyTorch推出之后,各類深度學(xué)習(xí)問題都有利用PyTorch實現(xiàn)的解決方案。PyTorch正在受到越來越多人的喜愛。當(dāng)然,現(xiàn)如今任何一個深度學(xué)習(xí)框架都有其缺點,PyTorch也不例外,對比TensorFlow其全面性能處于劣勢。目前PyTorch還不支持快速傅里葉、沿維翻轉(zhuǎn)張量和檢查無窮與非數(shù)值張量。針對移動端、嵌入式部署以及高性能服務(wù)器端的部署,其性能表現(xiàn)有待提升。PyTorch特性5.使用動態(tài)方法1PyTorch生態(tài)目錄各深度學(xué)習(xí)框架對比2PyTorch特性3PyTorch安裝41.操作系統(tǒng)PyTorch支持的操作系統(tǒng)有Windows、Linux、MacOS。Windows、Linux和MacOS系統(tǒng)均可滿足PyTorch的簡單使用。如果需要高度定制化的操作,如定義CUDA函數(shù),那么建議使用Linux或者MacOS。想深入學(xué)習(xí)PyTorch,電腦中需要有GPU,沒有GPU,許多實驗很難進行,CPU只適用于數(shù)據(jù)集很小的情形。PyTorch安裝CUDA驅(qū)動程序的下載步驟如下。在瀏覽器地址欄輸入下載CUDA驅(qū)動程序的網(wǎng)址,選擇對應(yīng)的操作系統(tǒng)的類型,這里以安裝Windows驅(qū)動為例進行講解,目標(biāo)平臺如圖所示。PyTorch安裝2.安裝驅(qū)動和CUDA環(huán)境選擇對應(yīng)操作系統(tǒng)的CUDA驅(qū)動程序,如圖所示,可選的Windows操作系統(tǒng)版本有Windows10、WindowsServer2019、WindowsServer2016。單擊選擇“10”安裝Windows10版本的CUDA驅(qū)動程序。PyTorch安裝選擇安裝類型如圖所示,可選的有本地(local)和線上(network)。以在線安裝為例,單擊選擇“exe(network)”,安裝文件大小為59.2MB。PyTorch安裝下載CUDA安裝包如圖所示。PyTorch安裝完成CUDA的下載后,需要在計算機本地進行安裝,具體安裝步驟如下。解壓CUDA安裝包如圖所示,解壓路徑可以自行選擇。PyTorch安裝解壓完成之后單擊運行CUDA安裝程序。安裝程序會自動檢查系統(tǒng)與安裝包的兼容性,如圖所示。PyTorch安裝檢查完系統(tǒng)兼容性之后,需要單擊“同意并繼續(xù)”按鈕同意NVIDIA軟件許可協(xié)議,如圖所示。PyTorch安裝選擇安裝選項如圖所示,安裝選項有精簡和自定義,此處選擇“精簡”選項。PyTorch安裝單擊“下一步”按鈕,彈出準(zhǔn)備安裝的窗口如圖所示。PyTorch安裝準(zhǔn)備完成后,安裝程序會從互聯(lián)網(wǎng)上下載安裝包,如圖所示。PyTorch安裝安裝包下載完成后,安裝程序自動開始安裝,如圖所示。PyTorch安裝安裝完成后,單擊“關(guān)閉”按鈕即可,如圖所示。PyTorch安裝打開cmd,輸入“nvcc-V”命令。如果GPU驅(qū)動安裝成功,那么顯示結(jié)果如圖所示。PyTorch安裝3.測試安裝完成打開命令行窗口,在Anaconda下創(chuàng)建并激活的Python3.8.5工作環(huán)境py3.8.5。輸入命令“condacreate-npy3.8.5python=3.8.5”創(chuàng)建工作環(huán)境py3.8.5,然后輸入命令“activatepy3.8.5”激活工作環(huán)境py3.8.5。成功進入環(huán)境后命令行起始位置出現(xiàn)“(py3.8.5)”標(biāo)記,如圖所示。PyTorch安裝4.下載安裝PyTorch進入PyTorch離線安裝文件下載網(wǎng)站,然后下載對應(yīng)版本的安裝文件。以“torch-1.8.1+cu101-cp38-cp38-win_amd64.whl”為例,表示GPU版的PyTorch1.8.1,環(huán)境要求為cuda10.1、Python3.8、64位Window10系統(tǒng)。在命令行中進入安裝文件所在的目錄,輸入“pipinstall完整的文件名”并按Enter鍵,即可離線安裝PyTorch。成功安裝GPU版的PyTorch1.8.1,如圖所示。PyTorch安裝輸入“python”命令,進入創(chuàng)建的Python3.8.5環(huán)境。在“>>>”提示符下,輸入以下兩條Python語句。驗證PyTorch是否有輸出信息,無報錯提示,證明PyTorch安裝成功,如圖所示。PyTorch安裝如果電腦無NVIDIA顯示卡,此時只能安裝CPU版本的PyTorch,具體安裝步驟如下。在AnacondaPrompt下,輸入“condainstallpytorch-cpu-cpytorch”命令開始下載CPU版本的PyTorch。如果下載速度慢,顯示連接超時,建議添加國內(nèi)的鏡像資源站點,如“清華大學(xué)開源軟件鏡像站”等。同時去掉上面命令中的參數(shù)“-cpytorch”,因為該參數(shù)意味著從PyTorch官方網(wǎng)站下載,速度極其緩慢。轉(zhuǎn)到Python終端并輸入“importtorch”命令。若能正常運行,則說明已經(jīng)成功安裝了PyTorch,如圖所示。PyTorch安裝5.CPU下的PyTorch安裝PyTorch中的預(yù)訓(xùn)練模型PyTorch庫中包含了多種常用的網(wǎng)絡(luò)結(jié)構(gòu),并且提供了預(yù)訓(xùn)練模型。預(yù)訓(xùn)練模型可以幫助使用者快速實現(xiàn)模型的建立,可以減少深度學(xué)習(xí)建模的工作量。PyTorch中的預(yù)訓(xùn)練模型1預(yù)訓(xùn)練模型的使用場景目錄預(yù)訓(xùn)練模型的概念2PyTorch預(yù)訓(xùn)練模型的調(diào)用方法3預(yù)訓(xùn)練模型是一個在大型數(shù)據(jù)集(通常是大型圖像分類任務(wù))中完成訓(xùn)練并已保存模型,預(yù)訓(xùn)練模型的使用,即將預(yù)訓(xùn)練模型的權(quán)重加載到新的模型。相較于使用隨機初始化權(quán)重的模型,使用了預(yù)訓(xùn)練模型權(quán)重的模型得到結(jié)果的速度更快,但是兩者得到的結(jié)果并不會有太大的差距。對于希望應(yīng)用某個現(xiàn)有框架來解決自己任務(wù)的人而言,由于時間限制或硬件水平限制,往往并不會選擇從零開始訓(xùn)練一個新模型。而是使用預(yù)訓(xùn)練模型作為基準(zhǔn)來改進現(xiàn)有模型,從而快速實現(xiàn)模型的建立,這也是預(yù)訓(xùn)練模型存在的意義。預(yù)訓(xùn)練模型的概念一個預(yù)訓(xùn)練模型對于需要解決的問題并不是100%的準(zhǔn)確對接,但可以節(jié)省大量時間。在一個屬于圖像分類的手機圖片分辨項目上,訓(xùn)練數(shù)據(jù)集中有四千多張圖片,測試集中有1200張圖片,項目任務(wù)是將圖片分到16個類別中。如果采用一個簡單的多層感知機(Multi-laterPerceptron,MLP)模型,在對輸入圖片(尺寸為224×224×3)平整化后,訓(xùn)練模型所得結(jié)果的準(zhǔn)確率只有百分之六左右。即便嘗試對隱藏層的神經(jīng)元數(shù)量和丟棄率進行調(diào)整,準(zhǔn)確率都沒有顯著提高。如果采用卷積神經(jīng)網(wǎng)絡(luò),訓(xùn)練結(jié)果表明準(zhǔn)確率有了顯著的提高,可以達到原來的兩倍以上,但距離分類最低的標(biāo)準(zhǔn)還是太遠(yuǎn)。如果采用在ImageNet數(shù)據(jù)集上預(yù)先訓(xùn)練好的模型VGG16,在VGG16結(jié)構(gòu)的基礎(chǔ)上,將softmax層的神經(jīng)元個數(shù)從1000改為16,從而適應(yīng)16分類的問題,模型在手機圖片分辨項目上的準(zhǔn)確率可以達到70%。同時,使用預(yù)訓(xùn)練模型VGG16最大的好處是大大減少了訓(xùn)練的時間,只需要對全連接層進行訓(xùn)練。預(yù)訓(xùn)練模型的概念1預(yù)訓(xùn)練模型的使用場景目錄預(yù)訓(xùn)練模型的概念2PyTorch預(yù)訓(xùn)練模型的調(diào)用方法3在大型數(shù)據(jù)集上訓(xùn)練模型,并將模型的結(jié)構(gòu)和權(quán)重應(yīng)用到目前所面對的問題上,即將預(yù)訓(xùn)練模型“遷移”到正在面對的特定問題上。在解決目前面對的問題的時候需要匹配好對應(yīng)的預(yù)訓(xùn)練模型,如果問題與預(yù)訓(xùn)練模型訓(xùn)練情景有很大不同,那么模型所得到的預(yù)測結(jié)果會非常不理想。例如,把一個原本用于語音識別的模型用作用戶識別,只能得到非常差的結(jié)果。ImageNet數(shù)據(jù)集已經(jīng)被廣泛用作計算機視覺領(lǐng)域的訓(xùn)練集,因為數(shù)據(jù)規(guī)模足夠大(120萬張圖片),有助于訓(xùn)練一般模型,ImageNet數(shù)據(jù)集的訓(xùn)練目標(biāo)是將所有的圖片準(zhǔn)確劃分到1000個分類條目下。數(shù)據(jù)集的1000個分類來源于日常生活,如動物類、家庭生活用品、交通工具等。使用ImageNet數(shù)據(jù)集訓(xùn)練的網(wǎng)絡(luò)對于數(shù)據(jù)集外的圖片也表現(xiàn)出很好的泛化能力。預(yù)訓(xùn)練模型的使用場景在預(yù)訓(xùn)練模型的使用過程中,不會過多地修改預(yù)訓(xùn)練模型中的權(quán)重,而是對權(quán)重進行微調(diào)(finetune)。例如,在修改模型的過程中,通常會采用比一般訓(xùn)練模型更低的學(xué)習(xí)率。在預(yù)訓(xùn)練模型的使用中,常見的用法有以下3種。將預(yù)訓(xùn)練模型中的輸出層去掉,保留剩下的網(wǎng)絡(luò)層作為待訓(xùn)練網(wǎng)絡(luò)的特征提取層。保留預(yù)處理模型的網(wǎng)絡(luò)結(jié)構(gòu),并初始化預(yù)訓(xùn)練模型的全部權(quán)重。然后重新訓(xùn)練網(wǎng)絡(luò)得到新的模型權(quán)重。凍結(jié)預(yù)訓(xùn)練模型中前k個層的權(quán)重,重新訓(xùn)練后面的層,得到新的權(quán)重。預(yù)訓(xùn)練模型的使用場景不同場景中預(yù)訓(xùn)練模型的具體應(yīng)用如下。場景一:數(shù)據(jù)集規(guī)模小,數(shù)據(jù)相似度高。在這種場景下,因為數(shù)據(jù)與訓(xùn)練模型的訓(xùn)練數(shù)據(jù)相似度很高,因此不需要重新訓(xùn)練模型,只需要對輸出層進行修改即可。例如,手機圖片分辨場景中提到的16分類問題,只需將輸出從1000個類別改為16個類別。場景二:數(shù)據(jù)集規(guī)模小,數(shù)據(jù)相似度不高。在這種場景下,可以凍結(jié)預(yù)訓(xùn)練模型中的前k個層中的權(quán)重,然后重新訓(xùn)練后面的n-k個層,n為網(wǎng)絡(luò)的總層數(shù)。同時輸出層也需要根據(jù)相應(yīng)的輸出格式進行修改。預(yù)訓(xùn)練模型的使用場景場景三:數(shù)據(jù)集規(guī)模大,數(shù)據(jù)相似度不高。在這種場景下,因為實際數(shù)據(jù)與預(yù)訓(xùn)練模型的訓(xùn)練數(shù)據(jù)之間存在很大差異,采用預(yù)訓(xùn)練模型將不會是一種高效的方式。最好的方法是將預(yù)訓(xùn)練模型中的權(quán)重全都初始化后在新數(shù)據(jù)集的基礎(chǔ)上重新開始訓(xùn)練。場景四:數(shù)據(jù)集規(guī)模大,數(shù)據(jù)相似度高。在這種理想場景下,最好的方式是保持模型原有的結(jié)構(gòu)和權(quán)重不變。隨后在新數(shù)據(jù)集的基礎(chǔ)上重新訓(xùn)練。預(yù)訓(xùn)練模型的使用場景1預(yù)訓(xùn)練模型的使用場景目錄預(yù)訓(xùn)練模型的概念2PyTorch預(yù)訓(xùn)練模型的調(diào)用方法3PyTorch的torchvision庫的models包中包含AlexNet、DenseNet、Inception、ResNet、Squeezenet、VGG(VGG16和VGG19)等常用網(wǎng)絡(luò)結(jié)構(gòu)。并且提供了預(yù)訓(xùn)練模型,可通過調(diào)用包的方式讀取網(wǎng)絡(luò)結(jié)構(gòu)和預(yù)訓(xùn)練模型(模型參數(shù))。ResNet主要有5種變形:ResNet50、Res101、Res152、ResNet50V2、Res101V2、Res152V2。每個網(wǎng)絡(luò)都包括3個主要部分:輸入部分、輸出部分和中間卷積部分。盡管ResNet變種形式豐富,但是都有著相似的結(jié)構(gòu),網(wǎng)絡(luò)之間的不同主要在于中間卷積部分的參數(shù)和個數(shù)存在差異。以ResNet50為例,展示常見的2種預(yù)訓(xùn)練模型加載方法,具體如下。加載網(wǎng)絡(luò)結(jié)構(gòu)和預(yù)訓(xùn)練參數(shù)的代碼“resnet50=models.resnet50(pretrained=True)”。只加載網(wǎng)絡(luò)結(jié)構(gòu),不加載預(yù)訓(xùn)練模型參數(shù)的代碼“resnet50=models.resnet50(pretrained=False)”。PyTorch預(yù)訓(xùn)練模型的調(diào)用方法加載ResNet50預(yù)訓(xùn)練模型,并對模型的參數(shù)進行修改。ResNet50網(wǎng)絡(luò)的源代碼在Github中可以查看。ResNet50網(wǎng)絡(luò)的輸出層的out_features參數(shù)為1000,該參數(shù)可以根據(jù)待訓(xùn)練的數(shù)據(jù)集中的類別數(shù)進行修改。例如,在某種圖像的分類項目中,共包含了9種類別標(biāo)簽,即可將該參數(shù)修改為9。代碼展示的方法只適用于簡單的參數(shù)修改,有時候受數(shù)據(jù)結(jié)構(gòu)的影響,需要修改網(wǎng)絡(luò)中的層次結(jié)構(gòu)。這時可以使用“遷移”的方法,即先定義一個類似的網(wǎng)絡(luò),再將預(yù)訓(xùn)練中的參數(shù)提取到自定義的網(wǎng)絡(luò)中。預(yù)訓(xùn)練模型的使用并非千篇一律,主要是由數(shù)據(jù)集大小和新舊數(shù)據(jù)集之間數(shù)據(jù)的相似度來決定。PyTorch預(yù)訓(xùn)練模型的調(diào)用方法本章主要圍繞深度學(xué)習(xí)的概念以及使用的深度學(xué)習(xí)框架展開介紹。首先對深度學(xué)習(xí)進行了簡單的介紹,包括深度學(xué)習(xí)的定義和常見應(yīng)用。然后介紹了深度學(xué)習(xí)與其他領(lǐng)域的聯(lián)系。最后針對深度學(xué)習(xí)中的PyTorch框架,介紹了其特點、安裝流程和預(yù)訓(xùn)練模型的使用。小結(jié)數(shù)據(jù)加載與預(yù)處理深度學(xué)習(xí)通常包含數(shù)據(jù)加載與預(yù)處理、構(gòu)建網(wǎng)絡(luò)、訓(xùn)練網(wǎng)絡(luò)和性能評估幾個主要的步驟。PyTorch為每個步驟提供了一些相應(yīng)的函數(shù),使得可以方便快速地進行深度學(xué)習(xí)。本章以貓狗分類的例子介紹PyTorch深度學(xué)習(xí)的通用流程。深度學(xué)習(xí)的通用流程如圖所示,分為以下6個步驟。PyTorch深度學(xué)習(xí)通用流程深度學(xué)習(xí)的通用流程分為以下6個步驟。數(shù)據(jù)加載,加載用于訓(xùn)練深度神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù),使得深度神經(jīng)網(wǎng)絡(luò)能夠?qū)W習(xí)到數(shù)據(jù)中潛在的特征,可以指定從某些特定路徑加載數(shù)據(jù)。數(shù)據(jù)預(yù)處理,對加載的數(shù)據(jù)進行預(yù)處理,使之符合網(wǎng)絡(luò)的輸入要求,如標(biāo)簽格式轉(zhuǎn)換、樣本變換等。數(shù)據(jù)形式的不統(tǒng)一將對模型效果造成較大的影響。構(gòu)建網(wǎng)絡(luò),根據(jù)特定的任務(wù)使用不同的網(wǎng)絡(luò)層搭建網(wǎng)絡(luò),若網(wǎng)絡(luò)太簡單則無法學(xué)習(xí)到足夠豐富的特征,若網(wǎng)絡(luò)太復(fù)雜則容易過擬合。PyTorch深度學(xué)習(xí)通用流程編譯網(wǎng)絡(luò),設(shè)置網(wǎng)絡(luò)訓(xùn)練過程中使用的優(yōu)化器和損失函數(shù),優(yōu)化器和損失函數(shù)的選擇會影響到網(wǎng)絡(luò)的訓(xùn)練時長、性能等。訓(xùn)練網(wǎng)絡(luò),通過不斷的迭代和批訓(xùn)練的方法,調(diào)整模型中各網(wǎng)絡(luò)層的參數(shù),減小模型的損失,使得模型的預(yù)測值逼近真實值。性能評估,計算網(wǎng)絡(luò)訓(xùn)練過程中損失和分類精度等與模型對應(yīng)的評價指標(biāo),根據(jù)評價指標(biāo)的變化調(diào)整模型從而取得更好的效果。PyTorch深度學(xué)習(xí)通用流程1數(shù)據(jù)預(yù)處理目錄數(shù)據(jù)加載2加載及預(yù)處理貓狗分類數(shù)據(jù)3數(shù)據(jù)的形式多種多樣,因此讀取數(shù)據(jù)的方法也是多種多樣。在一個圖像分類的任務(wù)中,圖像所在的文件夾即為圖像的類別標(biāo)簽,則需要把圖片和類別標(biāo)簽都讀入計算機中,同時還需對圖像數(shù)據(jù)進行張量變換和歸一化等預(yù)處理。PyTorch框架中提供了一些常用的數(shù)據(jù)讀取和預(yù)處理的方法。數(shù)據(jù)加載與預(yù)處理在PyTorch框架中,torchtext.utils包中的類可以用于數(shù)據(jù)加載。常見加載的數(shù)據(jù)的方式包括從指定的網(wǎng)址(url)下載數(shù)據(jù)、加載本地的表格數(shù)據(jù)和直接讀取壓縮文件中的數(shù)據(jù)。數(shù)據(jù)加載download_from_url類可以從對應(yīng)網(wǎng)址下載文件并返回所下載文件的存儲路徑。download_from_url類的語法格式如下。torchtext.utils.download_from_url(url,path=None,root='.data',overwrite=False,hash_value=None,hash_type='sha256')download_from_url類的常用參數(shù)及其說明如表所示。數(shù)據(jù)加載1.從指定的網(wǎng)址下載文件參數(shù)名稱說明url接收str,表示url文件的網(wǎng)絡(luò)路徑,無默認(rèn)值root接收str,表示用于存放下載數(shù)據(jù)文件的文件夾路徑,無默認(rèn)值overwrite接收bool,表示是否覆蓋當(dāng)前文件,默認(rèn)為Falseunicode_csv_reader類用于讀取csv數(shù)據(jù)文件,unicode_csv_reader類的語法格式如下。其中的參數(shù)“unicode_csv_data”指的是csv數(shù)據(jù)文件。torchtext.utils.unicode_csv_reader(unicode_csv_data,**kwargs)數(shù)據(jù)加載2.csv文件讀取器extract_archive類用于讀取壓縮文件中的數(shù)據(jù)。extract_archive類的語法格式如下。torchtext.utils.extract_archive(from_path,to_path=None,overwrite=False)extract_archive類的常用參數(shù)及其說明如表所示。數(shù)據(jù)加載3.讀取壓縮文件數(shù)據(jù)參數(shù)名稱說明from_path接收str,表示數(shù)據(jù)文件的路徑,無默認(rèn)值to_path接收str,表示提取文件的根路徑,無默認(rèn)值overwrite接收bool,表示是否覆蓋當(dāng)前文件,無默認(rèn)值1數(shù)據(jù)預(yù)處理目錄數(shù)據(jù)加載2加載及預(yù)處理貓狗分類數(shù)據(jù)3在深度學(xué)習(xí)的時候,可以事先單獨將圖片進行清晰度、畫質(zhì)和切割等處理然后存起來以擴充樣本,但是這樣做效率比較低下,而且不是實時的。接下來介紹如何用PyTorch對數(shù)據(jù)進行處理。數(shù)據(jù)預(yù)處理分為圖像數(shù)據(jù)預(yù)處理和文本數(shù)據(jù)預(yù)處理。數(shù)據(jù)預(yù)處理在PyTorch框架中,處理圖像與視頻的torchvision庫中常用的包及其說明如表所示。圖像數(shù)據(jù)預(yù)處理包說明torchvision.datasets提供數(shù)據(jù)集下載和加載功能,包含若干個常用數(shù)據(jù)集torchvision.io提供執(zhí)行IO操作的功能,主要用于讀取和寫入視頻及圖像torchvision.models包含用于解決不同任務(wù)的網(wǎng)絡(luò)結(jié)構(gòu),并提供已預(yù)訓(xùn)練過的模型,包括圖像分類、像素語義分割、對象檢測、實例分割、人物關(guān)鍵點檢測和視頻分類torchvision.ops主要實現(xiàn)特定用于計算機視覺的運算符torchvision.transforms包含多種常見的圖像預(yù)處理操作,如隨機切割、旋轉(zhuǎn)、數(shù)據(jù)類型轉(zhuǎn)換、圖像到tensor、numpy數(shù)組到tensor、tensor到圖像等torchvision.utils用于將形似(3×H×W)的張量保存到硬盤中,能夠制作圖像網(wǎng)絡(luò)1.組合圖像的多種變換處理Compose類可以將多種圖像的變換處理組合到一起,Compose類語法格式如下。其中參數(shù)“transforms”接收的是由多種變換處理組合成的列表。torchvision.transforms.Compose(transforms)圖像數(shù)據(jù)預(yù)處理其中torchvision.transforms中常用的5種圖像預(yù)處理操作如下。常見的PIL圖像包括以下幾種模式。L(灰色圖像)P(8位彩色圖像)I(32位整型灰色圖像)F(32位浮點灰色圖像)RGB(8位彩色圖像)YCbCr(24位彩色圖像)RGBA(32位彩色模式)CMYK(32位彩色圖像)1(二值圖像)圖像數(shù)據(jù)預(yù)處理2.

對圖像做變換處理在PyTorch框架下能實現(xiàn)對PIL圖像和torch張量做變換處理的類較多,此處僅介紹常用的6個類。

CenterCrop類CenterCrop類可以裁剪給定的圖像并返回圖像的中心部分。如果圖像是torch張量,形狀將會是[…,H,W],其中省略號“…”是一個任意尺寸。如果輸入圖像的大小小于期望輸出圖像的大小,則在輸入圖像的四周填充0,然后居中裁剪。CenterCrop類的語法格式如下,其中參數(shù)“size”指的是圖像的期望輸出大小。torchvision.transforms.CenterCrop(size)圖像數(shù)據(jù)預(yù)處理ColorJitter類ColorJitter類可以隨機改變圖像的亮度、對比度、飽和度和色調(diào)。如果圖像是torch張量,形狀將會是[…,3,H,W],其中省略號“…”表示任意數(shù)量的前導(dǎo)維數(shù)。如果圖像是PIL圖像,則不支持模式1、L、I、F和透明模式。ColorJitter的語法格式如下。torchvision.transforms.ColorJitter(brightness=0,contrast=0,saturation=0,hue=0)圖像數(shù)據(jù)預(yù)處理ColorJitter類的常用參數(shù)及其說明如表所示。圖像數(shù)據(jù)預(yù)處理參數(shù)名稱說明brightness接收int,表示亮度大小。亮度因子統(tǒng)一從【最大值(0,1-自定義值),1+亮度】或給定的【最小值,最大值】中選擇。默認(rèn)為0contrast接收int,表示對比度大小。對比度因子統(tǒng)一從【最大值(0,1-自定義值),1+對比度】或給定【最小值,最大值】中選擇。默認(rèn)為0saturation接收int,表示飽和度大小。飽和度因子統(tǒng)一從【最大值(0,1-自定義值),1+飽和度】或給定【最小值,最大值】中選擇。應(yīng)該是非負(fù)數(shù)。默認(rèn)為0hue接收int,表示色調(diào)大小。色調(diào)因子統(tǒng)一從【-自定義值,自定義值】或給定的【最小值,最大值】中選擇。且有0<=自定義值<0.5或-0.5<=最小值<=最大值<=0.5。默認(rèn)為0FiveCrop類FiveCrop類可以將圖像裁剪成四個角和中心部分。如果圖像是torch張量,形狀將會是[…,H,W],其中“…”表示任意數(shù)量的前導(dǎo)維數(shù)。FiveCrop類的語法格式如下,其中參數(shù)“size”指的是裁剪圖像的期望大小。torchvision.transforms.FiveCrop(size)圖像數(shù)據(jù)預(yù)處理Grayscale類Grayscale類可以將圖像轉(zhuǎn)換為灰度圖像。如果圖像是torch張量,形狀將會是[…,3,H,W],其中省略號“…”表示任意數(shù)量的前導(dǎo)維數(shù)。Grayscale類的語法格式如下,其中參數(shù)“num_output_channels”表示的是輸出圖像所需的通道數(shù)。torchvision.transforms.Grayscale(num_output_channels=1)圖像數(shù)據(jù)預(yù)處理Pad類Pad類可以使用給定的填充值填充圖像的邊緣區(qū)域。如果圖像是torch張量,形狀將會是[…,H,W],其中省略號“…”表示模式反射和對稱的最多2個前導(dǎo)維數(shù)。Pad類的語法格式如下。torchvision.transforms.Pad(padding,fill=0,padding_mode='constant')Pad類的常用參數(shù)及其說明如表所示。圖像數(shù)據(jù)預(yù)處理參數(shù)名稱說明padding接收int或序列,表示在圖像邊緣區(qū)域填充。如果只提供一個整型int數(shù)據(jù),那么填充所有的邊緣區(qū)域。如果提供了長度為2的序列,那么填充左右邊緣或上下邊緣區(qū)域。如果提供了長度為4的序列,那么填充上下左右四個邊緣區(qū)域。無默認(rèn)值fill接收int或元組,表示填充值。如果值是長度為3的元組,那么分別用于填充R、G、B三個通道。此值僅在填充模式為常數(shù)時使用。默認(rèn)為0。Resize類Resize類可以將輸入圖像調(diào)整到指定的尺寸。如果圖像是torch張量,形狀將會是[…,H,W]形狀,其中省略號“…”表示任意數(shù)量的前導(dǎo)維數(shù)。Resize類的語法格式如下。torchvision.transforms.Resize(size,interpolation=<InterpolationMode.BILINEAR:'bilinear'>)Resize類的常用參數(shù)及其說明如表所示。圖像數(shù)據(jù)預(yù)處理參數(shù)名稱說明size接收int,表示期望輸出大小,無默認(rèn)值interpolation接收str,表示插入式模式。默認(rèn)為InterpolationMode.BILINEARPyTorch不僅可設(shè)置對圖片的變換處理,還可以對這些變換處理進行隨機選擇、組合,數(shù)據(jù)增強更靈活。RandomChoice類RandomChoice類從接收的變換處理列表中隨機選取的單個變換處理對圖像進行變換。RandomChoice類的語法格式如下。RandomChoice類的參數(shù)說明與Compose類一致。torchvision.transforms.RandomChoice(transforms)圖像數(shù)據(jù)預(yù)處理3.

對變換處理列表做處理RandomOrder類RandomOrder類隨機打亂接收的變換處理列表中的變換處理。RandomOrder類的語法格式如下。RandomOrder類的參數(shù)說明與Compose類一致。torchvision.transforms.RandomOrder(transforms)圖像數(shù)據(jù)預(yù)處理對圖像數(shù)據(jù)做變換處理操作的類較多,此處介紹常用的兩個類。LinearTransformation類LinearTransformation類用平方變換矩陣和離線計算的均值向量變換圖像數(shù)據(jù)。LinearTransformation類的語法格式如下。torchvision.transforms.LinearTransformation(transformation_matrix,mean_vector)LinearTransformation類的常用參數(shù)及其說明如表所示。圖像數(shù)據(jù)預(yù)處理4.

對圖像數(shù)據(jù)做變換處理參數(shù)名稱說明transformation_matrix接收str,表示變換矩陣,輸入格式為[DxD]。無默認(rèn)值mean_vector接收str,平均向量,輸入格式為[D]。無默認(rèn)值Normalize類Normalize類用均值和標(biāo)準(zhǔn)差對圖像數(shù)據(jù)進行歸一化處理。Normalize類的語法格式如下。torchvision.transforms.Normalize(mean,std,inplace=False)Normalize類的常用參數(shù)及其說明如表所示。圖像數(shù)據(jù)預(yù)處理參數(shù)名稱說明mean接收int或float,表示每個通道的均值。無默認(rèn)值std接收int或float,表示每個通道的標(biāo)準(zhǔn)差。無默認(rèn)值由于直接讀取圖像得到的數(shù)據(jù)的類型與輸入網(wǎng)絡(luò)的數(shù)據(jù)類型不對應(yīng),因此需要對數(shù)據(jù)的格式進行轉(zhuǎn)換。ToPILImage類ToPILImage類將tensor類型或ndarray類型的數(shù)據(jù)轉(zhuǎn)換為PILImage類型的數(shù)據(jù)。ToPILImage類的語法格式如下,其中參數(shù)“mode”指的是輸入數(shù)據(jù)的顏色空間和像素深度。torchvision.transforms.ToPILImage(mode=None)圖像數(shù)據(jù)預(yù)處理5.

格式轉(zhuǎn)換變換處理ToTensor類ToTensor類將PILImage類型或ndarray類型的數(shù)據(jù)轉(zhuǎn)換為tensor類型的數(shù)據(jù),并且歸一化至[0,1]。ToTensor類的語法格式如下。torchvision.transforms.ToTensor如果PIL圖像屬于L、P、I、F、RGB、YCbCr、RGBA、CMYK和1這些形式之一,那么將[0,255]范圍內(nèi)的PIL圖像或numpy.ndarray(H×W×C)轉(zhuǎn)換為[0.0,1.0]范圍內(nèi)的浮點張量(C×H×W)。在其他情況下,不按比例返回張量。圖像數(shù)據(jù)預(yù)處理1.劃分訓(xùn)練集和測試集SogouNews類可以對PyTorch框架自帶的數(shù)據(jù)集進行訓(xùn)練集測試集的劃分,SogouNews類的語法格式如下。torchtext.datasets.SogouNews(root='.data',split=('train','test'))SogouNews類的常用參數(shù)及其說明如表所示。文本數(shù)據(jù)預(yù)處理在PyTorch框架中可以利用trochtext庫中的相關(guān)類對文本數(shù)據(jù)進行數(shù)據(jù)預(yù)處理。參數(shù)名稱說明root接收str,表示保存數(shù)據(jù)集的目錄,無默認(rèn)值split接收str,表示劃分?jǐn)?shù)據(jù)集和測試集的標(biāo)準(zhǔn),無默認(rèn)值WikiText2類也可以對PyTorch框架自帶的數(shù)據(jù)集進行訓(xùn)練集、驗證集和測試集的劃分。WikiText2類的語法格式如下。torchtext.datasets.WikiText2(root='.data',split=('train','valid','test'))WikiText2類僅能對三個PyTorch自帶數(shù)據(jù)集進行操作,分別是WikiText-2數(shù)據(jù)集、WikiText103數(shù)據(jù)集和PennTreebank數(shù)據(jù)集。文本數(shù)據(jù)預(yù)處理Vocab類可以定義用于計算字段的詞匯表對象。Vocab類的語法格式如下。torchtext.vocab.Vocab(counter,max_size=None,min_freq=1,pecials=('<unk>','<pad>'),vectors=None,unk_init=None,vectors_cache=None,specials_first=True)文本數(shù)據(jù)預(yù)處理2.創(chuàng)建詞匯表Vocab類的常用參數(shù)及其說明如表所示。文本數(shù)據(jù)預(yù)處理參數(shù)名稱說明counter接收float,表示保存數(shù)據(jù)中每個值的頻率,無默認(rèn)值max_size接收int,表示最大詞匯容量,無默認(rèn)值min_freq接收int,表示能保存進詞匯表的最低頻率,默認(rèn)為1specials接收str,表示將加在詞匯表前面的特殊標(biāo)記的列表,默認(rèn)值為('<unk>','<pad>')vectors接收int,表示可用的預(yù)訓(xùn)練向量,無默認(rèn)值vectors_cache接收str,表示緩存向量的目錄,無默認(rèn)值generate_sp_model類用于構(gòu)建句子生成器,generate_sp_model類的語法格式如下。torchtext.data.functional.generate_sp_model(filename,vocab_size=20000,model_type='unigram',model_prefix='m_user')generate_sp_model類的常用參數(shù)及其說明如表所示。文本數(shù)據(jù)預(yù)處理3.構(gòu)建句子生成器參數(shù)名稱說明filename接收str

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論