01.16 pytorch学习(网络模型的保存与读取)

总所周知我们写的网络可以写在一个python文件中,通过包导入。但也可以手动保存

torch提供了save的方法可以保存网络
两种保存方式
1.存取网络结构和参数
2.存取网络参数

保存方式

import torch
import torchvision
import torch.nn as nn

#True为加载已经训练的参数
vgg16 = torchvision.models.vgg16(pretrained=True)

#已有网络
#保存方式1,模型结构+模型参数
torch.save(vgg16,"vgg16_method1.pth")

#保存方式2,模型参数
#这样不会保存模型结构,所以加载的时候需要手动添加
torch.save(vgg16.state_dict(), "vgg16_method2.pth")

#自己创建的网络
class Tudui(nn.Module):
    def __init__(self):
        super(Tudui,self).__init__()
        self.conv1 = nn.Conv2d(3,32,5,padding=2)

    def forward(self,x):
        return self.conv1(x)

tudui = Tudui()
torch.save(tudui,"tudui_method1.pth")

读取方式:

import torch
import torchvision
import torch.nn as nn

model1 = torch.load("vgg16_method1.pth")
print(model1)#输出的网络结构

model2 = torch.load("vgg16_method2.pth")
print(model2)#输出的网络参数
#怎么加载参数到网络结构中呢
#False为不加载已经训练的参数
vgg16 = torchvision.models.vgg16(pretrained=False)
vgg16.load_state_dict(torch.load("vgg16_method2.pth"))
print(vgg16)#输出的网络结构

#tudui = torch.load("tudui_method1.pth")
#print(tudui)
#AttributeError: Can't get attribute 'Tudui' on <module '__main__' from 'C:/Users/2477491565/Desktop/learn_pytorch/model_load.py'>
#需要将这个模块添加到此文件中
class Tudui(nn.Module):
    def __init__(self):
        super(Tudui,self).__init__()
        self.conv1 = nn.Conv2d(3,32,5,padding=2)

    def forward(self,x):
        return self.conv1(x)

tudui = torch.load("tudui_method1.pth")
print(tudui)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

I Am Rex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值