Pytorch evaluation每次运行结果不同的解决
这两天跑测试图时,发现用同样的model,同样的测试图,每次运行结果不同;
经过漫长的debug发现,在net architure中有dropout,如下(4):
(conv_block): Sequential( (0): ReflectionPad2d((1, 1, 1, 1)) (1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1)) (2): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False) (3): ReLU(inplace) (4): Dropout(p=0.5) (5): ReflectionPad2d((1, 1, 1, 1)) (6): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1)) (7): InstanceNorm2d(256, eps=1e-05, momentum=0.1, affine=False) )
在跑evaluation的时候,因为dropout的存在,每次运行会随机丢一些中间结果,从而导致最终结果有差异;
可以在evaluation过程中,使用eval() class强制丢掉random的内容,code如下:
self.fake_B = self.netG.eval().forward(self.real_A)
以上这篇Pytorch evaluation每次运行结果不同的解决就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
踩坑:pytorch中eval模式下结果远差于train模式介绍
首先,eval模式和train模式得到不同的结果是正常的.我的模型中,eval模式和train模式不同之处在于Batch Normalization和Dropout.Dropout比较简单,在train时会丢弃一部分连接,在eval时则不会.Batch Normalization,在train时不仅使用了当前batch的均值和方差,也使用了历史batch统计上的均值和方差,并做一个加权平均(momentum参数).在test时,由于此时batchsize不一定一致,因此不再使用当前batch的均
-
pytorch加载预训练模型与自己模型不匹配的解决方案
pytorch中如果自己搭建网络并且加载别人的与训练模型的话,如果模型和参数不严格匹配,就可能会出问题,接下来记录一下我的解决方法. 两个有序字典找不同 模型的参数和pth文件的参数都是有序字典(OrderedDict),把字典中的键转为列表就可以在for循环里迭代找不同了. model = ResNet18(1) model_dict1 = torch.load('resnet18.pth') model_dict2 = model.state_dict() model_list1 = lis
-
解决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(
-
Pytorch evaluation每次运行结果不同的解决
这两天跑测试图时,发现用同样的model,同样的测试图,每次运行结果不同; 经过漫长的debug发现,在net architure中有dropout,如下(4): (conv_block): Sequential( (0): ReflectionPad2d((1, 1, 1, 1)) (1): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1)) (2): InstanceNorm2d(256, eps=1e-05, momentum=0.1,
-
pytorch实现保证每次运行使用的随机数都相同
其实在代码的开头添加下面几句话即可: # 保证训练时获取的随机数都是一样的 init_seed = 1 torch.manual_seed(init_seed) torch.cuda.manual_seed(init_seed) np.random.seed(init_seed) # 用于numpy的随机数 torch.manual_seed(seed) 为了生成随机数设置种子.返回一个torch.Generator对象 参数: seed (int) – 期望的种子数 torch.cuda.ma
-
IntelliJ IDE运行Tomcat报错解决办法
IntelliJ IDE运行Tomcat报错解决办法 由于Tomcat默认关闭JMX功能,但IntelliJ IDE配置的IDE需要提供JMX功能,所以IntelliJ IDE运行Tomcat报错:Unable to ping server at localhost:1099! 解决的办法: 1.为Tomcat开启JMX功能,比较麻烦. 2.不使用JMX功能,修改host文件: 127.0.0.1 localhost [添加计算机名] 例如我的计算机名为Linux,所以设置为 127.0.0.
-
iis6手工创建网站后无法运行php脚本的解决方法
给人搬了十几个网站,老站用西部数码建站助手创建的,现在过期了无法继续创建,只能在Internet 信息服务(IIS)管理器创建网站,创建下来都没问题,但是就是无法打开网站. 测试打开txt文档.静态页面都能打开,一到打开php文件就直接就挂了,无法打开,什么报错都没有. 之前有用iis6以外的服务器创建过网站,都是直接创建就可以运行. 没报错不好找问题,百度用别人的方法操作也不行.实在没办法,只能对着之前用建站助手创建的网站配置,放下架子,一个个看过去,结果发现用建站助手创建的网站ISAPI拓展
-
基于创建Web项目运行时出错的解决方法(必看篇)
1.目录结构 2.各文件内容 index.jsp <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <form action="/Servlet" method="
-
浏览器无法运行JAVA脚本的解决方法
1.浏览器无法运行JAVA脚本的解决方法. rundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%System32dacui.dll rundll32.exe advpack.dll /DelNodeRunDLL32 %systemroot%Catrooticatalog.mdb regsvr32 /s comcat.dll regsvr32 /s asctrls.ocx regsvr32 /s oleaut32.dll regsv
-
PyTorch 随机数生成占用 CPU 过高的解决方法
PyTorch 随机数生成占用 CPU 过高的问题 今天在使用 pytorch 的过程中,发现 CPU 占用率过高.经过检查,发现是因为先在 CPU 中生成了随机数,然后再调用.to(device)传到 GPU,这样导致效率变得很低,并且CPU 和 GPU 都被消耗. 查阅PyTorch文档后发现,torch.randn(shape, out)可以直接在GPU中生成随机数,只要shape是tensor.cuda.Tensor类型即可.这样,就可以避免在 CPU 中生成过大的矩阵,而 shape
-
pycharm不能运行.py文件的解决方法
我的pycharm总会出现如下图中的问题: 按快捷键运行也不行,查了半天网上没人遇到这种错误??为什么我的code之路如此艰难T.T记录一下我的解决办法: 点这里: 编辑结构,然后出现: 按照图上步骤依次设置,点击确定.再点击运行按钮即可.虽然右键文件还是会出现不至于,但是直接点击右上角运行按钮即可正常运行. 以上这篇pycharm不能运行.py文件的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.
-
Android Studio使用Kotlin时,修改代码后运行不生效的解决方法
问题现象 前段时间升级 Android Studio 3.1.3+ 版本后,决定尝试使用 Kotlin 做 APP 开发看看.结果却发现,修改 String 资源后,"运行",修改的内容没有生效.一开始以为只是 String 资源是这样,于是试了下 kt 文件,结果发现"运行"也不能生效. 但是先 clean 了,再"运行",却可以正常编译出来.查了好久发现是 New Module 后,Run/Debug Configurations不完整所致.
-
Vue 打包的静态文件不能直接运行的原因及解决办法
问题 吾辈使用 vue-cli 直接生成的 vue 模板项目,在模板之上继续开发的.然而在使用 npm run build 打包项目时,却发现打包好的项目在浏览器中直接打开好像什么都没有? 原因 查看了一下打包后的 index.html 源码,终于发现了一个重要的点: 所有涉及到路径的地方全都是以 / 开头的 下面是吾辈打包后生成的 dist 目录 dist:. │ index.html │ └─static ├─css │ app.b7bce283257fbd427fb1dc3fea80cee
随机推荐
- js 分页代码带切换效果
- 按扩展名分类批处理bat文件
- iOS 微信分享功能简单实现
- asp.net EncryptHelper 加密帮助类
- Asp.Net 动态页面转静态页面主要代码
- JS中使用apply方法通过不同数量的参数调用函数的方法
- 生成html静态文件后的分页(客户端版)
- PHP 截取字符串专题集合
- Python中的map()函数和reduce()函数的用法
- Jsp自定义标签和方法详解
- Android程序开发之UIScrollerView里有两个tableView
- js通过classname来获取元素的方法
- python打开url并按指定块读取网页内容的方法
- 元素水平居中方案全集
- java生成抽样随机数的多种算法
- 详解Python中映射类型(字典)操作符的概念和使用
- Mybatis update数据库死锁之获取数据库连接池等待
- Android 给RecyclerView添加分割线的具体步骤(分享)
- Java中LinkedList详解和使用示例_动力节点Java学院整理
- Android自定义View实现折线图效果