class_docstr: Wrapper class for computing different metrics on different tasks in the context of multitask learning.
  
  In multitask learning the different tasks requires different metrics to be evaluated. This wrapper allows
  for easy evaluation in such cases by supporting multiple predictions and targets through a dictionary.
  Note that only metrics where the signature of `update` follows the standard `preds, target` is supported.
  
  Args:
      task_metrics:
          Dictionary associating each task to a Metric or a MetricCollection. The keys of the dictionary represent the
          names of the tasks, and the values represent the metrics to use for each task.
  
  Raises:
      TypeError:
          If argument `task_metrics` is not an dictionary
      TypeError:
          If not all values in the `task_metrics` dictionary is instances of `Metric` or `MetricCollection`
  
  Example (with a single metric per class):
       >>> import torch
       >>> from torchmetrics.wrappers import MultitaskWrapper
       >>> from torchmetrics.regression import MeanSquaredError
       >>> from torchmetrics.classification import BinaryAccuracy
       >>>
       >>> classification_target = torch.tensor([0, 1, 0])
       >>> regression_target = torch.tensor([2.5, 5.0, 4.0])
       >>> targets = {"Classification": classification_target, "Regression": regression_target}
       >>>
       >>> classification_preds = torch.tensor([0, 0, 1])
       >>> regression_preds = torch.tensor([3.0, 5.0, 2.5])
       >>> preds = {"Classification": classification_preds, "Regression": regression_preds}
       >>>
       >>> metrics = MultitaskWrapper({
       ...     "Classification": BinaryAccuracy(),
       ...     "Regression": MeanSquaredError()
       ... })
       >>> metrics.update(preds, targets)
       >>> metrics.compute()
       {'Classification': tensor(0.3333), 'Regression': tensor(0.8333)}
  
  Example (with several metrics per task):
       >>> import torch
       >>> from torchmetrics import MetricCollection
       >>> from torchmetrics.wrappers import MultitaskWrapper
       >>> from torchmetrics.regression import MeanSquaredError, MeanAbsoluteError
       >>> from torchmetrics.classification import BinaryAccuracy, BinaryF1Score
       >>>
       >>> classification_target = torch.tensor([0, 1, 0])
       >>> regression_target = torch.tensor([2.5, 5.0, 4.0])
       >>> targets = {"Classification": classification_target, "Regression": regression_target}
       >>>
       >>> classification_preds = torch.tensor([0, 0, 1])
       >>> regression_preds = torch.tensor([3.0, 5.0, 2.5])
       >>> preds = {"Classification": classification_preds, "Regression": regression_preds}
       >>>
       >>> metrics = MultitaskWrapper({
       ...     "Classification": MetricCollection(BinaryAccuracy(), BinaryF1Score()),
       ...     "Regression": MetricCollection(MeanSquaredError(), MeanAbsoluteError())
       ... })
       >>> metrics.update(preds, targets)
       >>> metrics.compute()
       {'Classification': {'BinaryAccuracy': tensor(0.3333), 'BinaryF1Score': tensor(0.)},
        'Regression': {'MeanSquaredError': tensor(0.8333), 'MeanAbsoluteError': tensor(0.6667)}}
