【问题标题】:Rnn prediction rate affected by batch size?Rnn预测率受batch size影响?
【发布时间】:2018-02-03 19:50:32
【问题描述】:

我正在使用 Tensorflow RNN 来预测一堆序列。我使用 Grucell 和 dynamic_rnn。在训练时,我输入训练数据集,我将其分成8 个批次,每个批次的批次大小为10(1 个批次的形状为[10, 6, 2],即[batchsize, seqlen, dim])。并且为了防止过拟合,我会在训练数据集中的预测率开始超过 80% 时停止训练(通常在准确率 80%~83% 时停止)。

训练后,我让同一张图只预测(而不是训练)同一个训练数据集。但是这一次,由于 tf.nn.dynamic_rnn 可以提供可变大小的批次,我可以将数据集定制为80 批次,每个批次的批次大小为1,形状为[1, 10, 2](只是降低了批次大小因此增加了批次的数量)。然后,准确率通常超过 90%,明显高于 80%。出于某种原因,缩小批量会导致更高的准确率。为什么会这样?

【问题讨论】:

  • 我的第一个直觉是,在相同的时间内,较小的批次可能更容易学习。学习序列时存在过度拟合的问题。也许它获取了序列的更多“特征”,而不是学习整个序列。

标签: tensorflow rnn


【解决方案1】:

据我了解,您的训练数据量较少,并且您在训练期间也提前停止,不要盲目停止处理过度拟合,如果差异增加,则检查您的训练和验证损失差异,这意味着您的模型开始过度拟合。在训练检查之前,您的数据集是否有偏差或是否正确平衡。我认为这是因为您的训练数据非常少,或者您的数据集不平衡。

【讨论】:

  • 我检查验证损失,大约 80% 是验证损失开始增加的时候。我有少量数据(大约一千多一点),也许这就是原因。
猜你喜欢
  • 2017-12-14
  • 2017-12-17
  • 2014-02-26
  • 2014-08-19
  • 2018-06-20
  • 1970-01-01
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
相关资源
最近更新 更多