PyTorch dropout设置训练和测试模式的实现

 更新时间:2021年05月27日 11:31:24   作者:运动码农  
这篇文章主要介绍了PyTorch dropout设置训练和测试模式的实现方式,具有很好的参考价值,希望对大家有所帮助。

看代码吧~

class Net(nn.Module):
…
model = Net()
…
model.train() # 把module设成训练模式,对Dropout和BatchNorm有影响
model.eval() # 把module设置为预测模式,对Dropout和BatchNorm模块有影响

补充:Pytorch遇到的坑——训练模式和测试模式切换

由于训练的时候Dropout和BN层起作用,每个batch BN层的参数不一样,dropout在训练时随机失效点具有随机性,所以训练和测试要区分开来。

使用时切记要根据实际情况切换:

model.train()
model.eval()

补充:Pytorch在测试与训练过程中的验证结果不一致问题

引言

今天在使用Pytorch导入此前保存的模型进行测试,在过程中发现输出的结果与验证结果差距甚大,经过排查后发现是forward与eval()顺序问题。

现象

此前的错误代码是

    input_cpu = torch.ones((1, 2, 160, 160))
    target_cpu =torch.ones((1, 2, 160, 160))
    target_gpu, input_gpu = target_cpu.cuda(), input_cpu.cuda()
    model.set_input_2(input_gpu, target_gpu)
    model.eval()
    model.forward()

应该改为

    input_cpu = torch.ones((1, 2, 160, 160))
    target_cpu =torch.ones((1, 2, 160, 160))
    target_gpu, input_gpu = target_cpu.cuda(), input_cpu.cuda()
    model.set_input_2(input_gpu, target_gpu)
    # 先forward再eval
    model.forward()
    model.eval()

当时有个疑虑,为什么要在forward后面再加eval(),查了下相关资料,主要是在BN层以及Dropout的问题。当使用eval()时,模型会自动固定BN层以及Dropout,选取训练好的值,否则则会取平均,可能导致生成的图片颜色失真。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • PyTorch学习之软件准备与基本操作总结

    PyTorch学习之软件准备与基本操作总结

    这篇文章主要介绍了PyTorch学习之软件准备与基本操作总结,文中有非常详细的代码示例,对正在学习python的小伙伴们有很好地帮助,需要的朋友可以参考下
    2021-05-05
  • Django请求响应Web Http交互的核心机制深入理解

    Django请求响应Web Http交互的核心机制深入理解

    本文深入探讨了 Django 中的请求与响应处理,从 Django 请求和响应的基础知识、生命周期,到 HttpRequest 和 HttpResponse 对象的详细介绍,同时,讨论了 Django 的视图和请求、响应处理,以及安全性和异步处理的考虑
    2023-09-09
  • Python3.x中自定义比较函数

    Python3.x中自定义比较函数

    这篇文章主要介绍了Python3.x中自定义比较函数,本文给出了自定义对象的比较、字典值value的比较实现方法,需要的朋友可以参考下
    2015-04-04
  • Python numpy数组转置与轴变换

    Python numpy数组转置与轴变换

    这篇文章主要介绍了Python numpy数组转置与轴变换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • 在Ubuntu中安装并配置Pycharm教程的实现方法

    在Ubuntu中安装并配置Pycharm教程的实现方法

    这篇文章主要介绍了在Ubuntu中安装并配置Pycharm教程的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • python实现中文文本分句的例子

    python实现中文文本分句的例子

    今天小编就为大家分享一篇python实现中文文本分句的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • python3实现网页版raspberry pi(树莓派)小车控制

    python3实现网页版raspberry pi(树莓派)小车控制

    这篇文章主要为大家详细介绍了python3实现网页版raspberry pi(树莓派)小车控制,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • 利用 Python ElementTree 生成 xml的实例

    利用 Python ElementTree 生成 xml的实例

    这篇文章主要介绍了利用 Python ElementTree 生成 xml的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Python结合Selenium简单实现Web自动化测试

    Python结合Selenium简单实现Web自动化测试

    这篇文章是入门级别的应用Python + Selenium进行自动化测试,包括环境搭建及简单的实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Python 轻松实现可视化大屏

    Python 轻松实现可视化大屏

    对于从事数据领域的小伙伴来说,当需要阐述自己观点、展示项目成果时,我们需要在最短时间内让别人知道你的想法。我相信单调乏味的语言很难让别人快速理解。最直接有效的方式就是将数据进行可视化展现
    2022-01-01

最新评论