pytorch 实现在测试的时候启用dropout
我们知道,dropout一般都在训练的时候使用,那么测试的时候如何也开启dropout呢?
在pytorch中,网络有train和eval两种模式,在train模式下,dropout和batch normalization会生效,而val模式下,dropout不生效,bn固定参数。
想要在测试的时候使用dropout,可以把dropout单独设为train模式,这里可以使用apply函数:
def apply_dropout(m):
if type(m) == nn.Dropout:
m.train()
下面是完整demo代码:
# coding: utf-8
import torch
import torch.nn as nn
import numpy as np
class SimpleNet(nn.Module):
def __init__(self):
super(SimpleNet, self).__init__()
self.fc = nn.Linear(8, 8)
self.dropout = nn.Dropout(0.5)
def forward(self, x):
x = self.fc(x)
x = self.dropout(x)
return x
net = SimpleNet()
x = torch.FloatTensor([1]*8)
net.train()
y = net(x)
print('train mode result: ', y)
net.eval()
y = net(x)
print('eval mode result: ', y)
net.eval()
y = net(x)
print('eval2 mode result: ', y)
def apply_dropout(m):
if type(m) == nn.Dropout:
m.train()
net.eval()
net.apply(apply_dropout)
y = net(x)
print('apply eval result:', y)
运行结果:
可以看到,在eval模式下,由于dropout未生效,每次跑的结果不同,利用apply函数,将Dropout单独设为train模式,dropout就生效了。
补充:Pytorch之dropout避免过拟合测试
一.做数据
二.搭建神经网络
三.训练
四.对比测试结果
注意:测试过程中,一定要注意模式切换
(资源库 www.zyku.net)
原文链接:https://blog.csdn.net/qian99/article/details/89052262
您可能感兴趣的文章
- 02-21CentOS彻底删除MySQL的方法
- 11-29WordPress提示正在执行例行维护,请一分
- 01-12星源社区-星源社区应用软件功能介绍
- 03-14苹果11拍照九宫格设置操作方法
- 09-17小米手环6怎么开启NFC
- 01-01荣耀60Pro如何开启微信美颜
- 04-05iqooz3设置NFC教程
- 01-09南安智慧停车-南安智慧停车应用软件功
- 01-12最好听的汽车引擎声音游戏-最好听的汽
- 04-18一加9pro系统分身设置教程
- 07-05Linux fsck.minix命令
- 08-21帝国CMS7.5火车采集器免登录发布模块
- 10-24支付宝扫码领红包二维码在哪
- 02-10opporeno5pro添加闹钟教程
- 02-27帝国CMS自定义列表从第N条开始查询SQL
- 01-11宠宠院-宠宠院应用软件功能介绍
- 01-19鸿鹄影视-鸿鹄影视应用软件功能介绍
- 12-25可可日语-可可日语应用软件功能介绍
- 11-05微博设置关注检测方法介绍
- 02-13opporeno5pro手机打开nfc教程
最近更新
阅读排行
猜你喜欢
- 02-28iPhone12设置显示号码归属地操作教程
- 11-06红米note11pro分屏方法一览
- 09-18OPPOreno6怎么拦截垃圾短信
- 08-11华为手机地震预警功能在哪
- 12-12小米平板5如何关闭屏幕
- 01-14超能清理王-超能清理王应用软件功能介
- 04-09jQuery实现鼠标拖动div改变位置、大小
- 09-20amazfit智能手表如何绑定手机
- 08-14小米Sound怎么连接wifi
- 03-02oppo手机飞行模式开启方法