              if not is_summary and not self._is_predict:
                  self._compile_model()
              self._output_summary()
  
      def _get_all_sub_models(self, model, models=None):
          """ For a given model, return all sub-models that occur (recursively) as children.
  
          Parameters
          ----------
          model: :class:`keras.models.Model`
              A Keras model to scan for sub models
          models: `None`
              Do not provide this parameter. It is used for recursion
  
          Returns
          -------
          list
              A list of all :class:`keras.models.Model`s found within the given model. The provided
              model will always be returned in the first position
          """
          if models is None:
              models = [model]
          else:
              models.append(model)
          for layer in model.layers:
              if isinstance(layer, KModel):
                  self._get_all_sub_models(layer, models=models)
          return models
  
      def _update_legacy_models(self):
          """ Load weights from legacy split models into new unified model, archiving old model files
          to a new folder. """
          if self._legacy_mapping() is None:
              return
 
</s> remove     def _freeze_weights(self):
        """ If freeze has been selected in the cli arguments, then freeze those models indicated
        in the plugin's configuration. """
        if not self._args.freeze_weights:
            logger.debug("Freeze weights deselected. Not freezing")
            return

        to_freeze = self.config.get("freeze_layers")  # Standardized config for freezing weights
        to_freeze = to_freeze if to_freeze else ["encoder"]  # No plugin config
        for layer in self._get_all_sub_models(self._model):
            if layer.name in to_freeze:
                logger.info("Freezing weights for '%s' in model '%s'", layer.name, self.name)
                layer.trainable = False
                to_freeze.remove(layer.name)
        if to_freeze:
            logger.warning("The following layers were set to be frozen but do not exist in the "
                           "model: %s", to_freeze)

 </s> add  </s> remove #: lib/cli/args.py:911 lib/cli/args.py:923 lib/cli/args.py:948
#: lib/cli/args.py:958
 </s> add #: lib/cli/args.py:911 lib/cli/args.py:923 lib/cli/args.py:939
#: lib/cli/args.py:964 lib/cli/args.py:974 </s> remove         for model in self._get_all_sub_models(self._model):
 </s> add         for model in _get_all_sub_models(self._model): </s> remove         return {
            "effmpeg": {
                "input": {
                    "extract": "filename",
                    "gen-vid": "dir",
                    "get-fps": "filename",
                    "get-info": "filename",
                    "mux-audio": "filename",
                    "rescale": "filename",
                    "rotate": "filename",
                    "slice": "filename"},
                "output": {
                    "extract": "dir",
                    "gen-vid": "savefilename",
                    "get-fps": "nothing",
                    "get-info": "nothing",
                    "mux-audio": "savefilename",
                    "rescale": "savefilename",
                    "rotate": "savefilename",
                    "slice": "savefilename"}
                }
            }
 </s> add         return dict(effmpeg=dict(input={"extract": "filename",
                                        "gen-vid": "dir",
                                        "get-fps": "filename",
                                        "get-info": "filename",
                                        "mux-audio": "filename",
                                        "rescale": "filename",
                                        "rotate": "filename",
                                        "slice": "filename"},
                                 output={"extract": "dir",
                                         "gen-vid": "savefilename",
                                         "get-fps": "nothing",
                                         "get-info": "nothing",
                                         "mux-audio": "savefilename",
                                         "rescale": "savefilename",
                                         "rotate": "savefilename",
                                         "slice": "savefilename"}))
              if not is_summary and not self._is_predict:
                  self._compile_model()
              self._output_summary()
  

























      def _update_legacy_models(self):
          """ Load weights from legacy split models into new unified model, archiving old model files
          to a new folder. """
          if self._legacy_mapping() is None:
              return
keep keep keep keep replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace replace keep keep keep keep keep
 Training - Load Weights
  - Enable the loading of previously trained encoders for new models. 
plugins/train/model/_base.py