提取VGG16预训练网络中的权重和参数

这篇博客介绍了如何使用Python和PyTorch库从预训练的VGG16模型中提取卷积层和全连接层的权重参数,并将这些参数保存为numpy数组。作者通过遍历模型模块逐层获取并储存了bias和weight的值。
摘要由CSDN通过智能技术生成

@Date : 2022/11/10 11:25
@Author : ZZJin
@File : vgg_weight.py.py
@Location :
@Description : 提取VGG16网络中的权重参数ZQM

import numpy as np
import torch.nn as nn
import torchvision
model = torchvision.models.vgg16(pretrained=True)
# print('***********************模型结构为***********************')
# print(model)
feature_map = dict()
layer_num = 0
for k, m in enumerate(model.modules()):   # k是第几层  m有具体的层参数
    if isinstance(m, nn.Conv2d):
        layer_num = layer_num + 1
        weight_copy = m.weight.data.clone()   # 提取权重
        name = str(layer_num) + 'Conv2d_Weight'
        feature_map[name] = np.array(weight_copy.detach().numpy())
        weight_copy = m.bias.data.clone()   # 提取偏置
        name = str(layer_num) + 'Conv2d_Bias'
        feature_map[name] = np.array(weight_copy.detach().numpy())
    elif isinstance(m, nn.Linear):
        layer_num = layer_num + 1
        weight_copy = m.weight.data.clone()   # 提取权重
        name =str(layer_num) + 'Linear_Weight'
        feature_map[name] = np.array(weight_copy.detach().numpy())
        weight_copy = m.bias.data.clone()   # 提取偏置
        name = str(layer_num) + 'Linear_Bias'
        feature_map[name] = np.array(weight_copy.detach().numpy())
np.save('feature_map.npy', feature_map) # 注意带上后缀名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值