今天在测试模型时发现一个问题,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_generatorvalid_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.classesacc=accuracy_score(true_label,predict_label)
print(acc, end='\n\n')

乍一看代码其实没有太大问题,但是最后准确率很低:

核心原因是对测试集的数据顺序做了打乱,使得预测label与真实label无法对应:

预测label是对打乱的数据预测的:

但是真实label是未打乱的:

解决的办法是对代码进行修改:shuffle=False

修改后的模型测试准确率就正常了:


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

keras训练模型,训练集的准确率很高,但是测试集准确率很低的原因相关推荐

  1. pytorch实现图像分类,训练集准确率很高,测试集准确率总是很低

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

  2. SVM 训练--在训练集上acc为94% 在测试集上为70%

    用SVM 训练的时候: 出现的问题是: Error: specified nu is infeasible 带有下标的赋值维度不匹配. 百度到的答案:赋值维度不匹配...说明等号两边的大小不一致,导致 ...

  3. Carsim和simulink联合仿真轮胎力估计 基于滑模观测器SMO估计轮胎的纵向力和侧向力 模型估计的精度很高,测试的工况为双移线工况

    Carsim和simulink联合仿真轮胎力估计 基于滑模观测器SMO估计轮胎的纵向力和侧向力 模型估计的精度很高,测试的工况为双移线工况 基于SMO滑模观测器的轮胎力估计方法省去了轮胎模型的使用,避 ...

  4. 数据标准化常见问题:对整个数据集数据标准化后再划分训练集、测试集和先对训练级标准化再将规则用于测试集有什么区别(Python实现)

    在数据分析与挖掘.算法建模的都会用到数据标准化.数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间.在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其 ...

  5. 【已解决】使用keras对resnet, inception3进行fine-tune出现训练集准确率很高但验证集很低的问题(BN)

    最近用keras跑基于resnet50,inception3的一些迁移学习的实验,遇到一些问题.通过查看github和博客发现是由于BN层导致的,国外已经有人总结并提了一个PR(虽然并没有被merge ...

  6. 使用resnet, inception3进行fine-tune出现训练集准确率很高但验证集很低的问题

    向AI转型的程序员都关注了这个号???????????? 机器学习AI算法工程   公众号:datayx 最近用keras跑基于resnet50,inception3的一些迁移学习的实验,遇到一些问题 ...

  7. 训练集准确率很高,验证集准确率低问题

    训练集在训练过程中,loss稳步下降,准确率上升,最后能达到97% 验证集准确率没有升高,一直维持在50%左右(二分类问题,随机概率) 测试集准确率57% 在网上搜索可能打的原因: 1.learnin ...

  8. weka使用训练集分类测试集_科学网—使用独立测试集对分类模型进行评估 - 李向东的博文...

    这两天还是纠结于分类模型的准确率.因为对从网上随机摘录的文本进行分类时,结果总是不甚理想,不像使用cross-validation得到的结果那么好. 于是决定使用独立测试集(含1402个实例)进行评估 ...

  9. arm集群服务器_高密度ARM集群服务器的应用场景

    1 什么是高密度ARM集群服务器 ARM集群服务器,是在一个机箱内设计N个高性能ARM处理器,每个ARM处理器配置独立的内存及存储,所有的处理器通过高速网络(千兆或万兆网络)进行相互之间以及对外通信的 ...

  10. 从一到二:利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试...

    通过从零到一的教程,我们已经得到了通过mnist训练集生成的caffemodel,主要包含下面四个文件: 接下来就可以利用模型进行测试了.关于测试方法按照上篇教程还是选择bat文件,当然python. ...

最新文章

  1. 用Scrum敏捷开发工具Leangoo做Sprint迭代管理
  2. 青龙羊毛——某元宇宙(非原创)
  3. mysql和php的登录注册界面_php实现注册和登录界面的方法
  4. python 堆栈溢出_python - 使用CFFI释放内存时,“ MemoryError:堆栈溢出”是什么意思? - 堆栈内存溢出...
  5. 《阿里云SRE技术期刊》2020年10月【电子版】
  6. python学习笔记(七)函数
  7. 软考网络工程师笔记-综合知识1
  8. 第一门语言学python好_零基础学编程,哪一门语言比较适合入门?
  9. 爬虫基础12(框架Scrapy中间件)
  10. 模式识别与机器学习第六章有监督学习方法
  11. NOIP 2016 年普及组初赛试题整理
  12. Mac系统文件在Win解压乱码问题
  13. chart的简单使用
  14. 数学文化赏析期末笔记
  15. GPD MicroPC 安装 Win10+Ubuntu 双系统
  16. Bootstrap 3 如何设置图片居中对齐
  17. 已安装各个模块,程序仍报错:ModuleNotFoundError: No module named 'numpy'
  18. 中山マミ - 咲く未来
  19. Attention注意力机制–原理与应用
  20. 学波尔还是学王励勤?-----再谈正手弧圈的重心转移

热门文章

  1. HTML5七夕情人节表白代码 (动态3D相册) HTML+CSS+JS
  2. 【基于大数据分析的物流可视化管理系统(python+Django)-哔哩哔哩】 https://b23.tv/gUc8lk6
  3. Mac下Valet配置
  4. 我是培训机构的程序员,不敢告诉任何人
  5. 3.【CSS复合选择器、元素显示模式display、背景background所有】 简洁版小米侧边栏案例
  6. arctime 等软件 界面没有按比例放大
  7. 四. REPL和控制台
  8. kms激活win10 cmd命令版本附win10镜像链接
  9. 使用Python调用baidu翻译的接口,实现转换android stuido 中的values/strings.xml 解放生产力,自动翻译生成文件
  10. oracle 11g asmcmd命令