class_docstr: A node in grad_tree. A GradNode contains the op_optree and the grad_op_tree
  at this location of the grad_tree, and it also has pointers to the left and
  right child in the grad_tree.
class_docstr_tok: ["A","node","in","grad_tree",".","A","GradNode","contains","the","op_optree","and","the","grad_op_tree","at","this","location","of","the","grad_tree",",","and","it","also","has","pointers","to","the","left","and","right","child","in","the","grad_tree","."]
docstr: Perform cleanup on object deletion.
docstr_tok: ["Perform","cleanup","on","object","deletion","."]
code: def cleanup(self):
      """
      Perform cleanup on object deletion.
      """
      self.op_tree = None
      self.grad_op_tree = None
      self.ad = None
  
      if self.left is not None:
          self.left.cleanup()
      self.left = None
  
      if self.right is not None:
          self.right.cleanup()
      self.right = None
  
imports: from __future__ import division
  from builtins import object, zip
  from neon.backends.backend import OpTreeNode, Tensor
  import numpy
  from functools import wraps
label_desc: Use image node_id 3 for calling the GradNode obj's underlying member method code with example usage: obj.cleanup() without return types