首页 > 技术文章 > 模型中的超参数(batch_size、epoch、batch)

leafchen 2020-11-04 18:32 原文

# epoch:
1个epoch指用训练集中的全部样本训练一次,此时相当于batch_size 等于训练集的样本数。
如果epoch=50,总样本数=10000,batch_size=20,则需要迭代500次。
# iteration: 1次iteration即迭代1次,也就是用batch_size个样本训练一次。每一次迭代得到的结果都会被作为下一次迭代的初始值.
# batch_size: 每批数据量的大小.用SGD的优化算法进行训练,也就是1 次iteration一起训练batch_size个样本,计算它们的平均损失函数值,来更新一次参数。 # 举例: 一个excel中包括200个样本(数据行)的数据,选择batch_size=5, epoch=1000, 则batch=40个,每个batch有5个样本,一次epoch将进行40个batch或40次模型参数更新,1000个epoch,模型将传递整个数据集1000次,在整个训练过程中,总共有40000次batch. # 引用例子: mnist 数据集有 60000 张训练数据,10000 张测试数据。现在选择 Batch_Size = 100 对模型进行训练。 每个 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虽然用的都是训练集的60000图片,但是对模型的权重更新值却是完全不同的。因为不同epoch的模型处于代价函数空间上的不同位置,模型的训练代越靠后,越接近谷底,其代价越小。 总共完成30000次迭代,相当于完成了 30000/600=50 个epoch batch_size的选择原则:batch_size越大,batch越少,需要迭代的次数越少,训练时间越短。 batch_size越小,batch数量越多,耗时久,计算机占用内存大。

 

推荐阅读