为 Keras 加权训练数据
Weighing Training Data for Keras
问题
我想用相关性可变的数据训练 keras2 神经网络(theano 后端)。这意味着一些样本不如其他样本重要。他们对培训的影响应小于其他人。但是我不能简单地完全忽略它们(我有一个进入 Conv1D
层的时间序列)。
问题
如何告诉 keras 在训练过程中对某些训练数据样本的权重小于其他样本?
想法
我正在考虑定义一个自己的 loss function,它将 y_true
、y_pred
和 y_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).
问题
我想用相关性可变的数据训练 keras2 神经网络(theano 后端)。这意味着一些样本不如其他样本重要。他们对培训的影响应小于其他人。但是我不能简单地完全忽略它们(我有一个进入 Conv1D
层的时间序列)。
问题
如何告诉 keras 在训练过程中对某些训练数据样本的权重小于其他样本?
想法
我正在考虑定义一个自己的 loss function,它将 y_true
、y_pred
和 y_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).