code: def __init__(
      self,
      ctx: Context,
      in_features_a,
      in_features_b,
      out_features,
      rank_a,
      rank_b,
      group,
      encoder,
      wa_init_fn,
      wb_init_fn,
      precision_bits=None,
      cipher_options=None,
  ):
      self.ctx = ctx
      self.wa = ctx.mpc.init_tensor(
          shape=(in_features_a, out_features),
          init_func=wa_init_fn,
          src=rank_a,
      )
      self.wb = ctx.mpc.init_tensor(
          shape=(in_features_b, out_features),
          init_func=wb_init_fn,
          src=rank_b,
      )
      self.phe_cipher = ctx.cipher.phe.setup(options=cipher_options)
      self.rank_a = rank_a
      self.rank_b = rank_b
      self.group = group
      self.precision_bits = precision_bits
      self.encoder = encoder
  
imports: import typing
  from typing import Any, Iterator
  import torch
  from torch.nn import Parameter
  from fate.arch.context import Context
  from fate.arch.protocol.mpc.common.encoding import IgnoreEncodings
  from fate.arch.protocol.mpc.mpc import FixedPointEncoder
  from fate.arch.trace import auto_trace
label_desc: Use image node_id 1 to create a new SSHENeuralNetworkAggregator object  with example: obj = SSHENeuralNetworkAggregator(ctx, in_features_a, in_features_b, out_features, rank_a, rank_b, group, encoder, wa_init_fn, wb_init_fn, precision_bits, cipher_options)