pytorch对网络层的增,删, 改, 修改预训练模型结构

#下载模型参数
model.load_state_dict(torch.load('model.pth'))#再加载网络的参数

torch.load('model.pth')是获得网络参数

1.我们使用vgg11网络做示例, 看一下网络结构:

加载本地的模型:

vgg16 = models.vgg16(pretrained=False)

#打印出预训练模型的参数
vgg16.load_state_dict(torch.load('vgg16-397923af.pth'))

加载库中的模型

import torch
import torch.nn as nn
from torchvision import models

net = models.vgg11(pretrained=True)
print(net)

pytorch对网络层的增,删, 改, 修改预训练模型结构

1)(1). 在网络中添加一层:

net网络是一个树型结构, net下面有三个结点,分别是(features, avgpoll, classifier), 我们先在features结点添加一层’lastlayer’层

net.features.add_module('lastlayer', nn.Conv2d(512,512, kernel_size=3, stride=1, padding=1))
print(net)

pytorch对网络层的增,删, 改, 修改预训练模型结构
net.classifier.add_module('Linear', nn.Linear(1000, 10))
print(net)

pytorch对网络层的增,删, 改, 修改预训练模型结构

2)(1)修改网络中的某一层(features 结点举例):

net.features[8] = nn.Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))
print(net)

pytorch对网络层的增,删, 改, 修改预训练模型结构

2)(2)修改网络中的某一层(classifier结点举例):

net.classifier[6] = nn.Linear(1000, 5)
print(net)

注意这里我尝试对Linear这一层进行更新, 但是Linear名字是字符串, 提取不出来,所以应该在之前添加网络时候, 名字不要取字符串, 否则会报错 ‘ ‘str’ object cannot be interpreted as an integer’。

pytorch对网络层的增,删, 改, 修改预训练模型结构

3)(1) 网络层的删除(features举例) classifier结点的操作相同。

直接使用nn.Sequential()对改层设置为空即可

net.features[13] = nn.Sequential()
print(net)

pytorch对网络层的增,删, 改, 修改预训练模型结构

4)冻结网络中某些层 (直接使该层的requires_grad = False)即可, 这样在反向传播的时候,不会更新该层的参数

#冻结指定层的预训练参数:
net.feature[26].weight.requires_grad = False

5). 第二种对网络结构的操作方法:

net.features = nn.Sequential(*list(net.features.children())[:-4])

可以看到后面4层被去除了, 就是说可以使用列表切片的方法来删除网络层

net.classifier 对应 net.classifier.children()

net.features 对应 net.features.children()

pytorch对网络层的增,删, 改, 修改预训练模型结构
  1. 先加载网络结构
自己的模型, model的类要有定义才可以, 如果在其他.py文件中,可以导入文件,然后用文件中的类实例化对象。
model = torch.load(PATH)

2.再加载网络参数

下载模型参数

model.load_state_dict(torch.load('model.pth'))#再加载网络的参数

torch.load('model.pth')是获得网络参数

Original: https://blog.csdn.net/qq_53345829/article/details/124641236
Author: -周-
Title: pytorch对网络层的增,删, 改, 修改预训练模型结构

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/706932/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球