fusionlab.nn.components.MultiObjectiveLoss¶
- class fusionlab.nn.components.MultiObjectiveLoss[source]¶
Bases:
Loss,NNLearnerMulti-Objective Loss layer combining quantile loss and anomaly loss [1].
This layer expects: 1.
y_true: \((B, H, O)\) 2.y_pred: \((B, H, Q, O)\), ifquantiles are used (or (B, H, 1, O) for a single quantile).
anomaly_scores: \((B, H, D)\), optional.
\[\text{Loss} = \text{QuantileLoss} + \text{AnomalyLoss}\]If
anomaly_scoresis None, only quantile loss is returned.- Parameters:
quantile_loss_fn (
Layer) – A callable implementing quantile loss, e.g.AdaptiveQuantileLoss.anomaly_loss_fn (
Layer) – A callable implementing anomaly loss, e.g.AnomalyLoss.
Notes
This layer allows multi-task learning by combining two objectives: forecasting accuracy (quantile loss) and anomaly detection (anomaly loss).
- call(`y_true`, `y_pred`, `anomaly_scores`=None,
training=False)
Compute the combined loss.
Examples
>>> from fusionlab.nn.components import ( ... MultiObjectiveLoss, ... AdaptiveQuantileLoss, ... AnomalyLoss ... ) >>> import tensorflow as tf >>> # Suppose y_true is (B, H, O), ... # and y_pred is (B, H, Q, O). >>> y_true = tf.random.normal((32, 10, 1)) >>> y_pred = tf.random.normal((32, 10, 3, 1)) >>> anomaly_scores = tf.random.normal((32, 10, 8)) >>> # Instantiate loss components >>> q_loss_fn = AdaptiveQuantileLoss([0.2, 0.5, 0.8]) >>> a_loss_fn = AnomalyLoss(weight=2.0) >>> # Combine them >>> mo_loss = MultiObjectiveLoss(q_loss_fn, a_loss_fn) >>> # Compute the combined loss >>> total_loss = mo_loss(y_true, y_pred, anomaly_scores)
See also
AdaptiveQuantileLossImplements quantile loss to handle uncertainty in predictions.
AnomalyLossComputes anomaly-based MSE for anomaly detection tasks.
References
- __init__(quantile_loss_fn, anomaly_loss_fn, anomaly_scores=None, name='MultiObjectiveLoss')[source]¶
Methods
__init__(quantile_loss_fn, anomaly_loss_fn)call(y_true, y_pred)Compute combined quantile and anomaly loss.
from_config(config)Creates a new MultiObjectiveLoss from the config dictionary.
Returns configuration dictionary, including configs of the sub-layers.
get_params([deep])Get the parameters for this learner.
help(**kwargs)load(file_path[, format])Load the learner's state from a specified file in the desired format.
save([file_path, format, overwrite, ...])Save the learner's state to a specified file in the desired format.
set_params(**params)Set the parameters of this learner.
summary()Provide a summary of the learner's parameters.
Attributes
dtype- __init__(quantile_loss_fn, anomaly_loss_fn, anomaly_scores=None, name='MultiObjectiveLoss')[source]¶
- call(y_true, y_pred)[source]¶
Compute combined quantile and anomaly loss.
- Parameters:
y_true (
tf.Tensor) – Ground truth of shape (B, H, O).y_pred (
tf.Tensor) – Predictions of shape (B, H, Q, O) (or (B, H, 1, O) if Q=1).anomaly_scores (
tf.TensororNone, optional) – Tensor of shape (B, H, D). If None, anomaly loss is omitted.training (
bool, optional) – Indicates training mode. Defaults toFalse.
- Returns:
A scalar representing the sum of quantile loss and anomaly loss (if anomaly_scores is provided).
- Return type:
tf.Tensor
- get_config()[source]¶
Returns configuration dictionary, including configs of the sub-layers.
- Returns:
Contains serialized configs of quantile_loss_fn and anomaly_loss_fn.
- Return type:
dict
- classmethod from_config(config)[source]¶
Creates a new MultiObjectiveLoss from the config dictionary.
- Parameters:
config (
dict) – Configuration dictionary with sub-layer configs.- Returns:
A new instance combining quantile and anomaly losses.
- Return type:
- help(**kwargs)¶
- my_params = MultiObjectiveLoss(quantile_loss_fn, anomaly_loss_fn, anomaly_scores=None, name='MultiObjectiveLoss')¶