model.train()与model.val()

一、问题描述

  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不起作用,所有输入参与计算
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值