0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Pytroch中支持的兩種遷移學(xué)習(xí)方式

OpenCV學(xué)堂 ? 來源:OpenCV學(xué)堂 ? 作者:OpenCV學(xué)堂 ? 2022-10-09 15:16 ? 次閱讀

torchvision分類介紹

Torchvision高版本支持各種SOTA的圖像分類模型,同時還支持不同數(shù)據(jù)集分類模型的預(yù)訓(xùn)練模型的切換。使用起來十分方便快捷,Pytroch中支持兩種遷移學(xué)習(xí)方式,分別是:

- Finetune模式
基于預(yù)訓(xùn)練模型,全鏈路調(diào)優(yōu)參數(shù)
- 凍結(jié)特征層模式
這種方式只修改輸出層的參數(shù),CNN部分的參數(shù)凍結(jié)
上述兩種遷移方式,分別適合大量數(shù)據(jù)跟少量數(shù)據(jù),前一種方式計(jì)算跟訓(xùn)練時間會比第二種方式要長點(diǎn),但是針對大量自定義分類數(shù)據(jù)效果會比較好。

自定義分類模型修改與訓(xùn)練

加載模型之后,feature_extracting 為true表示凍結(jié)模式,否則為finetune模式,相關(guān)的代碼如下:

def set_parameter_requires_grad(model, feature_extracting):
     if feature_extracting:
         for param in model.parameters():
             param.requires_grad = False
以resnet18為例,修改之后的自定義訓(xùn)練代碼如下:
model_ft=models.resnet18(pretrained=True)
num_ftrs=model_ft.fc.in_features
#Herethesizeofeachoutputsampleissetto5.
#Alternatively,itcanbegeneralizedtonn.Linear(num_ftrs,len(class_names)).
model_ft.fc=nn.Linear(num_ftrs,5)

model_ft=model_ft.to(device)

criterion=nn.CrossEntropyLoss()

#Observethatallparametersarebeingoptimized
optimizer_ft=optim.SGD(model_ft.parameters(),lr=0.001,momentum=0.9)

#DecayLRbyafactorof0.1every7epochs
exp_lr_scheduler=lr_scheduler.StepLR(optimizer_ft,step_size=7,gamma=0.1)

model_ft=train_model(model_ft,criterion,optimizer_ft,exp_lr_scheduler,
num_epochs=25)

數(shù)據(jù)集是flowers-dataset,有五個分類分別是:

daisy
dandelion
roses
sunflowers
tulips

全鏈路調(diào)優(yōu),遷移學(xué)習(xí)訓(xùn)練CNN部分的權(quán)重參數(shù)

