首页 > 解决方案 > 使用 Keras 计算损失函数中的非均匀惩罚

问题描述

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

有没有办法在 Keras 或 Tensorflow 上实现这样的模型?

标签: tensorflowkerasdeep-learning

解决方案


是的,有一种方法是在kerassample_weight的拟合或功能中使用。fit_generator这将应用每个样本的重量。因此,sample_weight 向量应该与您的训练集具有相同的长度。

这是示例代码:

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

来自 keras文档

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


推荐阅读