神经网络中Batch和Epoch

2023-05-16

随机梯度下降法是一种具有大量超参数的学习算法。通常会使初学者感到困惑的两个超参数: Batch大小和Epoch数量,它们都是整数值,看起来做的事情是一样的。在这篇文章中,您将发现随机梯度下降中Batch和Epoch之间的差异。

阅读这篇文章后,你会知道:

  • 随机梯度下降是一种迭代学习算法,它使用训练数据集来更新模型。
  • 批量大小是梯度下降的超参数,在模型的内部参数更新之前控制训练样本的数量。
  • Epoch数是梯度下降的超参数,其控制通过训练数据集的完整传递的数量。
    概观
    这篇文章分为五个部分:
  1. 随机梯度下降

  2. 什么是Sample?

  3. 什么是Batch?

  4. 什么是Epoch?

  5. Batch和Epoch有什么区别?

随机梯度下降
随机梯度下降(Stochastic Gradient Descent,简称SGD)是一种用于训练机器学习算法的优化算法,最值得注意的是深度学习中使用的人工神经网络。该算法的工作是找到一组内部模型参数,这些参数在某些性能测量中表现良好,例如对数损失或均方误差。

优化是一种搜索过程,您可以将此搜索视为学习。优化算法称为“ 梯度下降 ”,其中“ 梯度 ”是指误差梯度或误差斜率的计算,“下降”是指沿着该斜率向下移动到某个最小误差水平。该算法是迭代的。这意味着搜索过程发生在多个不连续的步骤上,每个步骤都希望略微改进模型参数。

每一步都需要使用模型和当前的一组内部参数对一些样本进行预测,将预测与实际预期结果进行比较,计算误差,并使用误差更新内部模型参数。该更新过程对于不同的算法是不同的,但是在人工神经网络的情况下,使用反向传播更新算法。

在我们深入研究批次和时代之前,让我们来看看样本的含义。

什么是Sample?

Sample是单行数据。它包含输入到算法中的输入和用于与预测进行比较并计算错误的输出。

训练数据集由许多行数据组成,例如许多Sample。Sample也可以称为实例,观察,输入向量或特征向量。

现在我们知道Sample是什么,让我们定义一个batch。

什么是Batch?

Batch大小是一个超参数,用于定义在更新内部模型参数之前要处理的样本数。将批处理视为循环迭代一个或多个样本并进行预测。在批处理结束时,将预测与预期输出变量进行比较,并计算误差。从该错误中,更新算法用于改进模型,例如沿误差梯度向下移动。训练数据集可以分为一个或多个Batch。当所有训练样本用于创建一个Batch时,学习算法称为批量梯度下降。当批量是一个样本的大小时,学习算法称为随机梯度下降。当批量大小超过一个样本且小于训练数据集的大小时,学习算法称为小批量梯度下降。

  • 批量梯度下降。批量大小=训练集的大小
  • 随机梯度下降。批量大小= 1
  • 小批量梯度下降。1 <批量大小<训练集的大小
    在小批量梯度下降的情况下,流行的批量大小包括32,64和128个样本。您可能会在文献和教程中看到这些值在模型中使用。

如果数据集没有按批量大小均匀分配怎么办?

在训练模型时经常会发生这种情况。它只是意味着最终批次的样品数量少于其他批次。或者,您可以从数据集中删除一些样本或更改批处理大小,以便数据集中的样本数按批次大小均匀划分。有关这些梯度下降变化之间差异的更多信息,请参阅帖子:

轻微批量梯度下降的简要介绍以及如何配置批量大小

批处理涉及使用样本更新模型; 接下来,让我们来看一下epoch。

什么是Epoch?
Epoch数是一个超参数,它定义了学习算法在整个训练数据集中的工作次数。一个Epoch意味着训练数据集中的每个样本都有机会更新内部模型参数。Epoch由一个或多个Batch组成。例如,如上所述,具有一批的Epoch称为批量梯度下降学习算法。您可以将for循环放在每个需要遍历训练数据集的epoch上,在这个for循环中是另一个嵌套的for循环,它遍历每批样本,其中一个批次具有指定的“批量大小”样本数。

epochs 数量传统上很大,通常是数百或数千,允许学习算法运行直到模型的误差被充分地最小化了。您可能会看到文献和教程设置为10,100,500,1000和更大的时期数量的示例。通常创建线图,其显示沿x轴的时间以及模型在y轴上的误差或技能。这些图有时被称为学习曲线。这些图可以帮助诊断模型是否已经过度学习,学习不足或者是否适合训练数据集。

有关通过LSTM网络学习曲线进行诊断的更多信息,请参阅帖子:

如何诊断LSTM模型的过度拟合和欠拟合

