小批量是在 Keras 的 Sequential.fit 方法中随机抽样的吗()

数据挖掘 Python 喀拉斯 张量流 梯度下降
2021-10-03 01:40:14

当您.fit使用 KerasSequential()模型时,您可以指定一个batch_size参数。我注意到它有时是独立于实际数据集大小定义的。这是否意味着小批量是随机采样的,而不是从上到下逐片向下滚动数据集?

2个回答

如果您设置shuffle=Truemodel.fit方法的参数,Keras 将在将数据集拆分为批次()之前对其进行洗牌,否则将按顺序处理数据集。

相关文档本身并未提及随机抽样。

Sequential注意:这一切都与模型类型与类型无关ModelOP专门谈论Sequential模型。

您可以指定shuffle参数以在整个训练数据集中获取随机样本,但没有严格/参数化的采样方法。然而,使用shuffle=True等同于无替换的随机选择(每个时期只能对样本进行一次采样)。

您可以查看源代码以了解 Keras 如何构建 train 函数,但它不包括任何随机抽样。这在内部得到了更深层次的处理,例如通过fit_loop简单地打乱训练样本索引的函数:

if shuffle == 'batch':
    index_array = batch_shuffle(index_array, batch_size)
elif shuffle:
    np.random.shuffle(index_array)

您可以通过class_weight参数告诉 Keras 在计算损失时应该认为某些样本更重要(尽管它不影响采样方法本身):

class_weight:可选字典将类索引(整数)映射到权重(浮点)值,用于加权损失函数(仅在训练期间)。这对于告诉模型“更加关注”来自代表性不足的类的样本很有用。