为什么有的深度学习训练,有训练集、验证集、测试集3个划分,有的只是划分训练集和测试集?

在机器学习和深度学习中,数据集的划分方式取决于任务需求、数据量以及模型开发流程的严谨性。

在这里插入图片描述


1. 三者划分:训练集、验证集、测试集

目的
  • 训练集(Training Set):用于模型参数的直接训练。
  • 验证集(Validation Set):用于调参和模型选择(如调整超参数、选择网络结构、防止过拟合)。
  • 测试集(Test Set):用于最终模型性能的无偏评估,模拟真实场景下的泛化能力。
为什么需要验证集?
  • 避免过拟合测试集:如果仅用测试集评估模型并反复调整参数,模型可能间接“记忆”测试集的分布,导致评估结果虚高。
  • 模型选择:验证集帮助选择最优超参数(如学习率、正则化系数)或模型架构(如ResNet vs. VGG)。
适用场景
  • 数据量充足(如ImageNet、COCO等大规模数据集)。
  • 需要严谨的模型开发流程(如学术研究、工业级应用)。
  • 超参数调优复杂(如网格搜索、随机搜索)。
典型流程
  1. 训练模型(训练集)。
  2. 调参和模型选择(验证集)。
  3. 最终评估(测试集,仅一次)。

2. 两者划分:训练集和测试集

省略验证集的原因
  • 数据量极小:若数据量过小(如仅几百样本),划分验证集可能导致训练数据不足,影响模型性能。
  • 简化流程:在快速实验或简单任务中,可能直接使用测试集评估(但存在风险)。
  • 交叉验证替代:若数据不足,常用K折交叉验证替代固定验证集。
潜在风险
  • 数据泄露(Data Leakage):若反复用测试集调整模型,可能高估模型真实性能。
  • 缺乏模型选择依据:无法有效比较不同超参数或模型架构的优劣。
适用场景
  • 数据量极小(如医学影像数据稀缺)。
  • 快速原型验证(如教学示例、简单实验)。
  • 结合交叉验证:如将训练集拆分为K个子集,轮流作为验证集(无需单独划分)。

关键区别与选择建议

划分方式适用场景优点缺点
训练/验证/测试集数据充足、严谨的模型开发无偏评估、调参灵活需要更多数据
训练/测试集数据稀缺、快速实验简单直接风险高、无法调参

实际案例

  1. 三者划分

    • 在ImageNet竞赛中,训练集用于训练,验证集用于调参,测试集用于最终排名。
    • Kaggle比赛中,选手在本地用验证集调参,提交结果后由平台用隐藏测试集评分。
  2. 两者划分+交叉验证

    • 在小数据集(如MNIST)上,可能将数据划分为训练集和测试集,同时通过交叉验证调参。

  • 推荐做法
    如果数据量允许,始终使用训练集、验证集、测试集三者划分,确保模型开发的严谨性。
  • 数据不足时
    优先使用交叉验证(如K折交叉验证),而不是简单地省略验证集。

最终,测试集应被视为“不可见数据”,仅在模型完全确定后使用一次,以反映真实泛化能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/75498.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux驱动开发 块设备

