赞
踩
为什么要设置多个epoch?
在不能将数据一次性通过神经网络的适合,就需要将数据集分成几个batch。
Iteration:1次iteration即迭代1次,也就是用batch_size个样本训练一次。
一个迭代=一个正向通过+一个反向通过。
每一次迭代得到的结果都会被作为下一次迭代的初始值.
每批数据量的大小,批量大小将决定我们一次训练的样本数目。
batch_size将影响到模型的优化程度和速度。
用优化算法进行训练,也就是1 次iteration一起训练batch_size个样本,计算它们的平均损失函数值,来更新一次参数。
为什么需要有batchsize?
batchsize的正确选择是为了在内存效率和内存容量之间寻找最佳平衡。
深度学习中经常看到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数量越多,耗时久,计算机占用内存大。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。