如果仍然不清楚,让我们来看看Batch和Epoch之间的差异。

Batch和Epoch有什么区别?

Batch大小是在更新模型之前处理的多个样本。Epoch数是通过训练数据集的完整传递次数。批处理的大小必须大于或等于1且小于或等于训练数据集中的样本数。可以将epoch设置为1和无穷大之间的整数值。您可以根据需要运行算法,甚至可以使用除固定数量的epoch之外的其他条件来停止算法,例如模型错误随时间的变化(或缺少变化)。它们都是整数值,并且它们都是学习算法的超参数,例如学习过程的参数,而不是学习过程找到的内部模型参数。您必须为学习算法指定batch大小和epoch数。如何配置这些参数没有固定的规则。您必须尝试不同的值,看看哪种方法最适合您的问题。

工作实例

最后,让我们用一个小例子来说明这一点。

假设您有一个包含200个样本(数据行)的数据集,并且您选择的Batch大小为5和1,000个Epoch。

这意味着数据集将分为40个Batch,每个Batch有5个样本。每批五个样品后,模型权重将更新。

这也意味着一个epoch将涉及40个Batch或40个模型更新。

有1000个Epoch,模型将暴露或传递整个数据集1,000次。在整个培训过程中,总共有40,000Batch。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

神经网络中Batch和Epoch 的相关文章

  • 删除Github仓库中的指定的文件或文件夹

    在Github 仓库中是无法通过鼠标操作直接删除文件和文件夹的 xff0c 那只能通过 git 命令来执行删除操作 xff0c 当我们想删除 First 分支中的 folder 文件夹及其内部的文件 和 file c 文件 时 一 获取当前
  • 如何判断栈、堆的增长方向?

    如何判断栈的增长方向 xff1f 对于一个用惯了i386系列机器的人来说 xff0c 这似乎是一个无聊的问题 xff0c 因为栈就是从高地址向低地址增长 不过 xff0c 显然这不是这个问题的目的 xff0c 既然把这个问题拿出来 xff0
  • 向文件最后一行添加字符串

    当我们想向某个文件中添加指定的字符串时 xff0c 可以使用相关的指令 一 echo指令 使用echo追加重定向可以直接向文件中添加一行字符串 echo 34 add string 34 gt gt test txt 可以看到echo会在文
  • KernelShark分析内核任务执行过程

    一 KernelShark简介 KernelShark是一个非常实用的工具 xff0c 其可以搭配 trace cmd 使用 xff0c 将内核的任务执行过程以直观的形式展现出来 下面的文档中详细的介绍了KernelShark的使用方法和功
  • 关于Linux中断的相关查询

    1 linux 内核 proc interrupts 在 proc interrupts 文件中记录了 Linux 内核的中断信息 xff0c 我们可以通过命令查看 sudo cat proc interrupts 文件中以表格的形式列举出
  • Latex中编译IEEE sensors journal 模板中遇到的种种问题

    总的来说 xff0c 这个期刊的模板跟之前那个TIE的模板不太一样 xff0c 因为目前只接触了这两个 xff08 本人水平比较菜 xff09 1 编译左上角的Logo xff0c 一直在报错 xff0c 并没有显示成功 xff0c 一直显
  • python笔记:argparse模块

    用途 python用于解析命令行参数和选项的标准模块 xff0c 内置于python xff0c 不需要安装 使用步骤 引入模块 span class token keyword import span argparse 创建一个解析器 使
  • Hadoop伪分布部署

    Hadoop伪分布部署 一 任务描述二 任务目标三 任务环境四 任务分析五 任务实施步骤1 解压Hadoop压缩包步骤2 配置Hadoop文件 六 任务测试 原创申明 xff1a 未经许可 xff0c 禁止以任何形式转载 xff0c 若要引
  • ubuntu下共存多个python版本,切换python版本

    ubuntu下切换默认python版本 知乎 zhihu com 1 以 root 身份登录 xff0c 首先罗列出所有可用的python 替代版本信息 update alternatives list python 这一步可能会报错upd
  • Deformable DETR进行目标检测,解决size mismatch问题

    问题描述 xff1a strict 61 False 但还是size mismatch for copying a param with shape from checkpoint the shape in cur 接着 6条消息 Defo
  • CubeMX 配置PWM使用DMA,生成Dshot600的协议

    看到电调支持Dshot125 600的协议 xff0c 想自己做一个支持Dshot协议的驱动 xff0c 所以研究了一下 xff0c 如何利用精确的PWM产生Dshot协议 先看结果 xff01 图中为油门值为1500的时候的输出的Dsho
  • Linux驱动开发——串口设备驱动

    Linux驱动开发 串口设备驱动 一 串口简介 串口全称叫做串行接口 xff0c 通常也叫做 COM 接口 xff0c 串行接口指的是数据一个一个的顺序传输 xff0c 通信线路简单 使用两条线即可实现双向通信 xff0c 一条用于发送 x
  • 1.开始在leetCode中刷题的一些感受

    最近项目上没有什么事情 xff0c 鉴于自己的基础比较差 xff0c 正好最近也开始学习了Python xff0c 就想在leetCode中使用Python语言刷刷题 xff0c 加强一下自己的算法的能力 下面就来谈谈最近刷题的一些感受 x
  • mathtype公式经常闪现,然后公式删除变成了字母c

    解决方案 百度 关闭金山词霸中的 划译 功能就OK啦 xff0c 具体情况具体分析 xff0c 大家可以试一下这种方法 个人经历 上一次是 Ctrl 43 C Ctrl 43 V 无法正常使用 xff0c 最后关闭有道的划译功能就完美解决了
  • RT-Thread学习入门之RT-Thread Studio的使用

    本科生因做比赛需要 xff0c 使用RT Thread Studio进行stm32f407ZGT6的程序开发 xff0c 文章仅以用来记录过程 系列文章目录 第一篇 RT Thread学习入门之RT Thread Studio的使用 第二篇
  • 【CSDN三周年纪念日】我的创作纪念日

    2019年09 月 17 日 xff0c 一个看似平凡的一天 在这么平凡的一天里 xff0c 我发表了第一篇博客 在这平凡的一天 xff0c 赋予了它不平凡的意义 也许是立志成为一名专业 IT 作者 也许是记录一段刚实践的经验 但在那一刻
  • 自定义串口通讯协议

    通信协议 1 读操作 主机发送设备地址0x0A 读命令字 数据长度 xff08 数据长度不包括CRC xff09 xff0c 当主机接收完数据和CRC后 xff0c 需要进行数据校验 xff0c 并和从机返回的CRC进行对比 数据校验方式为
  • MySql批量插入指定位数的随机数

    需求 xff1a 向mysql中批量插入指定位数的随机数 sql脚本 xff1a 第一步 xff1a 创建一个函数用于生成指定位数的随机数 span class token comment 创建一个函数用于生成随机字符串 span span
  • 路由器不开机——维修更换MT7621AT CPU

    故障类别 xff1a 不开机 故障现象 xff1a 210mA横流不开机 故障描述 xff1a 发现CPU异常发烫不开机 xff0c 其它地方未有发热现象 附件 xff1a 原因分析 xff1a 开机测量各路电压 xff0c 发现均有电压
  • 路由器5G WiFi不工作维修分析

    故障类别 xff1a WiFi异常 故障现象 xff1a WiFi指示灯不亮 故障描述 xff1a 开机正常 xff0c 但是5G WiFi不工作指示灯不亮 xff0c 2 4G工作正常 xff0c 其他工作正常 附件 xff1a 原因分析

