【深度学习实战(9)】三种保存和加载模型的方式

一、state_dict方式(推荐)

torch.save(model.state_dict(), PATH)model = YourModel()
model.load_state_dict(torch.load(PATH))
model.eval()

记住一定要使用model.eval()来固定dropout归一化层,否则每次推理会生成不同的结果。

二、整个模型(结构+state_dict)方式

torch.save(model, PATH)model = torch.load(PATH)
model.eval()

这种保存/加载模型的过程使用了最直观的语法,所用代码量少。这使用Python的pickle保存所有模块。这种方法的缺点是,保存模型的时候,序列化的数据被绑定到了特定的类和确切的目录。这是因为pickle不保存模型类本身,而是保存这个类的路径,并且在加载的时候会使用。因此,当在其他项目里使用或者重构的时候,加载模型的时候会出错。
记住一定要使用model.eval()来固定dropout归一化层,否则每次推理会生成不同的结果。

三、cptk方式

当我们在训练的时候,因为一些原因导致训练终止了,这个时候如果我们不想再浪费时间从头开始训练,就可以使用cptk的方式。这种方式不仅可以保存模型的state_dict,还可以保存训练中断时的训练的epoch,loss,优化器的state_dict等信息。

torch.save({'epoch': epoch,'model_state_dict': model.state_dict(),'optimizer_state_dict': optimizer.state_dict(),'loss': loss,...}, PATH)model = yourModel()
optimizer = yourOptimizer()checkpoint = torch.load(PATH)
model.load_state_dict(checkpoint['model_state_dict'])
optimizer.load_state_dict(checkpoint['optimizer_state_dict'])
epoch = checkpoint['epoch']
loss = checkpoint['loss']model.eval()
# - 或者 -
model.train()

示例
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/825947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pymysql +SQLAlchemy操作MySQL数据库(ORM)

一、sqlalchemy简介 SQLAlchemy是用Python编程语言开发的一个开源项目。它提供了SQL工具包和ORM(对象关系映射)工具,使用MIT许可证发行。 SQLAlchemy采用简单的Python语言,提供高效和高性能的数据库访问,实现了完整的…

倾斜摄影修模软件模方(ModelFun)4.1.0下载及安装教程

文章目录 一、模方(ModelFun)4.1.0安装二、模方(ModelFun)4.1.0下载一、模方(ModelFun)4.1.0安装 订阅专栏后(获取专栏内所有文章阅读权限及软件安装包),从文末下载软件模方(ModelFun)4.1.0安装包,如下所示,并开始安装。 1.计算机需要进入测试模式 键盘WIN+R,打开运行窗…

常用命令及简单shell语句

常用命令及简单shell语句 ● 删除注释和空行 sed -e "s/#.*//g" test_file.conf | awk {if (length !0) print $0} ● ES查看更多有关于集群信息、当前节点统计信息等等 curl -XGET http://ip:9200/_cat/nodes?pretty ● 过滤僵尸进程 ps -A -ostat,ppid,pid,cmd…

NLP(4)--实现一个线性层

前言 仅记录学习过程,有问题欢迎讨论 感觉全连接层就像一个中间层转换数据的形态的,或者说预处理数据? 代码 里面有两个部分,一部分是自己实现的,一部分是利用模块的方法实现的。 import torch import torch.nn as nn import…

后端jar包部署常见运行和停止命令

目录 一、jar包运行最佳方式:nohup的方式运行,同时输出日志: 二、停止Jar包的运行: 一、jar包运行最佳方式:nohup的方式运行,同时输出日志: nohup java -jar xxx.jar > log.file 2>&…

【Tesla T4为例】GPU安装最新版本NVIDIA Driver、CUDA、cuDNN、Anaconda、Pytorch

NVIDIA Driver 进入英伟达官网下载页面 按照以上方式选择即可得到>535.113.01版本的驱动,可以实现多卡推理,小于这个版本会导致多卡训练以及推理报错 虽然最新版本为550.54.15,但是535版本更加稳定,并且pytorch目前只支持到1…

二叉树(Binary Tree)

二叉树(Binary Tree)是树的一种常见形式。二叉树的任意结点最多可以有两个子结点,也可以只有一个或者没有子结点。因此二叉树的度数一定小于等于2。二叉树结点的两个子结点,一个被称为左子结点,一个被称为右子结点。二叉树严格区分左右子结点…

YoutobeDNN

目录 1. 挑战 2. 系统整体结构 3.召回 4. 排序 5. 训练和测试样本的处理 1. 挑战 (1)规模。很多现有的推荐算法在小规模上效果好,但Youtobe规模很大。 (2)新颖度。Youtobe语料库是动态的,每秒都会有…

