第1章 1.4 PyTorch中的預(yù)訓(xùn)練模型_第1頁
第1章 1.4 PyTorch中的預(yù)訓(xùn)練模型_第2頁
第1章 1.4 PyTorch中的預(yù)訓(xùn)練模型_第3頁
第1章 1.4 PyTorch中的預(yù)訓(xùn)練模型_第4頁
第1章 1.4 PyTorch中的預(yù)訓(xùn)練模型_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

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)還是太遠。如果采用在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)用方法本章主要圍繞深

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論