来自蜂口知道公众号

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

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

·   随机梯度下降是一种迭代学习算法,它使用训练数据集来更新模型。

·   批量大小是梯度下降的超参数,在模型的内部参数更新之前控制训练样本的数量。

·   Epoch是梯度下降的超参数,其控制通过训练数据集的完整传递的数量。

Batch:

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

·    批量梯度下降。批量大小=训练集的大小

·        随机梯度下降。批量大小= 1

·       小批量梯度下降。1 <批量大小<训练集的大小

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

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

在训练模型时经常会发生这种情况。它只是意味着最终批次的样品数量少于其他批次。或者,您可以从数据集中删除一些样本或更改批处理大小,以便数据集中的样本数按批次大小均匀划分。

Epoch:

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

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

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。

神经网络中Batch和Epoch之间的区别相关推荐

  1. Batch和Epoch之间的区别是什么?

    写在前面(快速理解): · 随机梯度下降(SGD)是一种迭代学习算法,它使用训练数据集来更新模型. · Batch(批量)大小是梯度下降算法的超参数,在模型的内部参数更新之前控制训练样本的数量,一个周 ...

  2. 神经网络中Batch Size的理解

    神经网络中Batch Size的理解 直观的理解: Batch Size定义:一次训练所选取的样本数. Batch Size的大小影响模型的优化程度和速度.同时其直接影响到GPU内存的使用情况,假如你 ...

  3. python观察日志(part20)--列表中加号,extend,append之间的区别

    学习笔记,仅供参考,有错必纠 列表中"+"加号,extend,append之间的区别 extend extend函数用于在列表末尾一次性追加另一个序列中的多个值. append a ...

  4. python __import__和import区别_Python中import 与__import__() 之间的区别比较

    本篇文章给大家带来的内容是关于Python中import 与__import__() 之间的区别比较,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 首先来说一下两者的区别: impo ...

  5. sql server序列_SQL Server中身份和序列之间的区别

    sql server序列 In SQL Server, both the SEQUENCE object and IDENTITY property are used to generate a se ...

  6. Oracle中用户和架构之间的区别?

    本文翻译自:Difference between a user and a schema in Oracle? Oracle中的用户和架构有什么区别? #1楼 参考:https://stackoom. ...

  7. C#中Int64和UInt64之间的区别

    Int64:此 Struct用于表示64位带符号整数.所述的Int64 可以两种类型的值,包括所述范围之间的负的和正的存储-9,223,372,036,854,775,808至9,223,372,03 ...

  8. -ms-flexbox_Flexbox中width和flex-basis之间的区别

    -ms-flexbox by Kyle Gallagher 凯尔·加拉格尔(Kyle Gallagher) Flexbox中width和flex-basis之间的区别 (The difference ...

  9. Jquery中.val()与.value之间的区别

    三年多没敲过代码了,今年打算捡起来,是需要多么大的勇气.但是为了实现自我价值,履行自我的承诺,这就是责任.没有什么难不难,晚不晚之说,是我经常对别人说的那样,再晚不过心晚,,一切努力了,实现了每一天的 ...

最新文章

  1. mysql5.1 mysiam,将MySQL 5.1 MyISAM 转换成 INNODB 存储引擎
  2. Cocos2D 添加 UIView
  3. 进程在linux系统中原理,Linux系统原理知识 进程切换的概念介绍
  4. 常用地图经纬度转换,以及遇到的问题和解决方式
  5. Java性能优化面试题汇总
  6. 2020h黑苹果 y7000p_【黑苹果】联想Lenovo Legion Y7000 Y530系列笔记本,EFI文件下载
  7. C++按键模拟/刷屏器
  8. 【评测】义翘神州CHO细胞无血清培养基
  9. 弹幕的开发(DanmakuFlameMaster)
  10. 基于(ztmap)BIM的数字孪生建造智慧机房管理后台展示系统
  11. dwa_planner解读
  12. c7200-adventerprisek9.124-9.T.bin
  13. 语音合成(speech synthesis)方向十一:聊一聊增量式语音合成(iTTS)进化史
  14. 浅析移动旺旺特服号之无限扩展
  15. python launcher卸载后蓝屏_安装win7x64、x86总提示文件出错或安装大型软件出错或0x0000001a、0x0000003b蓝屏...
  16. Autodesk系列软件的安装通病
  17. 部分Windows 10 LTSC 2021版用户收到22H2版更新 目测又是微软BUG
  18. 图像处理--视频分析方法
  19. CSS布局页面之盒子模型
  20. python 将xls、xlsx、doc、docx文件转为pdf

热门文章

  1. 惊了,掌握了这个炼丹技巧的我开始突飞猛进
  2. 一篇文章了解架构师能力模型
  3. 技术人如何提升自己的核心竞争力
  4. 论文浅尝 | 对于知识图谱嵌入表示的几何形状理解
  5. 论文浅尝 |「知识表示学习」专题论文推荐
  6. pkuseg:一个多领域中文分词工具包
  7. 数字化转型知识方法系列之三:以价值效益为导向推进数字化转型的五大重点任务
  8. 【译】索引进阶(四):页和区
  9. 有关 Lambda linq练习 有待整理
  10. linux的基础知识——进程组