Epoch0/24
----------
trainLoss:1.3993Acc:0.5597
validLoss:1.8571Acc:0.7073
Epoch1/24
----------
trainLoss:1.0903Acc:0.6580
validLoss:0.6150Acc:0.7805
Epoch2/24
----------
trainLoss:0.9095Acc:0.6991
validLoss:0.4386Acc:0.8049
Epoch3/24
----------
trainLoss:0.7628Acc:0.7349
validLoss:0.9111Acc:0.7317
Epoch4/24
----------
trainLoss:0.7107Acc:0.7669
validLoss:0.4854Acc:0.8049
Epoch5/24
----------
trainLoss:0.6231Acc:0.7793
validLoss:0.6822Acc:0.8049
Epoch6/24
----------
trainLoss:0.5768Acc:0.8033
validLoss:0.2748Acc:0.8780
Epoch7/24
----------
trainLoss:0.5448Acc:0.8110
validLoss:0.4440Acc:0.7561
Epoch8/24
----------
trainLoss:0.5037Acc:0.8170
validLoss:0.2900Acc:0.9268
Epoch9/24
----------
trainLoss:0.4836Acc:0.8360
validLoss:0.7108Acc:0.7805
Epoch10/24
----------
trainLoss:0.4663Acc:0.8369
validLoss:0.5868Acc:0.8049
Epoch11/24
----------
trainLoss:0.4276Acc:0.8504
validLoss:0.6998Acc:0.8293
Epoch12/24
----------
trainLoss:0.4299Acc:0.8529
validLoss:0.6449Acc:0.8049
Epoch13/24
----------
trainLoss:0.4256Acc:0.8567
validLoss:0.7897Acc:0.7805
Epoch14/24
----------
trainLoss:0.4062Acc:0.8559
validLoss:0.5855Acc:0.8293
Epoch15/24
----------
trainLoss:0.4030Acc:0.8545
validLoss:0.7336Acc:0.7805
Epoch16/24
----------
trainLoss:0.3786Acc:0.8730
validLoss:1.0429Acc:0.7561
Epoch17/24
----------
trainLoss:0.3699Acc:0.8763
validLoss:0.4549Acc:0.8293
Epoch18/24
----------
trainLoss:0.3394Acc:0.8788
validLoss:0.2828Acc:0.9024
Epoch19/24
----------
trainLoss:0.3300Acc:0.8834
validLoss:0.6766Acc:0.8537
Epoch20/24
----------
trainLoss:0.3136Acc:0.8906
validLoss:0.5893Acc:0.8537
Epoch21/24
----------
trainLoss:0.3110Acc:0.8901
validLoss:0.4909Acc:0.8537
Epoch22/24
----------
trainLoss:0.3141Acc:0.8931
validLoss:0.3930Acc:0.9024
Epoch23/24
----------
trainLoss:0.3106Acc:0.8887
validLoss:0.3079Acc:0.9024
Epoch24/24
----------
trainLoss:0.3143Acc:0.8923
validLoss:0.5122Acc:0.8049
Trainingcompletein25m34s
BestvalAcc:0.926829

凍結(jié)CNN部分,只訓(xùn)練全連接分類權(quán)重

Paramstolearn:
fc.weight
fc.bias
Epoch0/24
----------
trainLoss:1.0217Acc:0.6465
validLoss:1.5317Acc:0.8049
Epoch1/24
----------
trainLoss:0.9569Acc:0.6947
validLoss:1.2450Acc:0.6829
Epoch2/24
----------
trainLoss:1.0280Acc:0.6999
validLoss:1.5677Acc:0.7805
Epoch3/24
----------
trainLoss:0.8344Acc:0.7426
validLoss:1.1053Acc:0.7317
Epoch4/24
----------
trainLoss:0.9110Acc:0.7250
validLoss:1.1148Acc:0.7561
Epoch5/24
----------
trainLoss:0.9049Acc:0.7346
validLoss:1.1541Acc:0.6341
Epoch6/24
----------
trainLoss:0.8538Acc:0.7465
validLoss:1.4098Acc:0.8293
Epoch7/24
----------
trainLoss:0.9041Acc:0.7349
validLoss:0.9604Acc:0.7561
Epoch8/24
----------
trainLoss:0.8885Acc:0.7468
validLoss:1.2603Acc:0.7561
Epoch9/24
----------
trainLoss:0.9257Acc:0.7333
validLoss:1.0751Acc:0.7561
Epoch10/24
----------
trainLoss:0.8637Acc:0.7492
validLoss:0.9748Acc:0.7317
Epoch11/24
----------
trainLoss:0.8686Acc:0.7517
validLoss:1.0194Acc:0.8049
Epoch12/24
----------
trainLoss:0.8492Acc:0.7572
validLoss:1.0378Acc:0.7317
Epoch13/24
----------
trainLoss:0.8773Acc:0.7432
validLoss:0.7224Acc:0.8049
Epoch14/24
----------
trainLoss:0.8919Acc:0.7473
validLoss:1.3564Acc:0.7805
Epoch15/24
----------
trainLoss:0.8634Acc:0.7490
validLoss:0.7822Acc:0.7805
Epoch16/24
----------
trainLoss:0.8069Acc:0.7644
validLoss:1.4132Acc:0.7561
Epoch17/24
----------
trainLoss:0.8589Acc:0.7492
validLoss:0.9812Acc:0.8049
Epoch18/24
----------
trainLoss:0.7677Acc:0.7688
validLoss:0.7176Acc:0.8293
Epoch19/24
----------
trainLoss:0.8044Acc:0.7514
validLoss:1.4486Acc:0.7561
Epoch20/24
----------
trainLoss:0.7916Acc:0.7564
validLoss:1.0575Acc:0.8049
Epoch21/24
----------
trainLoss:0.7922Acc:0.7647
validLoss:1.0406Acc:0.7805
Epoch22/24
----------
trainLoss:0.8187Acc:0.7647
validLoss:1.0965Acc:0.7561
Epoch23/24
----------
trainLoss:0.8443Acc:0.7503
validLoss:1.6163Acc:0.7317
Epoch24/24
----------
trainLoss:0.8165Acc:0.7583
validLoss:1.1680Acc:0.7561
Trainingcompletein20m7s
BestvalAcc:0.829268

