Epoch,Batch,Iteration三个深度学习基本概念

Epoch,Batch,Iteration三个深度学习基本概念

进行深度学习模型训练时,总会用看到的三个概念:Epoch,Batch,Iteration
,初入AI难免会整不明白三个概念的关系,mark下,有误请大佬们指正

定义及解释
Epoch: 使用所有训练集数据对模型进行一次完整训练,称之为“一代训练”
**Batch:**使用训练集中一部分样本对模型权重进行一次反向传播的参数更新,这一部分样本称之为“一批数据”
**Iteration:**使用一个Batch数据对模型进行一次参数更新的过程,称为“一次训练”

epoch:所有训练集数据进行一次训练,也就是所有训练样本在网络中进行了一次正向传播及反向传播。但是一个epoch数据量太大也就是所有训练集数据太大,需要把它分成小块,也就是分成多个batch进行训练。

batch:整个训练集分成若干个batch
batch_size:每个batch所包含的数据大小
iteration:训练一个batch就是一次迭代

为什么使用多个epoch?
在神经网络中传递完整的数据集一次是不够的,而且我们需要将完整的数据集在同样的神经网络中传递多次。但请记住,我们使用的是有限的数据集,并且我们使用一个迭代过程即梯度下降来优化学习过程。如下图所示。因此仅仅更新一次或者说使用一个epoch是不够的。
在这里插入图片描述
随着epoch数量增加,神经网络中的权重的更新次数也在增加,曲线从欠拟合变得过拟合。

那么,问题来了,几个epoch才是合适的呢?

不幸的是,这个问题并没有正确的答案。对于不同的数据集,答案是不一样的。 但是数据的多样性会影响合适的epoch的数量。比如,只有黑色的猫的数据集,以及有各种颜色的猫的数据集。

换算关系:
在这里插入图片描述实际上,梯度下降的几种方式的根本区别就在于上面公式中的 Batch_Size 不同。
在这里插入图片描述
例子:
minist数据集中有60000张图片作为训练集,100000作为测试集,假设Batch_size=100对模型进行训练,迭代30000次

  • 每个 Epoch 要训练的图片数量:60000(训练集上的所有图像)
  • 训练集具有的 Batch 个数:60000/100=600
  • 每个 Epoch 需要完成的 Batch 个数:600
  • 每个 Epoch 具有的 Iteration 个数:600(完成一个Batch训练,相当于参数迭代一次)
  • 每个 Epoch中发生模型权重更新的次数: 600
  • 训练 10 个Epoch后,模型权重更新的次数: 600*10=6000
  • 不同Epoch的训练,其实用的是同一个训练集的数据。第1个Epoch和第10个Epoch虽然用的都是训练集的图片,但是对模型的权重更新值却是完全不同的。因为不同Epoch的模型处于代价函数空间上的不同位置,模型的训练代越靠后,越接近谷底,其代价越小。
  • 总共完成30000次迭代,相当于完成了30000/600=50个Epoch

参考链接:这里

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值