class_docstr: SecureNN(server_0, server_1, server_2, prime_factory, odd_factory, **kwargs)
  
  Implementation of SecureNN from
  `Wagh et al <https://eprint.iacr.org/2018/442/>`_.
class_docstr_tok: ["SecureNN","(","server_0",",","server_1",",","server_2",",","prime_factory",",","odd_factory",",","*","*","kwargs",")","Implementation","of","SecureNN","from","`","Wagh","et","al","<","https",":","\/\/eprint.iacr.org\/2018\/442\/",">","`","_","."]
code: def __init__(
      self,
      server_0: Optional[Player] = None,
      server_1: Optional[Player] = None,
      server_2: Optional[Player] = None,
      prime_factory: Optional[AbstractFactory] = None,
      odd_factory: Optional[AbstractFactory] = None,
      **kwargs,
  ) -> None:
      server_0 = server_0 or get_config().get_player("server0")
      server_1 = server_1 or get_config().get_player("server1")
      server_2 = (
          server_2
          or get_config().get_player("server2")
          or get_config().get_player("crypto-producer")
      )
  
      assert server_0 is not None
      assert server_1 is not None
      assert server_2 is not None
  
      super(SecureNN, self).__init__(
          server_0=server_0,
          server_1=server_1,
          triple_source=server_2,
          **kwargs,
      )
      self.server_2 = server_2
  
      if odd_factory is None:
          if self.tensor_factory is int64factory:
              odd_factory = oddint64_factory
          else:
              odd_factory = self.tensor_factory
  
      if prime_factory is None:
          prime = 107
          assert prime > math.ceil(
              math.log2(self.tensor_factory.modulus)
          )
          prime_factory = native_factory(
              self.tensor_factory.native_type, prime
          )
  
      self.prime_factory = prime_factory
      self.odd_factory = odd_factory
      assert (
          self.prime_factory.native_type
          == self.tensor_factory.native_type
      )
      assert (
          self.odd_factory.native_type
          == self.tensor_factory.native_type
      )
  
imports: from __future__ import absolute_import
  import math
  import random
  import sys
  from typing import Optional
  from typing import Tuple
  import numpy
  import tensorflow
  from tf_encrypted.config import get_config
  from tf_encrypted.player import Player
  from tf_encrypted.protocol import memoize
  from tf_encrypted.protocol.pond import Pond
  from tf_encrypted.protocol.pond import PondMaskedTensor
  from tf_encrypted.protocol.pond import PondPrivateTensor
  from tf_encrypted.protocol.pond import PondPublicTensor
  from tf_encrypted.protocol.pond import PondTensor
  from tf_encrypted.protocol.pond import _type
  from tf_encrypted.protocol.protocol import nodes
  from tf_encrypted.protocol.securenn.odd_tensor import oddint64_factory
  from tf_encrypted.tensor import int64factory
  from tf_encrypted.tensor import native_factory
  from tf_encrypted.tensor.factory import AbstractFactory
  from tf_encrypted.tensor.factory import AbstractTensor
label_desc: Use image node_id 1 to create a new SecureNN object from inherited base classes: Pond with example: obj = SecureNN(server_0, server_1, server_2, prime_factory, odd_factory)