目錄
一、使用現(xiàn)有網(wǎng)絡(luò)模型
二、修改現(xiàn)有網(wǎng)絡(luò)模型
一、使用現(xiàn)有網(wǎng)絡(luò)模型
PyTorch提供了許多流行的深度學(xué)習(xí)模型,這些模型在大規(guī)模圖像數(shù)據(jù)集上進行了預(yù)訓(xùn)練。其中一個著名的模型是VGG16。下面是如何使用VGG16模型的示例代碼:
import torchvision
from torch import nn
from torchvision.models import VGG16
# 使用不帶預(yù)訓(xùn)練權(quán)重的VGG16模型
vgg16_false = torchvision.models.vgg16(pretrained=False)
# 使用預(yù)訓(xùn)練權(quán)重的VGG16模型
vgg16_true = torchvision.models.vgg16(pretrained=True)
print(vgg16_false)
print(vgg16_true)
在上述代碼中,使用torchvision.models.vgg16
來加載VGG16模型。通過pretrained
參數(shù),我們可以選擇是否加載預(yù)訓(xùn)練的權(quán)重。vgg16_false
代表一個不帶預(yù)訓(xùn)練權(quán)重的VGG16模型,而vgg16_true
代表一個帶有預(yù)訓(xùn)練權(quán)重的模型。
二、修改現(xiàn)有網(wǎng)絡(luò)模型
一旦加載了現(xiàn)有的網(wǎng)絡(luò)模型,可以對其進行修改,以滿足特定任務(wù)的需求。下面是如何修改VGG16模型的示例代碼:
import torchvision
from torch import nn
from torchvision.models import VGG16
# 加載帶有預(yù)訓(xùn)練權(quán)重的VGG16模型
vgg16 = torchvision.models.vgg16(pretrained=True)
# 添加一個新的線性層,將輸出從1000類修改為10類
vgg16.classifier.add_module('add_linear', nn.Linear(1000, 10))
# 修改VGG16模型的最后一個全連接層
vgg16.classifier[6] = nn.Linear(4096, 10)
print(vgg16)
在上述代碼中,加載了一個帶有預(yù)訓(xùn)練權(quán)重的VGG16模型,并通過add_module
方法添加了一個新的線性層,將輸出從1000類修改為10類。此外,還演示了如何通過修改模型的索引來改變VGG16模型的最后一個全連接層。
這種方法可以幫助您快速構(gòu)建適用于特定任務(wù)的模型,而無需從頭開始訓(xùn)練整個網(wǎng)絡(luò)。
完整代碼如下:
import torchvision
from torch import nn
from torchvision.models import VGG16_Weights
# train_data = torchvision.datasets.ImageNet("D:\\Python_Project\\pytorch\\data_image_net",split="train",download=True,transform=torchvision.transforms.ToTensor())
# 錯誤原因:參數(shù)pretrained自0.13起已棄用,將在0.15后刪除,要改用“weights”。
vgg16_false = torchvision.models.vgg16(weights=None)
vgg16_true = torchvision.models.vgg16(weights=VGG16_Weights.DEFAULT)
# print(vgg16_true)
# 要想用于 CIFAR10 數(shù)據(jù)集, 可以在網(wǎng)絡(luò)下面多加一行,轉(zhuǎn)成10分類的輸出,這樣輸出的結(jié)果,跟下面的不一樣,位置不一樣
# vgg16_true.add_module('add_Linear',nn.Linear(1000,10))
# print(vgg16_true)
vgg16_true.classifier.add_module('add_linear',nn.Linear(1000,10))
# 層級不同
# 如何利用現(xiàn)有的網(wǎng)絡(luò),改變結(jié)構(gòu)
print(vgg16_true)
# 上面是添加層,下面是如何修改VGG里面的層內(nèi)容
print(vgg16_false)
vgg16_false.classifier[6] = nn.Linear(4096,10) # 中括號里的內(nèi)容,是網(wǎng)絡(luò)輸出結(jié)果自帶的索引,套進這種格式,就可以直接修改那一層的內(nèi)容
print(vgg16_false)
參考資料:文章來源:http://www.zghlxwxcb.cn/news/detail-743649.html
視頻教程:PyTorch深度學(xué)習(xí)快速入門教程(絕對通俗易懂?。拘⊥炼选?span toymoban-style="hidden">文章來源地址http://www.zghlxwxcb.cn/news/detail-743649.html
到了這里,關(guān)于PyTorch入門學(xué)習(xí)(十五):現(xiàn)有網(wǎng)絡(luò)模型的使用及修改的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!