将训练示例拆分为小批量:如何处理剩余的小批量?

数据挖掘 小批量梯度下降
2022-02-23 04:47:59

假设我有 103 个训练示例。我想要一个大小为 16 的小批量。这意味着将有 6 个大小为 16 的小批量和一个大小为 7 的小批量。

在张量流中,需要指定输入的形状:

x = tf.placeholder(tf.int32, shape=[batch_size], name='x')

这当然导致了以下错误:

Cannot feed value of shape (7,) for Tensor 'x_10:0', which has shape '(16,)'

那么,我该如何处理 7 号的 mini-batch 呢?我应该找到相应的小批量大小,这将创建相等的小批量吗?如果是这样,我该如何遵循创建两个幂的小批量的建议?或者我应该忽略最后一个小批量?

1个回答

我想到了一些基本的方法。这取决于您的背景和意图,这可能对您最有效。这里有一些想法,假设不能使用部分批处理:

  1. 丢弃剩余部分。当您有许多完整的批次时,这可能更有意义,并且您认为这组示例就足够了。

  2. 用其他批次的重复样品补充最后一批。例如,从每批中随机获取一个示例。

  3. 如果这样的事情完全可行,请生成额外的(可能是合成的)示例来完成最后一批。