測試結(jié)果:

零代碼訓(xùn)練演示

我已經(jīng)完成torchvision中分類模型自定義數(shù)據(jù)集遷移學(xué)習(xí)的代碼封裝與開發(fā),支持基于收集到的數(shù)據(jù)集,零代碼訓(xùn)練,生成模型。圖示如下:

96f99d5a-47a0-11ed-a3b6-dac502259ad0.png

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6713

    瀏覽量

    88303
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3032

    瀏覽量

    48348
  • 遷移學(xué)習(xí)
    +關(guān)注

    關(guān)注

    0

    文章

    74

    瀏覽量

    5536

原文標(biāo)題:tochvision輕松支持十種圖像分類模型遷移學(xué)習(xí)

文章出處:【微信號:CVSCHOOL,微信公眾號:OpenCV學(xué)堂】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    兩種采樣方式

    兩種采樣方式.....................................
    發(fā)表于 08-08 15:04

    請問小車轉(zhuǎn)向兩種方式有什么優(yōu)缺點(diǎn)?

    我知道的小車轉(zhuǎn)向常見的有兩種方式,一是通過舵機(jī)控制轉(zhuǎn)向,另一是通過控制個輪子的轉(zhuǎn)速,通過轉(zhuǎn)速差實(shí)現(xiàn)轉(zhuǎn)向,這
    發(fā)表于 05-21 02:37

    linux配置mysql的兩種方式

    兩種方式:a、$ find / -name mysql–print 查看是否有mysql文件夾b、$ netstat -a –n 查看是否打開3306端口
    發(fā)表于 07-26 07:46

    編譯環(huán)境的兩種搭建方式

    編譯環(huán)境的兩種搭建方式putty工具的使用winscp工具的使用
    發(fā)表于 12-22 08:00

    串口通信的兩種方式

    串口通信由兩種方式,第一就是用微機(jī)原理課上學(xué)過的TX和RX個接口進(jìn)行通信。不過根據(jù)去年的經(jīng)驗(yàn),這個板子直接用TX和RX個接口進(jìn)行通信容
    發(fā)表于 08-24 06:59

    SQL語言的兩種使用方式

    SQL語言的兩種使用方式在終端交互方式下使用,稱為交互式SQL嵌入在高級語言的程序中使用,稱為嵌入式SQL―高級語言如C、Java等,稱為宿主語言嵌入式SQL的實(shí)現(xiàn)方式源程序(用主語言
    發(fā)表于 12-20 06:51

    逆變器的兩種電流型控制方式

    逆變器的兩種電流型控制方式 摘要:研究分析了逆變器的兩種雙環(huán)瞬時反饋控制方式——電流型準(zhǔn)PWM控制方式和三態(tài)DPM
    發(fā)表于 07-10 11:21 ?3922次閱讀
    逆變器的<b class='flag-5'>兩種</b>電流型控制<b class='flag-5'>方式</b>

    WiMAX系統(tǒng)中兩種多天線技術(shù)的原理和特點(diǎn)詳述

    802.16e協(xié)議中支持MIMO(多入多出)和AAS(自適應(yīng)天線系統(tǒng))兩種不同的多天線實(shí)現(xiàn)方式。本文在介紹MIMO和AAS原理的基礎(chǔ)上。分析了各自的特點(diǎn)和性能,并且進(jìn)行了比較。802.16e協(xié)議
    發(fā)表于 12-13 07:43 ?3230次閱讀
    WiMAX系統(tǒng)中<b class='flag-5'>兩種</b>多天線技術(shù)的原理和特點(diǎn)詳述

    Wincc如何與PLC進(jìn)行通訊兩種常用的方式介紹

    西門子WINCC與SiemensPLC通訊連接有多種方式,下面介紹兩種常用的通訊方式。
    的頭像 發(fā)表于 02-17 09:27 ?3w次閱讀
    Wincc如何與PLC進(jìn)行通訊<b class='flag-5'>兩種</b>常用的<b class='flag-5'>方式</b>介紹

    單片機(jī)常用的兩種延時控制方式

    單片機(jī)中常用的延時控制方式兩種。一是采用編程的方式達(dá)到延時的目的,另一方法則是通過單片機(jī)中的
    發(fā)表于 07-17 10:22 ?5588次閱讀
    單片機(jī)常用的<b class='flag-5'>兩種</b>延時控制<b class='flag-5'>方式</b>

    兩種UVLED封裝方式COB和DOB的區(qū)別

    目前市面上,UVLED常見的封裝方式是COB和DOB兩種,這兩種封裝方式的區(qū)別主要體現(xiàn)在封裝物料、生產(chǎn)工藝、光性能、電性能以及熱性能這幾方面。昀通科技作為UVLED固化機(jī)廠家,在之前的
    發(fā)表于 10-12 08:44 ?5698次閱讀

    在MATLAB/simulink中建模時的兩種不同實(shí)現(xiàn)方式

    導(dǎo)讀:本期文章主要介紹在MATLAB/simulink中建模時的兩種不同實(shí)現(xiàn)方式,一是直接用現(xiàn)成的文件庫中的模塊進(jìn)行搭建,一是用Sfunction代碼實(shí)現(xiàn)。接下來以電壓型磁鏈觀測器
    的頭像 發(fā)表于 09-15 10:07 ?1730次閱讀

    MATLAB/simulink中兩種實(shí)現(xiàn)建模方式的優(yōu)勢

    導(dǎo)讀:本期文章主要介紹在MATLAB/simulink中建模時的兩種不同實(shí)現(xiàn)方式,一是直接用現(xiàn)成的文件庫中的模塊進(jìn)行搭建,一是用Sfunction代碼實(shí)現(xiàn)。接下來以電壓型磁鏈觀測器
    的頭像 發(fā)表于 09-15 10:10 ?4766次閱讀

    MIMXRT并口連接外圍器件的兩種方式

    MIMXRT 有類似Kinetis FlexBUS的接口用于外接FPGA或者并口的液晶屏或者并口采集芯片??梢詤⒖既缦碌膽?yīng)用筆記,有兩種方式: Flexio方式以及SEMC的DBI總線并口連接
    的頭像 發(fā)表于 01-09 11:03 ?1156次閱讀

    互鎖正反轉(zhuǎn)電路的兩種實(shí)現(xiàn)方式

    有關(guān)正反轉(zhuǎn)電路的知識,互鎖正反轉(zhuǎn)電路的兩種實(shí)現(xiàn)方式,一是接觸器互鎖正反轉(zhuǎn),一是按鈕互鎖正反轉(zhuǎn),學(xué)習(xí)下這
    的頭像 發(fā)表于 04-27 15:47 ?1w次閱讀
    互鎖正反轉(zhuǎn)電路的<b class='flag-5'>兩種</b>實(shí)現(xiàn)<b class='flag-5'>方式</b>