训练神经网络中的基本概念之epoch batch iteration


  • 引言

  1. epochs : 当一个完整的数据集通过了神经网络一次并且返回了一次,这个过程称为一个 epoch
  2. batch :当一个 epoch 对于计算机而言太庞大的时候,就需要把它分成多个小块,每个块称为一个batch;在不能将数据一  次性通过神经网络的时候,就需要将数据集分成几个 batch
  3. batch size : 批大小,一个 batch 中的样本总数,和 number of batches 是不同的
  4. iterations : 是 batch 需要完成一个 epoch 的次数。在一个 epoch 中,batch 数和迭代数是相等的
  5. iterations = epochs×(images / batch_size)​

需要有 Batch_Size原因 :

batchsize 的正确选择是为了在内存效率和内存容量之间寻找最佳平衡

 

使用多个 epoch 原因:

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

训练神经网络中的基本概念之epoch batch iteration_第1张图片

因此仅仅更新权重一次或者说使用一个 epoch 是不够的,随着 epoch 数量增加,神经网络中的权重的更新次数也增加,曲线从欠拟合变得过拟合,


  • 示例

mnist 数据集有 60000 张图片作为训练数据,10000 张图片作为测试数据  Batch Size = 100       

 

  1. 每个 Epoch 要训练的图片数量:60000(训练集上的所有图像)
  2. 训练集具有的 Batch 个数: 60000/100=600(无法整除,要加1,例:50000/256=195+1=196)
  3.  每个 Epoch 需要完成的 Batch 个数: 600
  4. 每个 Epoch 具有的 Iteration 个数: 600(完成一个Batch,相当于参数迭代一次)
  5. 每个 Epoch 中发生模型权重更新的次数:600
  6. 训练 10 个Epoch后,模型权重更新的次数: 600*10=6000
  7. 总共完成30000次迭代,相当于完成了 30000/600=50 个Epoch

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


 

你可能感兴趣的:(常识,epoch,loss,batch,Iteration)