javaagent使用

Java Agent是什么? Java Agent是Java平台提供的一个强大工具,它可以在运行时修改或增强Java应用程序的行为。是在JDK1.5以后引入的,它能够在不影响正常编译的情况下修改字节码,相当于是在main方法执行之前的拦截器,也叫…

微服务架构中的业务模块的可扩展设计

目录 1. 概要设计 1.1 服务拆分与独立部署 1.1.1 精细化拆分 1.1.2 独立部署能力 1.2 接口设计与通信机制 1.2.1 标准化接口 1.2.2 轻量级通信 1.3 数据管理与一致性 1.3.1 分布式数据管理 1.3.2 数据分区与复制 1.4 负载均衡与集群化 1.4.1 负载均衡 1.4.2 集群化…

plugins:Swift-BigInt 计算 斐波那契数列

Swift-BigInt 是 Swift 5 的轻量级易于使用的任意精度算术库。 它支持大多数常见数学运算符的整数(BInt)和分数(BDouble)。 还实现了优化的数学函数,例如阶乘或gcd,并可通过 BIntMath 访问。 计算 斐波那契…

vue3第二十二节(defineOptions用途)

defineOptions() 3.3 版本以上才可以使用 引言: 在使用组件时候 默认情况下,父组件传递的,但没有被子组件解析为 props 的 attributes 绑定会被**“透传”**。这意味着当我们有 一个单根节点(多根节点的是无法透传的) 的子组件时&#xff0…

【面试经典 150 | 二分查找】在排序数组中查找元素的第一个和最后一个位置

文章目录 写在前面Tag题目来源题目解读方法一:二分查找方法二:使用库函数 知识回顾二分查找的三种写法与三个问题常用的二分库函数 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法,两到三天更新一篇文章,欢迎催更……

二叉树的层次遍历(配图详解)

二叉树的层次遍历 层序遍历顾名思义就是一层一层的遍历的树中的所有结点。 typedef char EmpeType 在本篇文章中,将char类型使用EmpeType; typedef char EmpeType;创建一个结构体 typedef struct BiTNode {EmpeType data; //数据域struct BiTNode* …

SpringCloud中的nacos注册中心分析

一、概述 服务注册中心是整个微服务架构体系中的关键组件之一,它负责服务的注册、发现及管理。nacos可以作为注册中心使用,提供了一种简化微服务架构中服务发现,服务注册及健康检查的功能,可以方便地管理微服务的实例。 二、naco…

使用docker配置CCM-SLAM

一.Docker环境配置 1.拉取Docker镜像 sudo docker pull ubuntu:18.04拉取的为ununtu18版本镜像&#xff0c;环境十分干净&#xff0c;可以通过以下命令查看容器列表 sudo docker images 如果想删除多余的docker image&#xff0c;可以使用指令 sudo docker rmi -f <id&g…

微服务设计模式:构建现代分布式系统的蓝图

引言 随着软件开发的进步和需求的变化&#xff0c;微服务架构逐渐崭露头角&#xff0c;成为当今分布式系统设计的主流方式。这种架构方式的兴起并非偶然&#xff0c;它为企业提供了构建灵活、可扩展且高效的应用程序的方法。在这篇博客中&#xff0c;我们将深入探讨微服务架构…

“开关是灯的日出日落,日出日落是灯的开关”

C语言刷题 day01 本篇是C语言刷题大杂烩&#xff0c;收集了笔者遇到的认为有价值的题目&#xff0c;本篇会持续更新~~ day01 至少是其他数字两倍的最大数 题目原文&#xff1a; 题意解析&#xff1a; 请你找出数组中的最大元素并检查它是否 至少是数组中每个其他数字的两倍 …

符文协议的演变历程:从挑战到创新

在比特币网络长期面临的挑战中&#xff0c;与主流去中心化金融功能的兼容性一直是一大难题。相比之下&#xff0c;以太坊通过ERC-721和ERC-1155代币标准&#xff0c;为NFT和去中心化金融应用提供了支持&#xff0c;而比特币的应用范围却相对有限。然而&#xff0c;近年来&#…

蓝桥杯2024年第十五届省赛真题-爬山

贪心优先队列的题&#xff0c;贪心会漏一个情况&#xff0c;不知道怎么处理&#xff0c;这里直接打表了 2 1 1 48 49 答案是30&#xff0c;贪心是31 专有名词&#xff1a;hack-有新的测试点过不了 #include<bits/stdc.h> using namespace std; #define endl \n #define …