【发布时间】:2017-09-13 12:48:45
【问题描述】:
在 Keras(使用 TensorFlow 作为后端)中,我正在构建一个模型,该模型正在处理具有高度不平衡类(标签)的巨大数据集。为了能够运行训练过程,我创建了一个生成器,它将数据块提供给fit_generator。
根据fit_generator 的文档,生成器的输出可以是元组(inputs, targets) 或元组(inputs, targets, sample_weights)。考虑到这一点,这里有几个问题:
- 我的理解是
class_weight考虑整个数据集的所有类的权重,而sample_weights考虑每个单独块的所有类的权重 由生成器创建。那是对的吗?如果没有,有人可以详细说明一下吗? - 是否有必要将
class_weight提供给fit_generator,然后将sample_weights作为每个块的输出?如果是,那为什么?如果没有,那么哪个更好? - 如果我应该为每个块提供
sample_weights,如果特定块中缺少某些类,我该如何映射权重?让我举个例子。在我的整个数据集中,我有 7 个可能的类(标签)。因为这些类高度不平衡,所以当我创建较小的数据块作为fit_generator的输出时,特定块中缺少一些类。我应该如何为这些块创建sample_weights?
【问题讨论】:
-
也许文档字符串会向您澄清一些事情:github.com/fchollet/keras/blob/…
标签: tensorflow keras