code: def _masked_loss(self, preds, targets, masks):
      losses = []
      for key in targets:
          assert (
              key in preds
          ), "for target {key} there is no prediction from the output of the model"
          loss_coef = self.config.get(f"loss_coef_{key}", 1.0)
          if self._is_discrete(key):
              loss = loss_coef * self._masked_cross_entropy_loss(
                  preds[key], targets[key], masks
              )
          else:
              loss = loss_coef * self._masked_mse_loss(
                  preds[key], targets[key], masks
              )
  
          losses.append(loss)
          self.log(f"{key}_loss", loss)
  
      return sum(losses)
  
imports: from typing import TYPE_CHECKING, Any, Dict, List, Optional, Tuple, Type, Union
  import gymnasium
  import numpy
  import tree
  from gymnasium.spaces import Box, Discrete
  from rllib_dt.dt.dt_torch_model import DTTorchModel
  from ray.rllib.models.catalog import ModelCatalog
  from ray.rllib.models.modelv2 import ModelV2
  from ray.rllib.models.torch.mingpt import configure_gpt_optimizer
  from ray.rllib.models.torch.torch_action_dist import TorchCategorical, TorchDeterministic, TorchDistributionWrapper
  from ray.rllib.policy.sample_batch import SampleBatch
  from ray.rllib.policy.torch_mixins import LearningRateSchedule
  from ray.rllib.policy.torch_policy_v2 import TorchPolicyV2
  from ray.rllib.utils.annotations import DeveloperAPI, PublicAPI, override
  from ray.rllib.utils.framework import try_import_torch
  from ray.rllib.utils.numpy import convert_to_numpy
  from ray.rllib.utils.threading import with_lock
  from ray.rllib.utils.torch_utils import apply_grad_clipping
  from ray.rllib.utils.typing import TensorShape, TensorStructType, TensorType, TrainerConfigDict
label_desc: Use image node_id 12 for calling the DTTorchPolicy obj's underlying member method code with example usage: obj._masked_loss(preds, targets, masks) and returns: sum