pytorch预测之解决多次预测结果不一致问题

为什么多次预测结果不一致

1、检查是否在每次预测前使用

model.eval()

或者是

with torch.no_grad():
   for ...

推荐下面的方法,上面的的方法计算梯度,但是并不反向传播,下面的方法既不计算梯度,也不反向传播,速度更快。

2、检查是否取消了所有的dropout

3、设置随机种子

def setup_seed(seed):
    np.random.seed(seed)
    random.seed(seed)
    torch.manual_seed(seed) #cpu
    torch.cuda.manual_seed_all(seed)  #并行gpu
    torch.backends.cudnn.deterministic = True  #cpu/gpu结果一致
    torch.backends.cudnn.benchmark = True   #训练集变化不大时使训练加速

4、保证实例化模型前要将is_training置为false;这两行代码顺序不能颠倒

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

(0)

相关推荐

  • pytorch加载预训练模型与自己模型不匹配的解决方案

    pytorch中如果自己搭建网络并且加载别人的与训练模型的话,如果模型和参数不严格匹配,就可能会出问题,接下来记录一下我的解决方法. 两个有序字典找不同 模型的参数和pth文件的参数都是有序字典(OrderedDict),把字典中的键转为列表就可以在for循环里迭代找不同了. model = ResNet18(1) model_dict1 = torch.load('resnet18.pth') model_dict2 = model.state_dict() model_list1 = lis

  • pytorch模型预测结果与ndarray互转方式

    预测结果转为numpy: logits=model(feature) #如果模型是跑在GPU上 result=logits.data.cpu().numpy() / logits.cpu().numpy() #如果模型跑在cpu上 result=logits.data.numpy() / logits.numpy() 将矩阵转为tensor: np_arr = np.array([1,2,3,4]) tensor=torch.from_numpy(np_arr) 以上这篇pytorch模型预测结

  • 关于pytorch处理类别不平衡的问题

    当训练样本不均匀时,我们可以采用过采样.欠采样.数据增强等手段来避免过拟合.今天遇到一个3d点云数据集合,样本分布极不均匀,正例与负例相差4-5个数量级.数据增强效果就不会太好了,另外过采样也不太合适,因为是空间数据,新增的点有可能会对真实分布产生未知影响.所以采用欠采样来缓解类别不平衡的问题. 下面的代码展示了如何使用WeightedRandomSampler来完成抽样. numDataPoints = 1000 data_dim = 5 bs = 100 # Create dummy dat

  • 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预测之解决多次预测结果不一致问题

    为什么多次预测结果不一致 1.检查是否在每次预测前使用 model.eval() 或者是 with torch.no_grad(): for ... 推荐下面的方法,上面的的方法计算梯度,但是并不反向传播,下面的方法既不计算梯度,也不反向传播,速度更快. 2.检查是否取消了所有的dropout 3.设置随机种子 def setup_seed(seed): np.random.seed(seed) random.seed(seed) torch.manual_seed(seed) #cpu tor

  • 运用PyTorch动手搭建一个共享单车预测器

    本文摘自 <深度学习原理与PyTorch实战> 我们将从预测某地的共享单车数量这个实际问题出发,带领读者走进神经网络的殿堂,运用PyTorch动手搭建一个共享单车预测器,在实战过程中掌握神经元.神经网络.激活函数.机器学习等基本概念,以及数据预处理的方法.此外,还会揭秘神经网络这个"黑箱",看看它如何工作,哪个神经元起到了关键作用,从而让读者对神经网络的运作原理有更深入的了解. 3.1 共享单车的烦恼 大约从2016年起,我们的身边出现了很多共享单车.五颜六色.各式各样的共

  • pytorch VGG11识别cifar10数据集(训练+预测单张输入图片操作)

    首先这是VGG的结构图,VGG11则是红色框里的结构,共分五个block,如红框中的VGG11第一个block就是一个conv3-64卷积层: 一,写VGG代码时,首先定义一个 vgg_block(n,in,out)方法,用来构建VGG中每个block中的卷积核和池化层: n是这个block中卷积层的数目,in是输入的通道数,out是输出的通道数 有了block以后,我们还需要一个方法把形成的block叠在一起,我们定义这个方法叫vgg_stack: def vgg_stack(num_conv

  • PyTorch搭建ANN实现时间序列风速预测

    目录 数据集 特征构造 数据处理 1.数据预处理 2.数据集构造 ANN模型 1.模型训练 2.模型预测及表现 数据集 数据集为Barcelona某段时间内的气象数据,其中包括温度.湿度以及风速等.本文将简单搭建来对风速进行预测. 特征构造 对于风速的预测,除了考虑历史风速数据外,还应该充分考虑其余气象因素的影响.因此,我们根据前24个时刻的风速+下一时刻的其余气象数据来预测下一时刻的风速. 数据处理 1.数据预处理 数据预处理阶段,主要将某些列上的文本数据转为数值型数据,同时对原始数据进行归一

  • PyTorch搭建LSTM实现时间序列负荷预测

    目录 I. 前言 II. 数据处理 III. LSTM模型 IV. 训练 V. 测试 VI. 源码及数据 I. 前言 在上一篇文章深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)中,我详细地解释了如何利用PyTorch来搭建一个LSTM模型,本篇文章的主要目的是搭建一个LSTM模型用于时间序列预测. 系列文章: PyTorch搭建LSTM实现多变量多步长时序负荷预测 PyTorch搭建LSTM实现多变量时序负荷预测 PyTorch深度学习LSTM从input输入

  • 完美解决Indy 编译提示版本不一致的问题

    1,起因 某delphi程序A使用了Indy9.0.18组件.机器中原本自带老版本的Indy组件9.0.12,后升级到9.0.18,使用一直正常. 某次操作将程序A重新build all了一下,结果提示如下信息,此后即便是compile也会出错. [Fatal Error] uMain.pas(11): Unit IdServerIOHandlerSocket was compiled with a different version of IdServerIOHandler.TIdServer

  • MyBatis使用resultMap如何解决列名和属性名不一致

    目录 使用resultMap如何解决列名和属性名不一致 OrderMapper.xml配置 单元测试 实体属性名与表字段名不匹配问题 问题 解决方案一 解决方案二 使用resultMap如何解决列名和属性名不一致 resultType可以指定将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功. 如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,resultMap实质上还需要将查询结果映射到pojo对象中. 需

  • 解决vue前后端端口不一致的问题

    vue前后端端口不一致 在config index.js文件中 引入如下代码即可 proxyTable: { '/api': { target: 'http://localhost:3000',//要访问的后端接口 changeOrigin: true, pathRewrite: { '^/api': '/' //这里的配置是正则表达式,以/api开头的将会被用用'/api'替换掉,假如后台文档的接口是 /api/list/xxx //前端api接口写:axios.get('/api/list/

  • ORACLE 正则解决初使化数据格式不一致

    如: 2000-1-1==> 2000-01-01.2000-01-1==>2000-01-01.2000-1-01==>2000-01-01 以前会写一个function/procedure之类的脚本,大量的IF ELSE... 今次无意中发现oracle10g已经支持正则功能,上述问题也就迎刃而解了.. 复制代码 代码如下: UPDATE LZ__EQ_RHGL LZRH SET LS__SP_GHTIME = SUBSTR(LZ__SP_GHTIME, 1, 5) || '0' |

  • PyTorch搭建LSTM实现多变量多步长时序负荷预测

    目录 I. 前言 II. 数据处理 III. LSTM模型 IV. 训练和预测 V. 源码及数据 I. 前言 在前面的两篇文章PyTorch搭建LSTM实现时间序列预测(负荷预测)和PyTorch搭建LSTM实现多变量时间序列预测(负荷预测)中,我们利用LSTM分别实现了单变量单步长时间序列预测和多变量单步长时间序列预测. 本篇文章主要考虑用PyTorch搭建LSTM实现多变量多步长时间序列预测. 系列文章: PyTorch搭建双向LSTM实现时间序列负荷预测 PyTorch搭建LSTM实现多变

随机推荐