【发布时间】: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