您能否设计一个自定义损失函数,使早期时间点比后期时间点获得更大的权重?



我正在训练一个神经网络(NN(来预测时间序列的演变。X_train是 N*M,其中 N 是样本数,M 是初始条件数。y_train是NxP,其中P是因变量演变的时间点数。我想在训练期间为y_train中时间点较早的列赋予更大的权重,以便 NN 更有可能正确预测较早的时间点。有没有办法用 keras 做到这一点? 谢谢

您可以随时创建自定义损失函数

def custom_loss(target_y, predicted_y):
losses = tf.abs(target_y - predicted_y) # we are modifying the Mean Absolute Error (MAE)
weights = tf.range(1, 0, delta=-1/P) # you can customize your weights, this is just an example
return tf.reduce_mean(losses * weights)
model = create_model(...)
model.compile(optimizer='adam', loss=custom_loss, metrics=['mae'])

最新更新