精华内容
下载资源
问答
  • 在使用pytorch运行图像分类的代码的时候,发现测试集准确率总是只有30%左右, 但是训练集准确率基本可以达到80%以上,那么存在的问题可能是一下几个方面导致的: 1、学习率设置得太高,可以尽量将学习率设置得小...

    在使用pytorch运行图像分类的代码的时候,发现测试集准确率总是只有30%左右, 但是训练集准确率基本可以达到80%以上,那么存在的问题可能是一下几个方面导致的:

    1、学习率设置得太高,可以尽量将学习率设置得小一点;

    2、没有使用outputs = net(inputs)这一行代码,这行代码表示前向传播求出预测的值,如果没有这行代码,那么后面预测值使用的outputs是来自训练集最后一个batch的output,因此导致准确率很低;

    3、epoch设置的太小,导致网络还没有学习到足够的信息,导致测试集准确率很低。

    展开全文
  • 解决的办法是对代码进行修改:shuffle=False 修改后的模型测试准确率就正常了: 当然,导致模型测试集准确率低的原因远不止这一种,还有很多其他的可能,所以希望大家在遇见具体问题的时候还是能够具体分析。

    今天在测试模型时发现一个问题,keras训练模型,训练集准确率很高,测试集准确率很低,因此记录一下希望能帮助大家也避坑:

    首先keras本身不同的版本都有些不同的或大或小的bug,包括之前也困扰过我的BN层问题(相信很多人都中过招),因此我先说下我的对应版本:keras:2.3.1 tensorflow-gpu:1.15 CUDA:10.0 cudnn:7.6.3

    在训练模型完成后在测试集测试模型准确率:

    def valid_data(valid_data_dir='./data/val'):
        valid_datagen = ImageDataGenerator(rescale=1. / 255)
                                           
        valid_generator = valid_datagen.flow_from_directory(valid_data_dir,
                                                            target_size=(224, 224),
                                                            batch_size=16,
                                                            class_mode='categorical',
                                                            )
        return valid_generator
    
    valid_generator = valid_data()
    
    model = load_model('resnet.h5')
    predictions = model.predict_generator(valid_generator,verbose=1)
    predict_label = predictions.argmax(axis=-1) 
    true_label = valid_generator.classes
    
    acc=accuracy_score(true_label,predict_label)
    print(acc, end='\n\n')
    

    乍一看代码其实没有太大问题,但是最后准确率很低:
    在这里插入图片描述

    核心原因是对测试集的数据顺序做了打乱,使得预测label与真实label无法对应:
    在这里插入图片描述
    预测label是对打乱的数据预测的:

    在这里插入图片描述

    但是真实label是未打乱的:
    在这里插入图片描述

    解决的办法是对代码进行修改:shuffle=False
    在这里插入图片描述
    修改后的模型测试准确率就正常了:

    在这里插入图片描述
    当然,导致模型测试集准确率低的原因远不止这一种,还有很多其他的可能,所以希望大家在遇见具体问题的时候还是能够具体分析。

    展开全文
  • 1.数据集太小,这样会导致数据集切分的时候不均匀,也就是...Dropout能基本上确保测试集准确性最好,优于训练集的准确性。Dropout迫使神经网络成为一个非常大的弱分类器集合,这就意味着,一个单独的分类器没有太高的

    1.数据集太小,这样会导致数据集切分的时候不均匀,也就是说训练集和测试集的分布不均匀,如果模型能够正确地捕捉到数据内部的分布模式的话,就有可能造成训练集的内部方差大于验证集,会造成训练集的误差更大,这个时候就需要重新划分数据集,使其分布一样。

    2.模型正则化过多,比如训练时dropout过多,和验证时的模型相差较大,验证时是不会有dropout的。

    Dropout能基本上确保测试集的准确性最好,优于训练集的准确性。Dropout迫使神经网络成为一个非常大的弱分类器集合,这就意味着,一个单独的分类器没有太高的分类准确性,只有当把他们串在一起的时候他们才会变得更强大。

    而且在训练期间,Dropout将这些分类器的随机集合切掉,因此,训练准确率将受到影响;在测试期间,Dropout将自动关闭,并允许使用神经网络中的所有弱分类器,因此,测试精度提高。

    3.训练集的准确率是每个batch之后产生的,而验证集的准确率一般是一个epoch后产生的,验证时的模型是训练一个个batch之后的,有一个滞后性,可以说就是用训练得差不多的模型用来验证,当然准确率要高一点。

    4.训练集的数据做了一系列的预处理,如旋转、仿射、模糊、添加噪点等操作,过多的预处理导致训练集的分布产生了变化,所以使得训练集的准确率低于验证集

    展开全文
  • 为什么神经网络模型在测试集上的准确率高于训练集上的准确率? 种花家的奋斗兔 2020-03-21 17:28:37 5847 已收藏 11 分类专栏: Deep Learning 文章标签: dropout 深度学习 版权 Deep Learning 专栏收录该内容 26...

    为什么神经网络模型在测试集上的准确率高于训练集上的准确率?

    种花家的奋斗兔 2020-03-21 17:28:37  5847  已收藏 11
    分类专栏: Deep Learning 文章标签: dropout 深度学习
    版权

    Deep Learning
    专栏收录该内容
    26 篇文章0 订阅
    订阅专栏
    类似下图:

    或者下图:

    来自:吴恩达机器学习Regularization部分。

    如上图所示,有时候我们做训练的时候,会得到测试集的准确率或者验证集的准确率高于训练集的准确率,这是什么原因造成的呢?经过查阅资料,有以下几点原因,仅作参考,不对的地方,请大家指正。

    (1)数据集太小的话,如果数据集切分的不均匀,或者说训练集和测试集的分布不均匀,如果模型能够正确捕捉到数据内部的分布模式话,这可能造成训练集的内部方差大于验证集,会造成训练集的误差更大。这时你要重新切分数据集或者扩充数据集,使其分布一样

    (2)由Dropout造成,它能基本上确保您的测试准确性最好,优于您的训练准确性。Dropout迫使你的神经网络成为一个非常大的弱分类器集合,这就意味着,一个单独的分类器没有太高的分类准确性,只有当你把他们串在一起的时候他们才会变得更强大。

      因为在训练期间,Dropout将这些分类器的随机集合切掉,因此,训练准确率将受到影响

      在测试期间,Dropout将自动关闭,并允许使用神经网络中的所有弱分类器,因此,测试精度提高。

    References:

    https://stackoverflow.com/questions/43979449/higher-validation-accuracy-than-training-accurracy-using-tensorflow-and-keras

     https://www.quora.com/How-can-I-explain-the-fact-that-test-accuracy-is-much-higher-than-train-accuracy

    https://www.cnblogs.com/carlber/p/10892042.html
    ————————————————
    版权声明:本文为CSDN博主「种花家的奋斗兔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/IT_flying625/article/details/105013514

    测试集准确率高于训练集准确率最可能是数据分布问题,即训练集与测试集分布不一致。

    其实机器学习模型在数据划分和训练时一般都有一个假设:训练集和测试集分布是一致的。你的数据集比较小在划分的时候数据分布有更大的扰动,那么产生两个数据集分布不一致的概率就更大了,也就会出现测试集准确率高于训练集准确率。而过拟合是不可能的,过拟合的定义是训练好的模型在训练集准确率远高于测试集准确率。两者文字差不多,但有完全不同的原因。

    所以建议是:在训练前验证两组数据分布一致性问题(最好按类别采样,而不是直接对整个数据集采样)

    2018.09.27 补充:

    数据分布包含问题,测试集数据分布包含于训练集数据分布,这时测试数据集比训练数据集简单,测试集准确率可能会高于训练集准确率。

    数据分布交集大,且训练数据分布与测试数据分布的非交集部分中训练集数据分布更广,这时测试数据集比训练数据集简单,测试集准确率也可能会高于训练集准确率



    作者:Genome
    链接:https://www.zhihu.com/question/30112982/answer/238463274
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    你是说测试集loss更小,同时测试集accuracy更大吗?怀疑你的测试集是训练集的子集,k-fold交叉验证试一下,再把训练和测试的划分比例反过来看看

    展开全文
  • 当使用网络测试时,测试集准确率与在训练时测试的结果差距极大。 经过仔细查证,问题出在dropout上, 在训练过程,直接使用了no_grad()函数来关闭梯度计算, with torch.no_grad(): images = images.to(device) ...
  • 在使用caffe进行二分类训练时,训练集验证的准确率很高,但是自己在测试集使用python调用caffe的接口,测试得到准确率为0.5,表现现象为不管正负样本都被分为一类。 经过尝试不同处理图片方式,最终未能解决 ...
  • function: 对mnist数据进行模型训练,预测 “”" from sklearn.svm import SVC from sklearn.decomposition import PCA from sklearn.model_selection import train_test_split import pandas as pd import joblib...
  • 方案一: 设置bn层参数不可变 K.set_learning_phase(0) base_model = tf.keras.applications.ResNet50(weights='imagenet', include_top=False, input_shape=(img_resize, img_resize, 3), ) # 设置bn层参数可变 ...
  • 基于pytorch的MNIST数据集的四层CNN,测试准确率99.77%MNIST数据集环境配置文件存储结构代码引入库调用GPU初始化变量导入数据集并进行数据增强导入测试集加载测试集查看部分图片model结构权值初始化实例化网络,设置...
  • transforms.RandomHorizontalFlip(), # 在小型数据上,通过随机水平翻转来实现数据增强 transforms.RandomGrayscale(), # 将图像以一定的概率转换为灰度图像 transforms.ToTensor(), # 数据加载时,默认的图片...
  • 今天用一组震动数据试着用SVM做了... 原始数据在处理前的准确率才20%多,用smooth函数预处理后就更了,不知道是什么原因。希望大家帮忙指正(个人感觉c和g选的不合适) [本帖最后由 SFWS123 于 2011-10-8 22:06 编辑]
  • https://www.zhihu.com/question/452410923
  • 手写字母识别 附件里是数据,已经经过0-1预处理以下是我代码 做了 poly核函数(准确率5.7%) 和 Gaussian核函数(准确率2.6% 看了一下都识别成了18号也就是字母‘r’)的load TrainSampleImage.mat;DataSet = zeros(64*...
  • 【火炉炼AI】机器学习011-分类模型的评估:准确率,精确率,召回率,F1值(本文所使用的Python库和版本号: Python 3.5, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 )在前面的(【火炉炼AI】机器学习004-岭回归器...
  • TensorFlow2 大幅提高模型准确率的神奇操作

    千次阅读 多人点赞 2021-06-17 11:16:04
    TensorFlow2 提高模型准确度, 解决过拟合问题. 详解 Regulation, Momentum, learning-rate decay, Early Stopping, Dropout 5大工具如何帮助我们提高模型准确率.
  • 机器学习模型 - 线性... 使用Test Data 测试模型训练模型使用上面的代码创建的数据用于训练模型# Sk-Learn contains the linear regression modelfrom sklearn.linear_model import LinearRegression# Initialize...
  • 支持向量机SVM Iris数据 分类预测

    千次阅读 2021-05-09 21:19:46
    支持向量机对iris数据进行分类预测 1. 基础概念 SVM的主要思想是:建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。SVM也是结构风险最小化方法的近似实现。 2. 实验步骤与分析 序号 ...
  • 2019.9.12更新:现在应该是北大的CBNet,这是一个新的backbone,结合Cascade R-CNN,在coco数据上居然达到难以置信的53.3 mAP!是目前已知的精度最高的目标检测算法,作者已经开源了代码:...
  • 分类是机器学习中比较常见的任务,对于分类任务常见的评价指标有 准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 score、ROC曲线(Receiver Operating Characteristic Curve)等。
  • Tensorflow2.0训练损失值降低,但测试正确基本不变的情况问题描述解决方法修改参数检查模型loss计算方法数据标签权重初始值 问题描述 对于一个架构,在识别mnist手写数字精度较高的情况下,更换其他的数据,却...
  • sklearn——train_test_split 随机划分训练集和测试集 sklearn.model_selection.train_test_split随机划分训练集和测试集 官网文档:... trai...
  • 1.上一篇文章使用的是训练好的数据,但是结合自己的需求,会出现一些识别错误的问题,所以需要训练自己的数据。(需要的朋友可以查看我的上一篇博客) 2.测试完成之后,写成文档,做个记录,同时有需要的朋友...
  • 定义两个 with tf.variable_scope("my_model", reuse=tf.AUTO_REUSE): model_train = MyModel(is_training=True) with tf.variable_scope("my_model", reuse=True): model_dev = MyModel(is_training=False) ...
  • 这个情况在实际项目中其实挺常见的,...考虑下面这个例子:对于一个有4条数据的数据,它的真实label为[0, 1, 1, 1]。现在考虑两个不同的模型A,B。假设Model A预测的结果为: [0.5, 0.9, 0.9, 0.5], Model B预测的...
  • 准确率(Accuracy) = (TP + TN) / 总样本 。 定义是: 对于给定的测试数据,分类器正确分类的样本数与总样本数之比。 精确率(Precision) = TP / (TP + FP) 。它表示:预测为正的样本中有多少是真正的正样本,它
  • 第二,重要特征数据差距不大,不太重要的差距较大,这种情况可以屏蔽这些特征,或者利用类似迁移学习 prototype 那种思路约束特征输入不过于偏离训练。 第三,所有特征数值差距都不大,但是特征之间相关性统计差距...
  • # 更新学习率并查看当前学习率 scheduler.step() print('\t last_lr:', scheduler.get_last_lr()) 数据策略: 实验表明,针对cifar10数据集,随机水平翻转、随机遮挡、随机中心裁剪能有效提高验证集准确率,而旋转、...
  • Keras实现计算测试集Accuracy,loss,Precision,Recall与F1计算测试集的prediction自定义计算Metrics测试结果全部代码 由于Precision,Recall与F1是模型对整体数据的的评估标准,所以,首先需要计算model对于整个测试...
  • import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data#载入数据mnist = input_data.read_data_sets("MNIST_data",one_hot=True)#每个批次的大小和总共有多少个批次batch_size = ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,251
精华内容 47,300
关键字:

测试集准确率低