Machine learning 您是否可以设计一个自定义的损耗函数,以便早期时间点比后期时间点获得更大的权重?

Machine learning 您是否可以设计一个自定义的损耗函数,以便早期时间点比后期时间点获得更大的权重?,machine-learning,keras,time-series,Machine Learning,Keras,Time Series,我正在训练一个神经网络(NN)来预测时间序列的演化。X_列为N*M,其中N是示例数,M是初始条件数。y_序列是NxP,其中P是因变量演化的时间点数量。我想在训练期间给y_train中具有较早时间点的列赋予更大的权重,以便NN更有可能正确预测较早时间点。有没有办法让keras做到这一点? 谢谢您可以随时创建自定义损失函数 def custom_loss(target_y, predicted_y): losses = tf.abs(target_y - predicted_y) # we

我正在训练一个神经网络(NN)来预测时间序列的演化。X_列为N*M,其中N是示例数,M是初始条件数。y_序列是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'])

您始终可以创建自定义损失函数

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'])