神经网络---网络模型的保存、加载

方式1:结构+参数

保存

import torch
import torchvision
from torch import nn
from torchvision.models import vgg16, VGG16_Weights

vgg16 = torchvision.models.vgg16(weights=VGG16_Weights.DEFAULT)

# 保存方式1, 模型解构+模型参数
torch.save(vgg16, 'vgg16_1.pth')

加载

from p26_model_svae import *

# 方式1 -》 保存方式1,加载模型
model = torch.load('vgg16.pth')
print(model)

方式1的陷阱
自定义网络结构如下:

import torch
import torchvision
from torch import nn

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui, self).__init__()
        self.conv1 = nn.Conv2d(3, 64, kernel_size=3, padding=1)

    def forward(self, x):
        x = self.conv1(x)
        return x
torch.save(Tudui(), 'tudui_1.pth')

在另一个文件加载该模型,会报错
正确的调用格式需要复制原模型的类定义

class Tudui(nn.Module):
    def __init__(self):
        super(Tudui, self).__init__()
        self.conv1 = nn.Conv2d(3, 64, kernel_size=3, padding=1)

    def forward(self, x):
        x = self.conv1(x)
        return x
model = torch.load('tudui_1.pth')
print(model)

或者用import

from p26_model_svae import *

model = torch.load('tudui_1.pth')
print(model)

方式2 模型参数(官方推荐)

import torch
import torchvision
from torch import nn

vgg16 = torchvision.models.vgg16(pretrained=False)

# 保存方式2 模型参数(官方推荐)
torch.save(vgg16.state_dict(), 'vgg16_2.pth')

模型加载(在另一个文件加载)

# 方式2 ,加载模型
vgg16 = torchvision.models.vgg16(weights=None)
vgg16.load_state_dict(torch.load('vgg16_2.pth'))
# model2 = torch.load('vgg16_2.pth')  #字典形式
print(vgg16)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值