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。

  • 相关阅读:
    【转】JMeter学习 参数化User Defined Variables与User Parameters
    【转】 JMeter学习(三十七)Jmeter录制手机app脚本
    【转】JMeter学习(三十五)使用jmeter来发送json/gzip格式数据
    vue axios配置element loading
    D3 JS 实现可视化
    Axios 封装
    Axios和.Net Core 跨域配置(当后台启用windows验证的情况)
    svg绘制圆形数据分布图
    svg 折线鼠标绘制
    svg 圆形标签数据分布
  • 原文地址:https://www.cnblogs.com/elitphil/p/12688512.html
Copyright © 2011-2022 走看看