class_docstr: Loss carried out lazily to avoid unnecessary communication
docstr: Computes and returns the loss
  
  loss = 2 * (dz^2).mean() - 0.5 + log(2)
docstr_tok: ["Computes","and","returns","the","loss","loss","=","2","*","(","dz^2",")",".mean","(",")","-","0.5","+","log","(","2",")"]
code: def get(self, dst=None):
      """
      Computes and returns the loss
  
      loss = 2 * (dz^2).mean() - 0.5 + log(2)
      """
      dz_mean_square = (
          self.ctx.mpc.sshe.mpc_square(
              ctx=self.ctx,
              group=self.group,
              rank_a=self.rank_a,
              rank_b=self.rank_b,
              x=self.dz,
              cipher_a=self.ctx.mpc.option(
                  self.phe_cipher, self.rank_a
              ),
          )
          .mean()
          .get_plain_text(group=self.group, dst=dst)
      )
      if dst is not None and dst != self.ctx.rank:
          return None
      return 2 * dz_mean_square - 0.5 + torch.log(torch.tensor(2.0))
  
imports: import typing
  import torch
  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 2 for calling the SSHESSHELogisticRegressionLossLayerLazyLoss obj's underlying member method code with example usage: obj.get(dst) and returns: unknown, None