为 Keras 加权训练数据

Weighing Training Data for Keras

问题

我想用相关性可变的数据训练 keras2 神经网络(theano 后端)。这意味着一些样本不如其他样本重要。他们对培训的影响应小于其他人。但是我不能简单地完全忽略它们(我有一个进入 Conv1D 层的时间序列)。

问题

如何告诉 keras 在训练过程中对某些训练数据样本的权重小于其他样本?

想法

我正在考虑定义一个自己的 loss function,它将 y_truey_predy_weight 作为第三个参数。类似于:

def mean_squared_error_weighted(y_true, y_pred, y_weight):
    return y_weight * K.mean(K.square(y_pred - y_true), axis=-1)

但是我如何让 keras 知道第三个参数呢?

keras 模型的 fit 函数接受一个可选参数 sample_weight,它完全符合您的要求。更具体地来自 keras 文档:

sample_weight: Optional Numpy array of weights for the training samples, used for weighting the loss function (during training only).