神经网络 专业术语解释(Batch Size, Iteration,Epoch)

转自:https://blog.csdn.net/tracylining/article/details/80781937

            https://blog.csdn.net/qq_34886403/article/details/82558399

 

1)Batch Size(批尺寸):一次训练所选取的样本数。

    Batch Size的大小影响模型的优化程度和速度,同时其直接影响到GPU内存的使用情况。假如你GPU内存不大,该数值最好设置小一点。

 

为什么要提出Batch Size?

    在没有使用Batch Size之前,这意味着网络在训练时,是一次把所有的数据(整个数据库)输入网络中,然后计算它们的梯度进行反向传播,由于在计算梯度时使用了整个数据库,所以计算得到的梯度方向更为准确。但在这情况下,计算得到不同梯度值差别巨大,难以使用一个全局的学习率,所以这时一般使用Rprop这种基于梯度符号的训练算法,单独进行梯度更新。

    在小样本数的数据库中,不使用Batch Size是可行的,而且效果也很好。但是一旦是大型的数据库,一次性把所有数据输进网络,肯定会引起内存的爆炸。

 

Batch Size设置合适时的优点:

    A、通过并行化提高内存的利用率。就是尽量让你的GPU满载运行,提高训练速度;

    B、单个epoch的迭代次数减少了,参数的调整也慢了,假如要达到相同的识别精度,需要更多的epoch;

    C、适当Batch Size使得梯度下降方向更加准确。

 

Batch Size从小到大的变化对网络影响

    A、没有Batch Size,梯度准确,只适用于小样本数据库;

    B、Batch Size=1,梯度变来变去,非常不准确,网络很难收敛;

    C、Batch Size增大,梯度变准确;

    D、Batch Size增大,梯度已经非常准确,再增加Batch Size也没有用。

 

2)Epoch(回合):代表样本集内所有的数据经过了一次训练。

3)Iteration(迭代):迭代是 batch 需要完成一个 epoch 的次数。记住:在一个 epoch 中,batch 数和迭代数是相等的。

    比如对于一个有 2000 个训练样本的数据集。将 2000 个样本分成大小为 500 的 batch,那么完成一个 epoch 需要 4 个 iteration。

 

例:

CIFAR10 数据集有 50000 张训练图片,10000 张测试图片。现在选择 Batch Size = 256 对模型进行训练,则

    每个 Epoch 要训练的图片数量: 50000

    训练集具有的 Batch 个数:  50000/256=195.3=196

    每个 Epoch 需要完成的 Batch 个数: 196

    每个 Epoch 具有的 Iteration 个数: 196

    每个 Epoch 中发生模型权重更新的次数: 196

    训练 10 代后,模型权重更新的次数: 196*10=1960

 

    注:不同代的训练,其实用的是同一个训练集的数据。第 1 代和第 10 代虽然用的都是训练集的五万张图片,但是对模型的权重更新值却是完全不同的。因为不同代的模型处于代价函数空间上的不同位置,模型的训练代越靠后,越接近谷底,其代价越小。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值