Pytorch系列之——模型保存与加载、finetune

本文详细介绍了PyTorch中模型的保存与加载,包括序列化与反序列化、torch.save和torch.load的使用。此外,还讲解了模型微调的概念,特别是Transfer Learning和finetune的步骤,以及ResNet-18模型在二分类任务中的应用。最后,文章提及了GPU的使用,包括数据迁移和多GPU并行运算。
摘要由CSDN通过智能技术生成

模型保存与加载

  • 序列化与反序列化
  • 模型保存与加载的两种方式
  • 模型断点续训练

按理来说我们训练好一个模型是为了以后可以更方便的去使用它,当我们训练模型是模型是被存储在内存当中的,而内存中数据一般不具有这种长久性的存储的功能,但硬盘可以长期的存储数据,所以在我们训练好模型之后,我们需要将模型从内存中转移到硬盘上进行长期存储。这就是模型的保存与加载,也可以称之为序列化与反序列化,下面介绍为什么模型的保存与加载可以被称为序列化与反序列化呢?
序列化与反序列化主要描述的是内存与硬盘之间的一个转换关系,训练好的模型在内存中是以对象的形式存储的,如果在硬盘中则是以二进制序列的形式进行存储的。
那么序列化就是指将以对象形式存储在内存中的模型再以二进制的形式存储在硬盘中,在pytoch实现中就是将模型对象转换成二进制数据再存储在硬盘中。很显然,反序列化相对应的就是指将存储在硬盘中的二进制序列化数据再重新以模型对象的形式存储至内存中,这二者是相互对应的两个操作:
在这里插入图片描述

Pytorch中的序列化与反序列化
  • torch.save
    主要参数:

  • obj:对象

  • f:输出路径

  • torch.load
    主要参数:

  • f:文件路径

  • map_location:指定存放位置,cpu or gpu

法一:保存整个Module
torch.save(net,path)
法二:保存模型参数
state_dict=net.state_dict()
torch.save(state_dict,path)
在这里插入图片描述首先需要对模型进行保存,这里以LeNet2为例说明,分别对整个模型进行保存,以及仅对模型参数进行保存:
在这里插入图片描述可以看到,程序第一、二行分别是设置保存整个模型和保存模型参数的路径,之后使用torch.save对整个模型进行保存,以及调用state_dict()方法获取模型参数并对其进行保存。

之后是torch.load(),对模型或模型参数进行加载:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Despacito1006

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

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

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

打赏作者

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

抵扣说明:

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

余额充值