使用Keras的损失函数计算中的非均匀惩罚

时间:2019-09-18 19:47:13

标签: tensorflow keras deep-learning

在计算Keras(或Tensorflow)的损失时,是否有一种简单的使用方法具有不均匀的惩罚? 我的意思是,假设您有5000个训练样本,它们的重要性并不相同,即使在某些情况下,我们也希望获得更准确的预测,即使是以其他几个样本的估计不准确为代价。我已经有了一些代表样本重要性的系数。

有什么方法可以在Keras或Tensorflow上实现这样的模型吗?

1 个答案:

答案 0 :(得分:0)

是的,有一种方法是在keras的fit或sample_weight函数中使用fit_generator。这将应用每个样品的重量。因此,sample_weight向量的长度应与您的训练集相同。

这是示例代码:

history = model.fit(X_train, y_train, epochs=1000, sample_weight=sample_coefficients)

来自keras documentation

  

sample_weight:训练样本的可选Numpy权重数组,用于加权损失函数(仅在训练过程中)。您可以传递长度与输入样本相同的平坦(1D)Numpy数组(权重和样本之间的1:1映射),或者对于时间数据,可以传递具有形状的2D数组(samples,sequence_length) ),以对每个样本的每个时间步施加不同的权重。在这种情况下,您应该确保在compile()中指定sample_weight_mode =“ temporal”。