class_docstr: Joint training on the entire stream.
  
  JointTraining performs joint training (also called offline training) on
  the entire stream of data. This means that it is not a continual
  learning strategy but it can be used as an "offline" upper bound for
  them.
  
  .. warnings also::
      Currently :py:class:`JointTraining` adapts its own dataset.
      Please check that the plugins you are using do not implement
      :py:meth:`adapt_trainin_dataset`. Otherwise, they are incompatible
      with :py:class:`JointTraining`.
class_docstr_tok: ["Joint","training","on","the","entire","stream",".","JointTraining","performs","joint","training","(","also","called","offline","training",")","on","the","entire","stream","of","data",".","This","means","that","it","is","not","a","continual","learning","strategy","but","it","can","be","used","as","an","``","offline","''","upper","bound","for","them",".","..","warnings","also",":",":","Currently",":","py",":","class",":","`","JointTraining","`","adapts","its","own","dataset",".","Please","check","that","the","plugins","you","are","using","do","not","implement",":","py",":","meth",":","`","adapt_trainin_dataset","`",".","Otherwise",",","they","are","incompatible","with",":","py",":","class",":","`","JointTraining","`","."]
docstr: Concatenates all the datastream.
docstr_tok: ["Concatenates","all","the","datastream","."]
code: def train_dataset_adaptation(self, **kwargs):
      """Concatenates all the datastream."""
      self.adapted_dataset = self._experiences[0].dataset
      if len(self._experiences) > 1:
          for exp in self._experiences[1:]:
              cat_data = concat_datasets(
                  [self.adapted_dataset, exp.dataset]
              )
              self.adapted_dataset = cat_data
      assert self.adapted_dataset is not None
      self.adapted_dataset = self.adapted_dataset.train()
  
file_path: avalanche/avalanche/training/supervised/joint_training.py
imports: from typing import Callable, Iterable, List, Optional, Sequence, TypeVar, Union
  import torch
  from torch.nn import Module
  from torch.optim import Optimizer
  from avalanche.benchmarks import DatasetExperience
  from avalanche.benchmarks.utils.utils import concat_datasets
  from avalanche.core import BasePlugin
  from avalanche.training.plugins.evaluation import EvaluationPlugin, default_evaluator
  from avalanche.training.templates import SupervisedTemplate
  from avalanche.models import DynamicModule
  from avalanche.training.templates.base import _experiences_parameter_as_iterable, _group_experiences_by_stream
label_desc: Use image node_id 3 for calling the JointTraining obj's underlying member method code with example usage: obj.train_dataset_adaptation() without return types