zoukankan      html  css  js  c++  java
  • 深度学习中的batch, epoch, iteration的含义

    原文:https://blog.csdn.net/qq_18668137/article/details/80883350

    此处谨作学习记录之用。

    深度学习的优化算法,说白了就是梯度下降。每次的参数更新有两种方式。

    第一种,遍历全部数据集算一次损失函数,然后计算函数对各个参数的梯度,更新梯度。这种方式每更新一次参数都要把数据集里的所有样本看一篇,计算量开销大,计算速度慢,不支持在线学习,这称为Batch gradient desecnt, 批梯度下降。

    另一种,每看一个数据就算一次损失函数,然后求梯度更新参数,这个称为随机梯度下降,stochastic gradient descent。这个方法速度比较快,但是收敛性能不太好,可能在最优点附近晃来晃去,hit不到最优点。两次参数的更新也有可能互相抵消掉,造成目标函数震荡比较剧烈。

    为了克服两种方法的缺点,现在一般采用的是一种折中手段, mini-batch gradient decent, 小批的梯度下降,这种方法把数据分为若干批,按批来更新参数。这样,一个批中的一组数据共同决定了本次梯度的方向,下降起来就不容易跑偏,减少了随机性。另一方面因为批的样本数与整个数据集相比少了很多,计算量也不是很大。

    现在用的优化器SGD是stochastic gradient descent 的缩写,但不代表是一个样本就更新一回,还是基于mini-batch的。

    那batch, epoch, iteration代表什么呢?

    1. batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
    2. iteration:迭代。1个迭代等于使用batchsize个样本训练一次;
    3. epoch:1个epoch等于使用训练集中的全部样本训练一次,通俗的讲epoch的值就是整个数据集被轮回了几次。

    batchsize最大是样本总数N,此时就是Full batch learning;最小是1,即每次只训练一个样本,这就是在线学习(online Learning)。当我们分批学习时,每次使用过全部训练数据完成一次Forward运算以及一次BP运算,完成了一次epoch。

  • 相关阅读:
    Django1.11框架开发流程简述
    Python之Django框架执行流程简介
    Python之Django框架笔记
    Redis数据库学习笔记
    python之MiniWeb框架
    python之正则表达式
    python之with语句结合上下文管理器
    Python之闭包and装饰器
    Ajax之调用一言网站API接口
    python之pymysql模块简单应用
  • 原文地址:https://www.cnblogs.com/elitphil/p/12688512.html
Copyright © 2011-2022 走看看