code: def __init__(
      self,
      top_model: t.nn.Module,
      bottom_model: t.nn.Module = None,
      agglayer_arg: Union[
          StdAggLayerArgument, FedPassArgument, SSHEArgument
      ] = None,
      top_arg: TopModelStrategyArguments = None,
      ctx: Context = None,
  ):
      super(HeteroNNModelGuest, self).__init__()
      # cached variables
      if top_model is None:
          raise RuntimeError(
              "guest needs a top model to compute loss, but no top model provided"
          )
      assert isinstance(
          top_model, t.nn.Module
      ), "top model should be a torch nn.Module"
      self._top_model = top_model
      self._agg_layer = None
      if bottom_model is not None:
          assert isinstance(
              bottom_model, t.nn.Module
          ), "bottom model should be a torch nn.Module"
          self._bottom_model = bottom_model
  
      self._bottom_fw = None  # for backward usage
      self._agg_fw_rg = None  # for backward usage
      # ctx
      self._ctx = None
      # internal mode
      self._guest_direct_backward = True
      # set top strategy
      self._top_strategy = None
      # top additional model
      self._top_add_model = None
      self.setup(
          ctx=ctx,
          agglayer_arg=agglayer_arg,
          top_arg=top_arg,
          bottom_arg=None,
      )
  
imports: import torch
  import torch
  from fate.arch import Context
  from fate.ml.nn.model_zoo.agg_layer.agg_layer import AggLayerGuest, AggLayerHost
  from fate.ml.nn.model_zoo.agg_layer.fedpass.agg_layer import FedPassAggLayerGuest, FedPassAggLayerHost, get_model
  from fate.ml.nn.model_zoo.agg_layer.sshe.agg_layer import SSHEAggLayerHost, SSHEAggLayerGuest
  from typing import Any, Dict, List, Union, Callable, Literal
  from dataclasses import dataclass, fields
  from enum import Enum
  import logging
  from torch import device
label_desc: Use image node_id 1 to create a new HeteroNNModelGuest object from inherited base classes: HeteroNNModelBase with example: obj = HeteroNNModelGuest(top_model, bottom_model, agglayer_arg, top_arg, ctx)