目录 序言 1.块设备结构 分区(gendisk) 请求(request) 请求队列 1. 多队列架构 2. 默认限制与扩展 bio 2.块设备的使用 头文件与宏定义 blk-mq 相关结构和操作 块设备操作函数 模块初始化函数 模块退出函数 3.总结 序言 块设备(如硬盘、虚拟盘&#x…

ResNet改进(14):添加 EMA注意力机制提升跨空间学习效率

本专栏代码均经过测试,可以直接替换项目中的模型,一键运行! 采用最新的即插即用模块,有效涨点!! 1.EMA注意力机制 EMA(Efficient Multi-scale Attention)注意力机制是一种创新的注意力设计,能够有效提升模型在跨空间学习任务中的表现。以下是对该机制的详细解析: EM…

计算机硬件——CPU 主要参数

什么是 CPU ? CPU 的英文全称是 Central Processing Unit,即中央处理器。CPU 的内部结构可分为控制单元、逻辑单元和存储单元三大部分。CPU 的性能大致上反映出了它所配置的微机的性能,因此 CPU 的性能指标十分重要。 CPU 的主要参数 CPU …

针对 Python 3.7.0,以下是 Selenium 版本的兼容性建议和安装步骤

1. Selenium 版本推荐 最高兼容版本: Selenium 4.11.2(官方明确支持 Python 3.7,但需注意部分新功能可能受限)。 稳定兼容版本: Selenium 3.141.0(经典版本,完全兼容 Python 3.7,适…

stm32 主频216MHz,写个ms延时函数,us延时函数

在 STM32 微控制器中,实现精确的 ms(毫秒)和 us(微秒)延时函数通常依赖于系统时钟(SysTick)或定时器。以下是基于主频为 216 MHz 的实现方法: 1. 使用 SysTick 实现延时函数 SysTic…

modus开源程序是一个由 WebAssembly 提供支持的构建代理流的框架

一、软件介绍 文末提供程序和源码下载 Modus 是一个开源的无服务器框架,用于在 Go 和 AssemblyScript 中构建代理系统和 AI 应用程序。 它简化了模型、上下文和数据的集成。我们将继续添加其他功能,以更好地支持工具的构建和调用。 You write a functi…

从零构建大语言模型全栈开发指南:第四部分:工程实践与部署-4.3.2知识库增强与外部API集成(代码示例:HTTP节点与检索增强生成)

👉 点击关注不迷路 👉 点击关注不迷路 👉 点击关注不迷路 文章大纲 知识库增强与外部API集成:HTTP节点与检索增强生成实战4.3.2 知识库增强与外部API集成(代码示例:HTTP节点与检索增强生成)1. 核心挑战与优化目标1.1 技术瓶颈分析1.2 设计目标2. 关键技术方案2.1 知识…

蓝桥杯Java B组省赛真题高频考点近6年统计分类

基础考点 考点高频难度模拟9基础枚举5基础思维4基础动态规划3基础规律2基础单位换算2基础搜索 1基础双指针1基础数学1基础哈希表1基础暴力1基础Dijkstra1基础 二分1基础 中等考点 考点高频难度动态规划6中等数学5中等枚举4中等模拟3中等思维3中等贪心3中等前缀和3中等二分2中…

Rancher2.8.5架构

大多数 Rancher 2.x 软件均运行在 Rancher Server 上。Rancher Server 包括用于管理整个 Rancher 部署的所有软件组件。 下图展示了 Rancher 2.x 的上层架构。下图中,Rancher Server 管理两个下游 Kubernetes 集群,其中一个由 RKE 创建,另一…

Java Lambda 表达式提升效率

lambda 表达式的应用场景 Stream 的应用场景 Lambda/Stream 的进一步封装 自定义函数式接口(用 jdk 自带的函数式接口也可以) https://docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html import java.io.Serializable;/*** 可序…

keep-alive缓存

#keep-alive缓存动态路由的使用指南# 代码如下图 &#xff1a; <router-view v-slot"{ Component }"> <keep-alive :include"[Hot, Notifications, User, Setting, Test]"> <component :is"Component" …

使用 PyTorch 的 `GradualWarmupScheduler` 实现学习率预热

使用 PyTorch 的 GradualWarmupScheduler 实现学习率预热 在深度学习中,学习率(Learning Rate, LR)是影响模型训练效果的关键超参数之一。为了提升模型的收敛速度和稳定性,学习率调度策略变得尤为重要。其中,学习率预热(Learning Rate Warmup) 是一种常用的策略,它通过…

【DLI】Generative AI with Diffusion Models通关秘籍

Generative AI with Diffusion Models&#xff0c;加载时间在20分钟左右&#xff0c;耐心等待。 6.2TODO 这里是在设置扩散模型的参数&#xff0c;代码里的FIXME部分需要根据上下文进行替换。以下是各个FIXME的替换说明&#xff1a; 1.a_bar 是 a 的累积乘积&#xff0c;在 …

如何在本地部署魔搭上千问Qwen2.5-VL-32B-Instruct-AWQ模型在显卡1上面运行推理,并开启api服务

环境: 云服务器Ubuntu NVIDIA H20 96GB Qwen2.5-VL-32B Qwen2.5-VL-72B 问题描述: 如何在本地部署魔搭上千问Qwen2.5-VL-32B-Instruct-AWQ模型在显卡1上面运行推理,并开启api服务 解决方案: 1.环境准备 硬件要求 显卡1(显存需≥48GB,推荐≥64GB)CUDA 11.7或更高…

基于方法分类的无监督图像去雾论文

在之前的博客中&#xff0c;我从研究动机的角度对无监督图像去雾论文进行了分类&#xff0c;而现在我打算根据论文中提出的方法进行新的分类。 1. 基于对比学习的方法 2022年 论文《UCL-Dehaze: Towards Real-world Image Dehazing via Unsupervised Contrastive Learning》&a…

4月3号.

JDK7前时间相关类: 时间的相关知识: Data时间类: //1.创建对象表示一个时间 Date d1 new Date(); //System.out.println(d1);//2.创建对象表示一个指定的时间 Date d2 new Date(0L); System.out.println(d2);//3.setTime修改时间 //1000毫秒1秒 d2.setTime(1000L); System.o…

数据结构与算法:子数组最大累加和问题及扩展

前言 子数组最大累加和问题看似简单,但能延伸出的题目非常多,千题千面,而且会和其他算法结合出现。 一、最大子数组和 class Solution { public:int maxSubArray(vector<int>& nums) {int n=nums.size();vector<int>dp(n);//i位置往左能延伸出的最大累加…

MIT6.828 Lab3-2 Print a page table (easy)

实验内容 实现一个函数来打印页表的内容&#xff0c;帮助我们更好地理解 xv6 的三级页表结构。 修改内容 kernel/defs.h中添加函数声明&#xff0c;方便其它函数调用 void vmprint(pagetable_t);// lab3-2 Print a page tablekernel/vm.c中添加函数具体定义 采用…

2025高频面试设计模型总结篇

文章目录 设计模型概念单例模式工厂模式策略模式责任链模式 设计模型概念 设计模式是前人总结的软件设计经验和解决问题的最佳方案&#xff0c;它们为我们提供了一套可复用、易维护、可扩展的设计思路。 &#xff08;1&#xff09;定义&#xff1a; 设计模式是一套经过验证的…

Java基础:面向对象进阶(二)

01-static static修饰成员方法 static注意事项&#xff08;3种&#xff09; static应用知识&#xff1a;代码块 static应用知识&#xff1a;单列模式 02-面向对象三大特征之二&#xff1a;继承 什么是继承&#xff1f; 使用继承有啥好处? 权限修饰符 单继承、Object类 方法重…