神经网络中epoch、batch、batchsize

1 epoch

  • 数据集中的全部数据样本通过神经网络一次并且返回一次的过程即完成一次训练称为一个epoch。
  • 当我们分批学习时,每次使用过全部训练数据完成一次Forword运算以及一次BP运算,称为完成了一次epoch。
  • epoch时期 = 所有训练样本的一个正向传递和一个反向传递。

为什么要设置多个epoch?

  • 因为在神经网络中传递完整的数据集一次是不够的,而且我们需要将完整的数据集在同样的神经网络中传递多次。我们使用的是有限的数据集,并且我们使用一个迭代过程即梯度下降,优化学习过程和图示。因此只更新权重一次或说使用一个 epoch 是不够的。

2 batch

在不能将数据一次性通过神经网络的适合,就需要将数据集分成几个batch。
Iteration:1次iteration即迭代1次,也就是用batch_size个样本训练一次。
一个迭代=一个正向通过+一个反向通过。
每一次迭代得到的结果都会被作为下一次迭代的初始值.

3 batchsize

每批数据量的大小,批量大小将决定我们一次训练的样本数目。
batch_size将影响到模型的优化程度和速度
用优化算法进行训练,也就是1 次iteration一起训练batch_size个样本,计算它们的平均损失函数值,来更新一次参数。

为什么需要有batchsize?
batchsize的正确选择是为了在内存效率和内存容量之间寻找最佳平衡。


4 区别

深度学习中经常看到epoch、iteration和batchsize,下面说说这三个区别:

(1)batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;
(2)iteration:1个iteration等于使用batchsize个样本训练一次;
(3)epoch:1个epoch等于使用训练集中的全部样本训练一次;

示例

一个excel中包括200个样本(数据行)的数据,选择batch_size=5, epoch=1000, 则batch=40个,每个batch有5个样本,一次epoch将进行40个batch或40次模型参数更新,1000个epoch,模型将传递整个数据集1000次,在整个训练过程中,总共有40000次batch.

mnist 数据集有 10000 张训练数据,10000 张测试数据。现在选择 Batch_Size = 100 对模型进行训练。
每个 epoch 要训练的图片数量:10000(训练集上的所有图像)
训练集具有的 batch 个数: 10000/100=100
每个 epoch 需要完成的 batch 个数: 100
每个 epoch 具有的 Iteration 个数: 100(完成一个batch,相当于参数迭代一次)
每个 epoch 中发生模型权重更新的次数:100
训练 10 个epoch后,模型权重更新的次数: 100*10=1000
不同epoch的训练,其实用的是同一个训练集的数据。第1个epoch和第10个epoch虽然用的都是训练集的10000图片,但是对模型的权重更新值却是完全不同的。因为不同epoch的模型处于代价函数空间上的不同位置,模型的训练代越靠后,越接近谷底,其代价越小。
总共完成10000次迭代,相当于完成了 10000/100=100 个epoch

batch_size的选择原则:batch_size越大,batch越少,需要迭代的次数越少,训练时间越短。
batch_size越小,batch数量越多,耗时久,计算机占用内存大。

你可能感兴趣的:(神经网络,深度学习,神经网络,batch,深度学习)