为Keras准备训练数据的权重

5

问题

我想用变量相关数据训练一个keras2神经网络(theano后端)。这意味着一些样本比其他样本不太重要。它们对训练的影响应该比其他样本小。但是我不能完全省略它们(我的时间序列将进入Conv1D层)。

问题

如何告诉keras在训练过程中权衡一些训练数据,使其比其他数据更轻?

想法

我正在考虑定义一个自己的损失函数,它将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 知道这个第三个参数呢?

1个回答

11

在Keras模型的fit函数中,有一个可选参数sample_weight,其正好满足您的需求。具体来说,根据Keras文档:

sample_weight: 用于训练样本权重的可选NumPy数组,仅用于加权损失函数(仅在训练期间使用)。


太好了。不知怎么错过了这个。 - ascripter
在Tensorflow 2.0中,使用tape.gradient时是否有类似于weigh samples的等效方法? - AleB
1
更新后的fit函数链接:https://keras.io/api/models/model_training_apis/#fit-method - Shadi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接