模型的改进、保存、加载

import torch
import torchvision
from torch import nn
import warnings

warnings.filterwarnings("ignore")
vgg16_false = torchvision.models.vgg16(weights=False)
vgg16_true = torchvision.models.vgg16(weights='VGG16_Weights.DEFAULT')   #加载默认权重的VGG16
print(vgg16_true)

vgg16_true.add_module('add_linear',nn.Linear(1000,10))   #在最后加上一个线性层
print(vgg16_true)

torch.save(vgg16_true, "model1")   #参数与模型结构都保存
torch.save(vgg16_true.state_dict(), "model2")   #只保留参数,适合大模型的保存
vgg16_load1 = torch.load("model1")
vgg16_load2 = torch.load("model2")
print(vgg16_load1,vgg16_load2)


`torchvision.models.vgg16`是PyTorch库中预置的一个模型,它是基于VGG16架构的。使用这个模型的一般步骤如下: 1. **安装依赖**: 首先,你需要安装`torch`和`torchvision`库。如果你还没有安装,可以在命令行输入: ``` pip install torch torchvision ``` 2. **导入模块**: 导入需要的模型和相关的函数: ```python from torchvision import models from torchvision.transforms import ToTensor, Normalize ``` 3. **加载预训练模型**: 使用`models.vgg16(pretrained=True)`加载预训练好的VGG16模型,这将自动下载并加载在ILSVRC 2012分类数据集上训练的权重: ```python vgg16 = models.vgg16(pretrained=True) ``` 4. **前向传递**: 如果你想使用模型进行特征提取,你可以直接传入图片数据: ```python img = ... # 加载或创建一张图片 img_tensor = ToTensor()(img) if using_cuda: # 判断是否有GPU img_tensor = img_tensor.cuda() features = vgg16(img_tensor).features # 提取特征 ``` 5. **微调(可选)**: 如果要在特定任务上进行微调,可以冻结所有层,只调整最后一部分(如全连接层): ```python for param in vgg16.parameters(): param.requires_grad = False num_ftrs = vgg16.classifier[6].in_features new_classifier = nn.Linear(num_ftrs, num_classes) # num_classes是你新任务的类别数 vgg16.classifier = new_classifier ``` 6. **实例化损失函数和优化器**: 然后设置适当的损失函数和优化器进行训练。 请注意,由于VGG16模型很大,如果内存有限,记得在GPU上运行时考虑使用`torch.no_grad()`来减少内存占用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值