训练神经网络模型过程中batch_size,steps_per_epoch,epochs意义


batch_size:批大小。batch_size是计算效率和内存容量之间的平衡参数。若为高性能GPU,可以设置更大的batch_size值。神经网络训练过程中,随机梯度下降时,使用梯度的数量,即每次使用batch_size个数据样本来训练、更新权重参数。1次迭代等于使用batch_size个样本训练一次。
如果batch_size过小,训练数据就会非常难收敛,导致欠拟合。
增大batch_size,处理速度加快,但对计算设备的内存需求也相应增大。

 


epochs:所有的训练样本完成一次Forword运算以及一次BP运算。所有图像的训练轮次,即使用所有样本训练一遍。一个epoch是所有训练样本的一轮正向传递和一轮反向传递。
例如,训练数据集总共有1000个样本。若batch_size=10,那么训练完全体样本集需要100次迭代,1次epoch。

 


steps_per_epoch:一轮epoch包含的步数(每一步是batch_size个数据送入),使用TensorFlow数据Tensor输入张量进行训练时,默认None自动分割,即数据集样本数/batch_size。
把训练样本的数量除以batch_size批大小得出。例如,总共有100张训练图片,且batch_size批大小为50,则steps_per_epoch值为2。
batch_size=全体数据集大小 / steps_per_epoch。如果设置batch_size的大小,那么在fit_generator时 , steps_per_epoch = len(x_train) // (batch_size*epochs)
steps_per_epoch就是对于下一轮的epoch开始之前,调用generator产生准备数据的次数,generator必须每次返回batch_size个training样本,那么:
steps_per_epoch = total_samples//(batch_size)
这里的//是整除,也可以使用numpy.ceil的函数向上取整,这样做的目的是为了舍弃最后不满足batch_size的数据。

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