class_docstr: Abstract implementation of encrypted tensor type. Every subclass of `CrypTensor`
  must implement the methods defined here. The actual tensor data should live in
  an instance attribute called `_tensor`. When implemented, the `CrypTensor`
  provides a full autograd implementation to the user.
class_docstr_tok: ["Abstract","implementation","of","encrypted","tensor","type",".","Every","subclass","of","`","CrypTensor","`","must","implement","the","methods","defined","here",".","The","actual","tensor","data","should","live","in","an","instance","attribute","called","`","_tensor","`",".","When","implemented",",","the","`","CrypTensor","`","provides","a","full","autograd","implementation","to","the","user","."]
docstr: Adds :attr:`tensor` to this :attr:`self`.
  
  Args:
      tensor: can be a torch tensor or a CrypTensor.
  
  The shapes of :attr:`self` and :attr:`tensor` must be
  `broadcastable`_.
  
  For a scalar `tensor`,
  
  .. math::
      \text{{out_i}} = \text{{input_i}} + \text{{tensor}}
  
  .. _broadcastable:
      https://pytorch.org/docs/stable/notes/broadcasting.html#broadcasting-semantics
docstr_tok: ["Adds",":","attr",":","`","tensor","`","to","this",":","attr",":","`","self","`",".","Args",":","tensor",":","can","be","a","torch","tensor","or","a","CrypTensor",".","The","shapes","of",":","attr",":","`","self","`","and",":","attr",":","`","tensor","`","must","be","`","broadcastable","`","_",".","For","a","scalar","`","tensor","`",",","..","math",":",":","\\text","{","{","out_i","}","}","=","\\text","{","{","input_i","}","}","+","\\text","{","{","tensor","}","}","..","_broadcastable",":","https",":","\/\/pytorch.org\/docs\/stable\/notes\/broadcasting.html","#","broadcasting-semantics"]
code: def add(self, tensor):
      r"""Adds :attr:`tensor` to this :attr:`self`.
  
      Args:
          tensor: can be a torch tensor or a CrypTensor.
  
      The shapes of :attr:`self` and :attr:`tensor` must be
      `broadcastable`_.
  
      For a scalar `tensor`,
  
      .. math::
          \text{{out_i}} = \text{{input_i}} + \text{{tensor}}
  
      .. _broadcastable:
          https://pytorch.org/docs/stable/notes/broadcasting.html#broadcasting-semantics
      """
      raise NotImplementedError("add is not implemented")
  
imports: from contextlib import contextmanager
  import torch
  from .debug import register_validation
  from .gradients import AutogradContext, BaseAutogradContext, get_grad_fn
  from .None import functions
label_desc: Use image node_id 45 for calling the CrypTensor obj's underlying member method code with example usage: obj.add(tensor) without return types