model.train()与model.val()

news/2024/11/15 5:52:09/

一、问题描述

  1. 需要将mmpose框架下训练的模型单独保存出来,做后续处理。
  2. 用torch.save()直接保存模型mmpose_model.pt,然后重新搭建模型,把保存的模型参数加载进去,得到scratch_model.pt
  3. 使用scratch_model.pt进行推理,与mmpose_model.pt推理结果不同。二者都转成onnx模型后,推理结果与mmpose_model.pt的推理结果相同。

二、问题分析

mmpose_model.pt与scratch_model.pt的数据预处理以及输出的后处理是一致的,所以应该是模型加载的时候有问题。
查资料发现,使用scratch_model.pt进行推理的时候,没有加model.eval()

二、model.train()与model.val()区别

  1. 参考https://blog.csdn.net/libaominshouzhang/article/details/119741474
  2. 参考https://blog.csdn.net/qq_38410428/article/details/101102075
    model.train()与model.val()在处理BatchNormalizationDropout层时候的机制不同。
    model.train()时,BatchNormalization的参数会根据输入更新,Dropout使输入以p的概率参与计算
    model.eval()时,BatchNormalization的参数则会固定,与保存的值一致,Dropout不起作用,所有输入参与计算
    在这里插入图片描述

http://www.ppmy.cn/news/21330.html

相关文章

界面组件DevExtreme v22.2亮点——UI模板库升级换代!

DevExtreme拥有高性能的HTML5 / JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NET Core,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac&#xff0c…

Java线程池中的execute和submit

一、概述 execute和submit都是线程池中执行任务的方法。 execute是Executor接口中的方法 public interface Executor {void execute(Runnable command); }submit是ExecuteService接口中的方法。 public interface ExecutorService extends Executor {<T> Future<T…

Mysql高级部分学习笔记(一)——底层及索引

0. 概述 我们的数据库一般都会并发执行多个事务&#xff0c;多个事务可能会并发的对相同的一批数据进行增删改查操作&#xff0c;可能 就会导致我们说的脏写、脏读、不可重复读、幻读这些问题。 这些问题的本质都是数据库的多事务并发问题&#xff0c;为了解决多事务并发问题…

Github如何使用详细介绍(保姆级教学)

前言 &#x1f4dc; “ 作者 久绊A ” 专注记录自己所整理的Java、web、sql等&#xff0c;IT技术干货、学习经验、面试资料、刷题记录&#xff0c;以及遇到的问题和解决方案&#xff0c;记录自己成长的点滴 目录 一、Github如何搜索 二、如何判断一个项目好不好呢&#xff1f…

在 PyTorch 中使用梯度检查点在GPU 上训练更大的模型

作为机器学习从业者&#xff0c;我们经常会遇到这样的情况&#xff0c;想要训练一个比较大的模型&#xff0c;而 GPU 却因为内存不足而无法训练它。当我们在出于安全原因不允许在云计算的环境中工作时&#xff0c;这个问题经常会出现。在这样的环境中&#xff0c;我们无法足够快…

后量子 KEM 方案:Newhope

参考文献&#xff1a; Lyubashevsky V, Peikert C, Regev O. On ideal lattices and learning with errors over rings[J]. Journal of the ACM (JACM), 2013, 60(6): 1-35.Lyubashevsky V, Peikert C, Regev O. A toolkit for ring-LWE cryptography[C]//Advances in Cryptol…

【35】C语言 | 柔性数组

目录 柔性数简介 柔性数组的特点 柔性数组的优势 柔性数简介 C99中&#xff0c;结构中的最后一个元素允许是未知大小的数组&#xff0c;这就叫做[柔性数组]成员在一个结构体的最后, 申明一个长度为0的数组, 就可以使得这个结构体是可变长的. 对于编译器来说, 此时长度为0的数…

十三、Promise与异步编程

文章目录一、Promise与异步编程一、Promise与异步编程 Promises 是异步编程的另一种选择&#xff0c;它的工作方式类似于在其他语言中延迟并在将来执行作 业。 异步编程的背景 JS 引擎在同一时刻只能执行一段代码&#xff0c;所以引擎无须留意那些“可能”运行的代码。代码会被…