tensorflow - 选择每个 Epoch 的步数

标签 tensorflow machine-learning keras deep-learning neural-network

如果我想用train_generator训练模型,选择之间有显着差异吗

  • 10 个纪元,每个纪元 500 步

  • 100 个纪元,每个纪元 50 个步骤

目前我正在训练 10 个 epoch,因为每个 epoch 都需要很长时间,但任何显示改进的图表看起来都非常“跳跃”,因为我只有 10 个数据点。我认为如果使用 100 个 Epoch,我可以获得更平滑的图表,但我想首先知道这是否有任何缺点

最佳答案

根据您所说的,听起来您需要更大的batch_size,当然这可能会影响steps_per_epoch和epochs的数量。

解决跳跃问题

  • 较大的批量大小将为您提供更好的梯度,并有助于防止跳跃
  • 您可能还需要考虑较小的学习率或学习率调度程序(或衰减),以允许网络在训练时“稳定下来”

较大批量大小的影响

  • batch_size 太大可能会产生内存问题,尤其是在您使用 GPU 时。一旦超出限制,请回拨直至有效。这将帮助您找到系统可以使用的最大批量大小。
  • 批量大小太大可能会让您陷入局部最小值,因此如果您的训练陷入困境,我会减少一些。想象一下,您在这里过度校正了跳跃,并且它的跳跃程度不足以进一步最小化损失函数。

何时减少纪元

  • 如果您的训练误差非常低,但您的测试/验证却非常高,则说明您的模型过度拟合了过多的 epoch。
  • 找到适当平衡的最佳方法是在验证测试集上使用提前停止。您可以在此处指定何时停止训练,并保存为您提供最佳验证损失的网络权重。 (我强烈建议始终使用它)

何时调整每轮步数

  • 传统上,每个时期的步骤计算为 train_length//batch_size,因为这将使用所有数据点,一次一个批处理大小。
  • 如果你要增加数据,那么你可以稍微扩展一下(有时我将上面的函数乘以 2 或 3 等。但是,如果它已经训练了太长时间,那么我会坚持使用传统方法。

关于tensorflow - 选择每个 Epoch 的步数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49922252/

相关文章:

keras - 具有线性激活的层和没有激活的层有什么区别?

python - CNN 给出随机答案,而全连接神经网络工作正常

java - 查找字符串特征上的欧几里德距离

machine-learning - 网术: How to reshape a convolution layer of a caffemodel file in caffe?

python - 使用 conv1D “Error when checking input: expected conv1d_input to have 3 dimensions, but got array with shape (213412, 36)”

python - 如何设置 1dCNN+LSTM 网络(Keras)的输入形状?

python - 来自两个一维张量的不同索引对

machine-learning - tensorflow 中的多热编码(谷歌云机器学习,tf estimator api)

tensorflow - 无法使用 TensorFlow 0.7.1 在 TensorBoard 中可视化 Inception v3 模型

artificial-intelligence - 人工智能和机器学习中的随机性