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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

對(duì)圖像數(shù)據(jù)做變換處理參數(shù)名稱說明transformation_matrix接收str,表示變換矩陣,輸入格式為[DxD]。無默認(rèn)值mean_vector接收str,平均向量,輸入格式為[D]。無默認(rèn)值Normalize類Normalize類用均值和標(biāo)準(zhǔn)差對(duì)圖像數(shù)據(jù)進(jìn)行歸一化處理。Normalize類的語法格式如下。torchvision.transforms.Normalize(mean,std,inplace=False)Normalize類的常用參數(shù)及其說明如表所示。圖像數(shù)據(jù)預(yù)處理參數(shù)名稱說明mean接收int或float,表示每個(gè)通道的均值。無默認(rèn)值std接收int或float,表示每個(gè)通道的標(biāo)準(zhǔn)差。無默認(rèn)值由于直接讀取圖像得到的數(shù)據(jù)的類型與輸入網(wǎng)絡(luò)的數(shù)據(jù)類型不對(duì)應(yīng),因此需要對(duì)數(shù)據(jù)的格式進(jìn)行轉(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)的浮點(diǎn)張量(C×H×W)。在其他情況下,不按比例返回張量。圖像數(shù)據(jù)預(yù)處理1.劃分訓(xùn)練集和測(cè)試集SogouNews類可以對(duì)PyTorch框架自帶的數(shù)據(jù)集進(jìn)行訓(xùn)練集測(cè)試集的劃分,SogouNews類的語法格式如下。torchtext.datasets.SogouNews(root='.data',split=('train','test'))SogouNews類的常用參數(shù)及其說明如表所示。文本數(shù)據(jù)預(yù)處理在PyTorch框架中可以利用trochtext庫(kù)中的相關(guān)類對(duì)文本數(shù)據(jù)進(jìn)行數(shù)據(jù)預(yù)處理。參數(shù)名稱說明root接收str,表示保存數(shù)據(jù)集的目錄,無默認(rèn)值split接收str,表示劃分?jǐn)?shù)據(jù)集和測(cè)試集的標(biāo)準(zhǔn),無默認(rèn)值WikiText2類也可以對(duì)PyTorch框架自帶的數(shù)據(jù)集進(jìn)行訓(xùn)練集、驗(yàn)證集和測(cè)試集的劃分。WikiText2類的語法格式如下。torchtext.datasets.WikiText2(root='.data',split=('train','valid','test'))WikiText2類僅能對(duì)三個(gè)PyTorch自帶數(shù)據(jù)集進(jìn)行操作,分別是WikiText-2數(shù)據(jù)集、WikiText103數(shù)據(jù)集和PennTreebank數(shù)據(jù)集。文本數(shù)據(jù)預(yù)處理Vocab類可以定義用于計(jì)算字段的詞匯表對(duì)象。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ù)中每個(gè)值的頻率,無默認(rèn)值max_size接收int,表示最大詞匯容量,無默認(rèn)值min_freq接收int,表示能保存進(jìn)詞匯表的最低頻率,默認(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論