深度学习(深度学习中epoch、batch、batch size和iterations详解)
1.epoch
在训练一个模型时所用到的全部数据;
备注:一般在训练时都要使用多于一个的epoch ,因为在神经网络中传递完整的数据集仅仅一次是不够的 ,只有将完整的数据集在同样的神经网络中传递多次 ,才会得到比较优秀的训练效果 ,当然也不行 ,容易过拟合 ,所以要根据实验选择自己最合适的 。
epochs:
epochs被定义为向前和向后传播中所有批次的单次训练迭代 。这意味着一个周期是整个数据的单次向前和向后传递 。简单说 ,epochs指的就是训练过程中数据将被“轮 ”多少次 ,就这样 。
2.batch
Keras中参数更新是按批进行的 ,就是小批的梯度下降算法 。如果准备跑模型的数据量太大 ,此时自己的电脑可能承受不住 ,所以可以适当的将数据分成几块 ,就是分成几个batch 。每次的参数更新有两种方式:
第一种,遍历全部数据集算一次损失函数 ,然后算函数对各个参数的梯度 ,更新梯度 。这种方法每更新一次参数都要把数据集里的所有样本都看一遍,计算量开销大 ,计算速度慢 ,不支持在线学习 ,这称为批梯度下降 。
另一种 ,每看一次数据就算一下损失函数 ,然后求梯度更新参数 ,这个称为随机梯度下降 ,这个方法速度比较快 ,但是瘦脸性能不太好 ,可能在最优点附近晃来晃去 ,找不到最优点 。两次参数的更新也有可能互相抵消掉 ,造成目标函数震荡的比较剧烈 。
3.batch size
一个batch中的数据量大小即为batch size ,一般为2n,比如32,64,128等等 。
4.iterations
iterations(迭代):每一次迭代都是一次权重更新 ,每一次权重更新需要batch_size个数据进行Forward运算得到损失函数 ,在BP算法更新参数 。1个iteration等于使用batchsize个样本训练一次。
迭代,即batch size需要完成一次epoch的次数
(ps:其实对于一个epoch来说 ,batch和iterations数值上是相等的)
以下为上述知识的两个问题:
问题一:比如现在我们有一个2000大小的训练样本 ,然后我们将这2000个样本分成4个大小为500的小数据集样本 ,此时epoch=1(暂且就用这个样本训练1次) 。
请问以下数值分别为多少:①batch;②batch size;③iterations;
问题二:Fashion Mnist数据集有70000个灰度图像 ,其中60000张图片作为训练数据 ,10000张图片作为测试数据 。假设现在选择Batch Size=100对模型进行训练。迭代30000次 。
每个Epoch要训练的图片数量:60000(训练集上的所有图像)
请问:①训练集具有的Batch个数;②每个Epoch需要完成的Batch个数;③每个Epoch具有的Iteration个数;④每个Epoch中发生模型权重更新的次数;⑤训练10个Epoch后 ,模型权重更新的次数;
答案公布于评论区 。
总结:
1)不同Epoch的训练 ,其实用的是同一个训练集的数据 。
2)第1个Epoch和第10个Epoch虽然用的都是训练集的60000张图片 ,但是对模型的权重更新值确是完全不同的 。
3)因为不同Epoch的模型处于代价函数空间上的不同位置 ,模型的训练迭代越靠后 ,越接近低谷 ,其代价越小 。
4)总共完成30000次迭代 ,相当于完成了30000/600=50个Epoch 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!