随机推荐

  • Ubuntu18.04安装ROS Melodic(详细,亲测安装完成,有清晰的截图步骤)

    这也是我在Ubuntu里面安装ROS的第N次 xff0c 以前每次安装过程都忘记总结了 xff0c 导致每次安装ROS都浪费了很多的时间用来解决各种问题 为了避免自己以后出现问题需要再安装 xff0c 所以写这篇博客总结一下 xff0c 这
  • 04Git从入门到入土之码云的使用及代码迁移

    1 国内代码托管中心 码云 众所周知 xff0c GitHub 服务器在国外 xff0c 使用 GitHub 作为项目托管网站 xff0c 如果网速不好的话 xff0c 严重影响使用体验 xff0c 甚至会出现登录不上的情况 针对这个情况
  • 操作系统部分习题

    操作系统部分题目 第一章 操作系统引论第二章 进程的描述与控制第三章 处理机调度与死锁第四章 存储器管理第五章 虚拟存储器第六章 输入输出系统第七章 文件管理第八章 磁盘处理器的管理 习题书籍 xff1a 计算机操作系统 xff08 第四版
  • 基于自适应反步法的三自由度直升机(3 DOF Helicopter)轨迹跟踪

    文章目录 前言一 3 DOF Helicopter实验装置二 3 DOF Helicopter模型建立及简化2 1模型建立2 1 1 俯仰轴建模2 1 2 横侧轴建模2 1 3 旋转轴建模 2 2 模型简化 三 控制器设计四 实验验证4 1
  • rabbitmq安装(rpm方式)

    rabbitmq 1 准备资料2 安装3 常用操作命令 1 准备资料 1 erlang 23 0 2 1 el7 x86 64 2 rabbitmq server 3 8 4 1 el7 noarch 3 centos7 RabbitMQ的
  • Docker入门教程

    目录 一 Docker介绍 为什么需要沙箱机制 xff1f 什么是沙箱机制 xff1f 二 Docker的优点 三 安装Docker 四 Docker的组成 问题 xff1a 是否不理解容器与镜像 xff1f 五 启动Docker 六 安装
  • ubuntu下录屏软件kazam及使用问题

    Ubuntu下视频录制工具kazam及问题 视频录制工具 在Ubuntu或linux下录制视频应该是每个用linux的朋友都会用到的 xff0c 这里笔者使用了Kazam 功能挺多的 xff0c 包括截屏 xff08 虽然ubuntu有自带
  • NUC安装Ubuntu18.04系统

    NUC安装Ubuntu18 04系统 基本信息前言安装过程配置Ubuntu18 04系统镜像安装系统解决系统字体过大 分辨率低的问题测试 其他软件安装 基本信息 Time xff1a 2021 3 9使用NUC版本 xff1a 猎豹峡谷NU
  • 11代i5 NUC使用记录

    11代i5 NUC使用记录 NUC信息NUC选型配置过程内存条固态安装安装windows安装Ubuntu18 04使用ROS2GO 其他学习总结 NUC信息 NUC基本信息 xff1a NUC xff1a Next Unit of Comp
  • ROS rosdep initupdate报错解决方法

    ROS rosdep init update报错解决方法 在安装ROS的过程中 xff0c 很多同学在执行上述指令时会提示以下错误 xff1a ERROR cannot download default sources list from
  • Ubuntu18.04下使用D435i跑ROS包和ORB-SLAM2

    Ubuntu18 04下使用D435i跑ROS包和ORB SLAM2相关问题 前言主要问题及解决方法汇总一 realsense包版本问题二 无法定位安装包问题三 警告问题四 如何检测是否发布五 利用D435i跑ORB SLAM2一点注意 后
  • 小觅双目sdk地址

    https mynt eye d sdk readthedocs io zh CN latest sdk install ubuntu src html
  • FreeRTOS移植STM32F4

    64 TOC FreeRTOS FreeRTOS移植到STM32F4上 本文章讲解一下如何将FreeRTOS移植到STM32F4开发板上 xff0c 如有不对之处 xff0c 欢迎指正 xff0c 多多交流 一 创建工程文件及代码调试 我们
  • stm32使用串口进行通讯之发送数据

    前提准备 xff1a 1 库函数基础模板 2 stlink下载器 USB TTL下载器 单片机最小开发板stm32F103C8T6 3 面包板及相关接线 4 vscode与keil的联合开发更流畅 5 串口软件 xff0c 这个下面视频有
  • 什么是事件流(总结),ECMAScript6(总结)

    1 xff0c 事件流 xff08 1 xff09 事件流是指页面 接收事件的顺序 xff08 2 xff09 假设页面中的元素都具备相同的事件 并且这些个元素之间是相互嵌套的 关系 xff08 3 xff09 那么在触发一个元素的事件时候
  • rabbitmq消息可靠性分析

    通过firehose插件跟踪消息过程 开发测试阶段用于分析消息消费的过程 xff0c 生产关闭 xff0c 以免影响整体性能 rabbitmq tracing 插件相当于Firehose 的GUI 版本 xff0c 能跟踪RabbitMQ
  • vscode拉取git代码到本地提示 在签出前,请清理存储库工作树

    最近使用vscode拉取git代码到本地提示 在签出前 请清理存储库工作树 xff0c 具体如图 xff1a 一 原因分析 原因很简单 xff0c 就是因为本地代码和git远程库代码存在冲突 xff0c 也就是你改的文件 xff0c 别人也
  • UCOSIII 系统(STM32任务管理)学习笔记

    作者 xff1a 瓴 时间 xff1a 2021 07 28 UCOSIII 系统 xff08 STM32任务管理 xff09 学习笔记 UCOSIII 系统学习笔记一 UCOSIII 任务管理1 任务状态2 任务控制块 OS TCB3 任
  • 主机字节序和网络字节序

    1 大端字节序和小端字节序 xff1a 大端字节序存储时值的高位存储在较小的地址 xff0c 值的低位存储在较大的地址 小端字节序存储时值的高位存储在较大的地址 xff0c 值的低位存储在较小的地址 以0x12345678为例 xff1a
  • 神经网络中Batch和Epoch

    随机梯度下降法是一种具有大量超参数的学习算法 通常会使初学者感到困惑的两个超参数 Batch大小和Epoch数量 它们都是整数值 xff0c 看起来做的事情是一样的 在这篇文章中 xff0c 您将发现随机梯度下降中Batch和Epoch之间