首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >机器学习模型在测试数据上的表现比验证数据差

机器学习模型在测试数据上的表现比验证数据差
EN

Stack Overflow用户
提问于 2020-12-29 12:36:38
回答 1查看 121关注 0票数 0

我是机器学习的新手。

首先,我想训练一个模型来对猫和狗的图片进行分类。

我的问题是,当我训练我的模型时,它给我提供了(大约) 80-85%的训练数据和验证数据的准确性。验证数据和训练数据的损失都很低,约为0.4 - 0.5。因为这些数字非常相似,我想我不会有过度拟合的问题,对吧?

但当我用数据集中的图片(它以前从未见过)测试我的模型时,准确率被证明是70%-73%左右。所以它要低得多。我找不到任何关于为什么会这样的信息。而且,正如我所说的,我怀疑过度匹配不是问题,但由于我是一个初学者,我不太确定。

我的模型看起来像这样(我在python中使用tensorflow ):

代码语言:javascript
运行
AI代码解释
复制
model = Sequential([
    Conv2D(filters=64, kernel_size=(3, 3), activation='relu', padding = 'same', input_shape=(224,224,3), kernel_initializer="he_uniform"),
    MaxPool2D(pool_size=(2, 2)),
    Conv2D(filters=64, kernel_size=(3, 3), activation='relu', padding = 'same', kernel_initializer="he_uniform"),
    MaxPool2D(pool_size=(2, 2)),
    Conv2D(filters=128, kernel_size=(3, 3), activation='relu', padding = 'same', kernel_initializer="he_uniform", kernel_regularizer=l2(.001)),
    MaxPool2D(pool_size=(2, 2)),
    Conv2D(filters=128, kernel_size=(3, 3), activation='relu', padding = 'same', kernel_initializer="he_uniform", kernel_regularizer=l2(.001)),
    MaxPool2D(pool_size=(2, 2)),
    Flatten(),
    Dense(units = 128, activation='relu'),
    Dropout(.5),
    Dense(units=2, activation='softmax')
])

Trainable params: 3,471,810
Non-trainable params: 0

优化器,损失:

代码语言:javascript
运行
AI代码解释
复制
model.compile(optimizer=Adam(learning_rate=0.001), loss='categorical_crossentropy', metrics=['accuracy'])

这是我使用的数据集:https://www.kaggle.com/tongpython/cat-and-dog I使用3000张图像进行训练(1500张狗和1500张猫),1000张用于验证,1000张用于测试。没有重复项(因此验证集中没有图像,这些图像也在训练集中,依此类推)。

我像这样对图像进行预处理(我也使用数据增强):

代码语言:javascript
运行
AI代码解释
复制
train_batches = ImageDataGenerator(preprocessing_function=tf.keras.applications.vgg16.preprocess_input, rescale=1/255, horizontal_flip=True, vertical_flip=True, width_shift_range=.2, height_shift_range=.2) \
    .flow_from_directory(directory=training_path, target_size=(224,224), classes=['cat', 'dog'], batch_size=64)

valid_batches = ImageDataGenerator(preprocessing_function=tf.keras.applications.vgg16.preprocess_input, rescale=1/255, horizontal_flip=True, vertical_flip=True, width_shift_range=.2, height_shift_range=.2) \
    .flow_from_directory(directory=validation_path, target_size=(224,224), classes=['cat', 'dog'], batch_size=64)

test_batches = ImageDataGenerator(preprocessing_function=tf.keras.applications.vgg16.preprocess_input).flow_from_directory(directory=test_path, target_size=(224,224), classes=['cat', 'dog'], batch_size=64, shuffle=False)

编辑:解决了问题。我的错误是,我没有以完全相同的方式对训练、验证和测试数据进行预处理,因为我误解了一个参数。感谢所有帮助我的人。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-29 14:16:35

我相信你的问题是因为你的验证数据和训练数据