class_docstr_tok: ["Wrapper","class","for","computing","different","metrics","on","different","tasks","in","the","context","of","multitask","learning",".","In","multitask","learning","the","different","tasks","requires","different","metrics","to","be","evaluated",".","This","wrapper","allows","for","easy","evaluation","in","such","cases","by","supporting","multiple","predictions","and","targets","through","a","dictionary",".","Note","that","only","metrics","where","the","signature","of","`","update","`","follows","the","standard","`","preds",",","target","`","is","supported",".","Args",":","task_metrics",":","Dictionary","associating","each","task","to","a","Metric","or","a","MetricCollection",".","The","keys","of","the","dictionary","represent","the","names","of","the","tasks",",","and","the","values","represent","the","metrics","to","use","for","each","task",".","Raises",":","TypeError",":","If","argument","`","task_metrics","`","is","not","an","dictionary","TypeError",":","If","not","all","values","in","the","`","task_metrics","`","dictionary","is","instances","of","`","Metric","`","or","`","MetricCollection","`","Example","(","with","a","single","metric","per","class",")",":",">",">",">","import","torch",">",">",">","from","torchmetrics.wrappers","import","MultitaskWrapper",">",">",">","from","torchmetrics.regression","import","MeanSquaredError",">",">",">","from","torchmetrics.classification","import","BinaryAccuracy",">",">",">",">",">",">","classification_target","=","torch.tensor","(","[","0",",","1",",","0","]",")",">",">",">","regression_target","=","torch.tensor","(","[","2.5",",","5.0",",","4.0","]",")",">",">",">","targets","=","{","``","Classification","''",":","classification_target",",","``","Regression","''",":","regression_target","}",">",">",">",">",">",">","classification_preds","=","torch.tensor","(","[","0",",","0",",","1","]",")",">",">",">","regression_preds","=","torch.tensor","(","[","3.0",",","5.0",",","2.5","]",")",">",">",">","preds","=","{","``","Classification","''",":","classification_preds",",","``","Regression","''",":","regression_preds","}",">",">",">",">",">",">","metrics","=","MultitaskWrapper","(","{","...","``","Classification","''",":","BinaryAccuracy","(",")",",","...","``","Regression","''",":","MeanSquaredError","(",")","...","}",")",">",">",">","metrics.update","(","preds",",","targets",")",">",">",">","metrics.compute","(",")","{","'Classification","'",":","tensor","(","0.3333",")",",","'Regression","'",":","tensor","(","0.8333",")","}","Example","(","with","several","metrics","per","task",")",":",">",">",">","import","torch",">",">",">","from","torchmetrics","import","MetricCollection",">",">",">","from","torchmetrics.wrappers","import","MultitaskWrapper",">",">",">","from","torchmetrics.regression","import","MeanSquaredError",",","MeanAbsoluteError",">",">",">","from","torchmetrics.classification","import","BinaryAccuracy",",","BinaryF1Score",">",">",">",">",">",">","classification_target","=","torch.tensor","(","[","0",",","1",",","0","]",")",">",">",">","regression_target","=","torch.tensor","(","[","2.5",",","5.0",",","4.0","]",")",">",">",">","targets","=","{","``","Classification","''",":","classification_target",",","``","Regression","''",":","regression_target","}",">",">",">",">",">",">","classification_preds","=","torch.tensor","(","[","0",",","0",",","1","]",")",">",">",">","regression_preds","=","torch.tensor","(","[","3.0",",","5.0",",","2.5","]",")",">",">",">","preds","=","{","``","Classification","''",":","classification_preds",",","``","Regression","''",":","regression_preds","}",">",">",">",">",">",">","metrics","=","MultitaskWrapper","(","{","...","``","Classification","''",":","MetricCollection","(","BinaryAccuracy","(",")",",","BinaryF1Score","(",")",")",",","...","``","Regression","''",":","MetricCollection","(","MeanSquaredError","(",")",",","MeanAbsoluteError","(",")",")","...","}",")",">",">",">","metrics.update","(","preds",",","targets",")",">",">",">","metrics.compute","(",")","{","'Classification","'",":","{","'BinaryAccuracy","'",":","tensor","(","0.3333",")",",","'BinaryF1Score","'",":","tensor","(","0",".",")","}",",","'Regression","'",":","{","'MeanSquaredError","'",":","tensor","(","0.8333",")",",","'MeanAbsoluteError","'",":","tensor","(","0.6667",")","}","}"]
docstr: Iterate over task metrics.
docstr_tok: ["Iterate","over","task","metrics","."]
code: def values(self) -> Iterable[nn.Module]:
      """Iterate over task metrics."""
      return self.task_metrics.values()
  
file_path: torchmetrics/src/torchmetrics/wrappers/multitask.py
imports: from typing import Any, Dict, Iterable, Optional, Sequence, Tuple, Union
  from torch import Tensor, nn
  from torchmetrics.collections import MetricCollection
  from torchmetrics.metric import Metric
  from torchmetrics.utilities.imports import _MATPLOTLIB_AVAILABLE
  from torchmetrics.utilities.plot import _AX_TYPE, _PLOT_OUT_TYPE
  from torchmetrics.wrappers.abstract import WrapperMetric
label_desc: Use image node_id 4 for calling the MultitaskWrapper obj's underlying member method code with example usage: obj.values() and returns: self