当数据集大小不是批处理大小的倍数时,在Keras中会发生什么? 这是否意味着每个时期的最后一步将具有较小的批次?确认发生什么情况的代码位置在哪里?
问题与此suggested post不同,因为后者回答了一个事实,即您可以训练何时纪元不是批处理大小的倍数,但是不能知道发生什么情况以及代码在哪里?可以加深了解。
答案 0 :(得分:3)
这个问题的答案实际上很简单而且很直观。解决的办法是最后一批较小。我将举一个例子来说明这个想法:假设您有一个包含100个样本的数据集,并且使用等于16的批处理大小。那么您有6个大小为16的批处理,这意味着您将消耗16 * 6 = 96个样本,您还有4个剩余样本,在这个时期还没有看到,因此您只创建了4个样本作为最后一批
答案 1 :(得分:2)
首先将您所指的称为dataset size
而不是epoch size
。当数据集大小不能被批量大小整除时,有两种方法来处理余数。
例如,在tf.data
API中,您可以传递参数drop_remainder
(布尔值)来决定使用tf.data.Dataset.batch()
时需要对余数进行什么处理。