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: Adapts strategy's model for all experiences.
docstr_tok: ["Adapts","strategy","'s","model","for","all","experiences","."]
code: def model_adaptation(self, model=None):
      """Adapts strategy's model for all experiences."""
      if model is None:
          model = self.model
  
      for experience in self._experiences:
          for module in model.modules():
              if isinstance(module, DynamicModule):
                  module.adaptation(experience)
          model = model.to(self.device)
      return model
  
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 4 for calling the JointTraining obj's underlying member method code with example usage: obj.model_adaptation(model) and returns: model