当您.fit使用 KerasSequential()模型时,您可以指定一个batch_size参数。我注意到它有时是独立于实际数据集大小定义的。这是否意味着小批量是随机采样的,而不是从上到下逐片向下滚动数据集?
小批量是在 Keras 的 Sequential.fit 方法中随机抽样的吗()
数据挖掘
Python
喀拉斯
张量流
梯度下降
2021-10-03 01:40:14
2个回答
如果您设置shuffle=True为model.fit方法的参数,Keras 将在将数据集拆分为批次(源)之前对其进行洗牌,否则将按顺序处理数据集。
相关文档本身并未提及随机抽样。
Sequential注意:这一切都与模型类型与类型无关Model。OP专门谈论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:可选字典将类索引(整数)映射到权重(浮点)值,用于加权损失函数(仅在训练期间)。这对于告诉模型“更加关注”来自代表性不足的类的样本很有用。
其它你可能感兴趣的问题