最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PyTorch預(yù)訓(xùn)練的實(shí)現(xiàn)

 更新時(shí)間:2019年09月18日 11:12:51   作者:算法學(xué)習(xí)者  
這篇文章主要介紹了PyTorch預(yù)訓(xùn)練的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

最近使用PyTorch感覺(jué)妙不可言,有種當(dāng)初使用Keras的快感,而且速度還不慢。各種設(shè)計(jì)直接簡(jiǎn)潔,方便研究,比tensorflow的臃腫好多了。今天讓我們來(lái)談?wù)凱yTorch的預(yù)訓(xùn)練,主要是自己寫代碼的經(jīng)驗(yàn)以及論壇PyTorch Forums上的一些回答的總結(jié)整理。

直接加載預(yù)訓(xùn)練模型

如果我們使用的模型和原模型完全一樣,那么我們可以直接加載別人訓(xùn)練好的模型:

my_resnet = MyResNet(*args, **kwargs)
my_resnet.load_state_dict(torch.load("my_resnet.pth"))

當(dāng)然這樣的加載方法是基于PyTorch推薦的存儲(chǔ)模型的方法:

torch.save(my_resnet.state_dict(), "my_resnet.pth")

還有第二種加載方法:

my_resnet = torch.load("my_resnet.pth")

加載部分預(yù)訓(xùn)練模型

其實(shí)大多數(shù)時(shí)候我們需要根據(jù)我們的任務(wù)調(diào)節(jié)我們的模型,所以很難保證模型和公開(kāi)的模型完全一樣,但是預(yù)訓(xùn)練模型的參數(shù)確實(shí)有助于提高訓(xùn)練的準(zhǔn)確率,為了結(jié)合二者的優(yōu)點(diǎn),就需要我們加載部分預(yù)訓(xùn)練模型。

pretrained_dict = model_zoo.load_url(model_urls['resnet152'])
model_dict = model.state_dict()
# 將pretrained_dict里不屬于model_dict的鍵剔除掉
pretrained_dict = {k: v for k, v in pretrained_dict.items() if k in model_dict}
# 更新現(xiàn)有的model_dict
model_dict.update(pretrained_dict)
# 加載我們真正需要的state_dict
model.load_state_dict(model_dict)

因?yàn)樾枰蕹P椭胁黄ヅ涞逆I,也就是層的名字,所以我們的新模型改變了的層需要和原模型對(duì)應(yīng)層的名字不一樣,比如:resnet最后一層的名字是fc(PyTorch中),那么我們修改過(guò)的resnet的最后一層就不能取這個(gè)名字,可以叫fc_

微改基礎(chǔ)模型預(yù)訓(xùn)練

對(duì)于改動(dòng)比較大的模型,我們可能需要自己實(shí)現(xiàn)一下再加載別人的預(yù)訓(xùn)練參數(shù)。但是,對(duì)于一些基本模型PyTorch中已經(jīng)有了,而且我只想進(jìn)行一些小的改動(dòng)那么怎么辦呢?難道我又去實(shí)現(xiàn)一遍嗎?當(dāng)然不是。

我們首先看看怎么進(jìn)行微改模型。

微改基礎(chǔ)模型

PyTorch中的torchvision里已經(jīng)有很多常用的模型了,可以直接調(diào)用:

  • AlexNet
  • VGG
  • ResNet
  • SqueezeNet
  • DenseNet
import torchvision.models as models
resnet18 = models.resnet18()
alexnet = models.alexnet()
squeezenet = models.squeezenet1_0()
densenet = models.densenet_161()

但是對(duì)于我們的任務(wù)而言有些層并不是直接能用,需要我們微微改一下,比如,resnet最后的全連接層是分1000類,而我們只有21類;又比如,resnet第一層卷積接收的通道是3, 我們可能輸入圖片的通道是4,那么可以通過(guò)以下方法修改:

resnet.conv1 = nn.Conv2d(4, 64, kernel_size=7, stride=2, padding=3, bias=False)
resnet.fc = nn.Linear(2048, 21)

簡(jiǎn)單預(yù)訓(xùn)練

模型已經(jīng)改完了,接下來(lái)我們就進(jìn)行簡(jiǎn)單預(yù)訓(xùn)練吧。
我們先從torchvision中調(diào)用基本模型,加載預(yù)訓(xùn)練模型,然后,重點(diǎn)來(lái)了,將其中的層直接替換為我們需要的層即可:

resnet = torchvision.models.resnet152(pretrained=True)
# 原本為1000類,改為10類
resnet.fc = torch.nn.Linear(2048, 10)

其中使用了pretrained參數(shù),會(huì)直接加載預(yù)訓(xùn)練模型,內(nèi)部實(shí)現(xiàn)和前文提到的加載預(yù)訓(xùn)練的方法一樣。因?yàn)槭窍燃虞d的預(yù)訓(xùn)練參數(shù),相當(dāng)于模型中已經(jīng)有參數(shù)了,所以替換掉最后一層即可。OK!

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python tkinter 樹形列表控件(Treeview)的使用方法

    Python tkinter 樹形列表控件(Treeview)的使用方法

    這篇文章主要介紹了Python tkinter 樹形列表控件(Treeview)的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • python實(shí)現(xiàn)按行分割文件

    python實(shí)現(xiàn)按行分割文件

    這篇文章主要為大家詳細(xì)介紹了python如何實(shí)現(xiàn)按行分割文件,python按指定行數(shù)分割文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • python經(jīng)典百題之static定義靜態(tài)變量的三種方法

    python經(jīng)典百題之static定義靜態(tài)變量的三種方法

    日常腳本編寫過(guò)程中時(shí)常會(huì)用到python的靜態(tài)方法、實(shí)例方法、類方法,下面這篇文章主要給大家介紹了關(guān)于python經(jīng)典百題之static定義靜態(tài)變量的三種方法,需要的朋友可以參考下
    2024-09-09
  • exe反編譯為.py文件的方法

    exe反編譯為.py文件的方法

    本文主要介紹了exe反編譯為.py文件的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • uwsgi+nginx部署Django項(xiàng)目操作示例

    uwsgi+nginx部署Django項(xiàng)目操作示例

    這篇文章主要介紹了uwsgi+nginx部署Django項(xiàng)目操作,結(jié)合實(shí)例形式簡(jiǎn)單介紹了uwsgi的概念、原理、安裝、項(xiàng)目創(chuàng)建、配置、調(diào)試運(yùn)行等相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • Python隨機(jī)數(shù)種子(random seed)的使用

    Python隨機(jī)數(shù)種子(random seed)的使用

    在科學(xué)技術(shù)和機(jī)器學(xué)習(xí)等其他算法相關(guān)任務(wù)中,我們經(jīng)常需要用到隨機(jī)數(shù),本文就詳細(xì)的介紹一下Python隨機(jī)數(shù)種子,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Python+matplotlib調(diào)用隨機(jī)函數(shù)生成變化圖形

    Python+matplotlib調(diào)用隨機(jī)函數(shù)生成變化圖形

    這篇文章主要介紹了如何在Python中利用隨機(jī)函數(shù)生成變化的圖形,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定吧參考價(jià)值,需要的可以了解一下
    2022-04-04
  • python自定義函數(shù)實(shí)現(xiàn)最大值的輸出方法

    python自定義函數(shù)實(shí)現(xiàn)最大值的輸出方法

    今天小編就為大家分享一篇python自定義函數(shù)實(shí)現(xiàn)最大值的輸出方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • 詳解django中自定義標(biāo)簽和過(guò)濾器

    詳解django中自定義標(biāo)簽和過(guò)濾器

    本篇文章主要介紹了django中自定義標(biāo)簽和過(guò)濾器,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • Python利用Xpath選擇器爬取京東網(wǎng)商品信息

    Python利用Xpath選擇器爬取京東網(wǎng)商品信息

    這篇文章主要介紹了Python利用Xpath選擇器爬取京東網(wǎng)商品信息,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論

岑溪市| 万州区| 上饶县| 彰化市| 司法| 镶黄旗| 罗江县| 恩施市| 淄博市| 夏津县| 麻江县| 玉山县| 高平市| 丰顺县| 依安县| 舟曲县| 淮阳县| 临江市| 甘孜县| 金坛市| 湄潭县| 富阳市| 大名县| 宁远县| 邢台县| 武陟县| 洛南县| 芜湖县| 顺平县| 凤台县| 习水县| 汽车| 上高县| 石家庄市| 绵阳市| 关岭| 吉林市| 资源县| 阿克苏市| 五指山市| 黄浦区|