代码语言:javascript
运行
AI代码解释
复制
train_batches = ImageDataGenerator(preprocessing_function=tf.keras.applications.vgg16.preprocess_input, rescale=1/255, .....

vgg16.preprocess_input函数在+1和-1之间重新缩放像素值,因此不需要包含rescale=1/255。在测试生成器中,您不需要重新缩放像素值。因此,在训练生成器和验证生成器中删除rescale=1/255

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65492248

复制
相关文章
在LinkedIn上搭建机器学习模型
大规模的构建机器学习是一条充满挑战的道路,并且没有很多有详细记录的case可以作为参考。Invector Labs的团队最近发布了一个幻灯片,它总结了我们学习大规模构建机器学习解决方案的一些经验教训,同时我们也一直在努力研究该领域的其他公司如何解决这些问题。
liuxuewen
2018/10/11
7530
在LinkedIn上搭建机器学习模型
如何「科学的比较」机器学习模型表现?
最近在赶paper,码字的时间不多,也刚好借着这个机会践行“写少、少写,写好”。今天谈谈如何对比多个机器学习算法的性能,阅读本文需要基本的统计检验知识,比如明白假设检验中 P<0.05通常说明了统计学显著性差异。 0. 背景 对比多个机器学习的算法性能是研究中很重要的一步,举几个常见的场景: 假设你开发了一个新的算法,那么希望在多个数据集上证明你的新算法是 state of the art(最牛逼的)。 假设你找到了一个新的数据集,你想研究到底什么算法在这个数据集上表现最优。 结合上面两个场景,你想知道
小莹莹
2018/04/24
2.5K0
如何「科学的比较」机器学习模型表现?
机器学习的数据验证
尽管验证过程无法直接发现问题所在,但有时该过程可以向我们表明模型的稳定性存在问题。
计算机与AI
2020/11/19
6180
机器学习的数据验证
机器学习之Validation(验证,模型选择)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_35512245/article/details/54924160
大黄大黄大黄
2018/09/14
7710
机器学习之Validation(验证,模型选择)
独家|一文解读合成数据在机器学习技术下的表现
本文将通过介绍两个分布模型,并运用它们到合成数据过程中,来分析合成数据在不同机器学习技术下的表现。
数据派THU
2018/09/17
5670
独家|一文解读合成数据在机器学习技术下的表现
二维机器学习测试数据生成
最近在看机器学习,讲的是线性回归和逻辑回归的内容 当然就难免写点代码来进行实验,总喜欢自己做一些数据而不只是写一个原函数再加上噪声 毕竟自己点点点出来然后得到学习的直线比较有feel,所有就需要这样一个东西: 一个坐标系上点点点出一些点,然后自动生成点的数据放在程序里来跑 估计是东西太小,都没看人做个,纠结一番还是自己动手做了一个 http://justdark.github.io/my_html/get_liner_samples.html 我学javascript和html也比较浅,反正各种参考最后是搞
机器学习AI算法工程
2018/03/13
7600
二维机器学习测试数据生成
用交叉验证改善模型的预测表现-着重k重交叉验证
机器学习技术在应用之前使用“训练+检验”的模式(通常被称作”交叉验证“)。 预测模型为何无法保持稳定? 让我们通过以下几幅图来理解这个问题: 此处我们试图找到尺寸(size)和价格(price)的关系
机器学习AI算法工程
2018/03/14
1.6K0
用交叉验证改善模型的预测表现-着重k重交叉验证
【Code】OGB:图机器学习的基准测试数据集
Open Graph Benchmark(以下简称 OGB)是斯坦福大学的同学开源的 Python 库,其包含了图机器学习(以下简称图 ML)的基准数据集、数据加载器和评估器,目的在于促进可扩展的、健壮的、可复现的图 ML 的研究。
阿泽 Crz
2020/07/21
1.5K0
【Code】OGB:图机器学习的基准测试数据集
测试数据——猜想大验证(3)
有数据,不妨测试一下,非常有趣: 1.各个信用等级的逾期率 其他的都比较符合预期,但A的偏高,我也很纳闷,把数据调出来,从高到低排是这样的: 借的量巨大,一旦逾期,在整个逾期率的计算中必然拖累整体。加
用户1075292
2018/01/23
1.1K0
测试数据——猜想大验证(3)
机器学习项目流程及模型评估验证
4.9日到现在一直在做Udacity的P1项目——波士顿房价预测。这个项目让我收获最大的就是理清了机器学习解决问题的整体流程,搭起一个框架,学会了寻找模型的最优参数以及模型的评估和验证方法。 nump
刘开心_1266679
2018/04/17
2.1K0
机器学习项目流程及模型评估验证
机器学习项目流程及模型评估验证
我之前一直在做Udacity的P1项目——波士顿房价预测。这个项目让我收获最大的就是理清了机器学习解决问题的整体流程,搭起一个框架,学会了寻找模型的最优参数以及模型的评估和验证方法。 机器学习项目流
用户1332428
2018/03/08
1K0
机器学习项目流程及模型评估验证
Facebook无监督机器学习翻译突破,表现优于监督模型
当从一种语言到另一种语言的翻译示例没有很多时(例如从英语到乌尔都语),Facebook使用无监督的机器学习来翻译其平台上的内容。
AiTechYun
2018/09/26
5140
Facebook无监督机器学习翻译突破,表现优于监督模型
深度学习模型在FPGA上的部署
我是来自山区、朴实、不偷电瓶的AI算法工程师阿chai,给大家分享人工智能、自动驾驶、机器人、3D感知相关的知识
计算机视觉
2021/04/26
6.6K1
深度学习模型在FPGA上的部署
为什么XGBoost在机器学习竞赛中表现如此卓越?
机器之心原创 作者:Yi Jin、Joni Chuang 参与:Panda 挪威科技大学 Didrik Nielsen 的硕士论文《使用 XGBoost 的树提升:为什么 XGBoost 能赢得「每一
机器之心
2018/05/10
8670
评测 | CNTK在Keras上表现如何?能实现比TensorFlow更好的深度学习吗?
选自MiniMaxir 作者:Max Woolf 机器之心编译 参与:Jane W、吴攀 Keras 是由 François Chollet 维护的深度学习高级开源框架,它的底层基于构建生产级质量的深度学习模型所需的大量设置和矩阵代数。Keras API 的底层基于像 Theano 或谷歌的 TensorFlow 的较低级的深度学习框架。Keras 可以通过设置 flag 自由切换后端(backend)引擎 Theano/TensorFlow;而不需要更改前端代码。 虽然谷歌的 TensorFlow 已广受
机器之心
2018/05/08
1.4K0
评测 | CNTK在Keras上表现如何?能实现比TensorFlow更好的深度学习吗?
脑血管疾病在MRI影像上的表现
前几天我司一名优秀员工突发脑出血,病情非常危机。虽然我从事医学影像相关工作,但是对脑血管疾病的影像表现知之甚少,因此在业余时间我查阅了一些资料并进行总结。
医学处理分析专家
2020/06/29
5870
脑血管疾病在MRI影像上的表现
【行业】如何解决机器学习中出现的模型成绩不匹配问题
评估机器学习模型的程序是,首先基于机器学习训练数据对其进行调试和评估,然后在测试数据库中验证模型是否具有良好的技能。通常,在使用训练数据集评估模型后,你会对得到的成绩非常满意,但用测试数据集评估模型时成绩不佳。在这篇文章中,你会了解到当这个常见问题出现时,你需要考虑的技术和问题。
AiTechYun
2018/07/27
1.1K0
【行业】如何解决机器学习中出现的模型成绩不匹配问题
机器学习入门 4-3 训练数据集,测试数据
本系列是《玩转机器学习教程》一个整理的视频笔记。本小节主要介绍如何判断机器学习的性能,train_test_split方法。
触摸壹缕阳光
2019/11/13
1.2K0
使用Tensorflow Lite在Android上构建自定义机器学习模型
机器学习有许多用处,并提供了一个充满未知性的世界。然而,有些人可能会退缩,认为它太难了,其实并不是这样的。使用TensorFlow Lite并不一定都是机器学习专家。下面给大家分享我是如何开始在Android上构建自己的定制机器学习模型的。
AiTechYun
2019/09/16
2.6K0
使用Tensorflow Lite在Android上构建自定义机器学习模型
机器学习在房屋价格预测上的应用
Python 在机器学习方面有天然的优势,那么我们今天也来涉足一下机器学习方面的技术,以下是在学习过程中的一些笔记,里面有大量的注释说明,用于理解为什么这样操作。
Wu_Candy
2022/07/04
6780

相似问题

迁移学习分割模型在测试数据上的表现明显差

12

机器学习:基于测试数据的训练模型

35

如何通过Python机器学习模型运行测试数据?

25

模型在测试数据上表现不佳

15

Scikit学习:对培训数据进行交叉验证,然后在测试数据上拟合模型。

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档