class_docstr: Using tf.gradients to implement the backpropagation was
  inspired by the gradient-based implementation approach proposed by Ancona et al, ICLR 2018. Note
  that this package does not currently use the reveal-cancel rule for ReLu units proposed in DeepLIFT.
class_docstr_tok: ["Using","tf.gradients","to","implement","the","backpropagation","was","inspired","by","the","gradient-based","implementation","approach","proposed","by","Ancona","et","al",",","ICLR","2018",".","Note","that","this","package","does","not","currently","use","the","reveal-cancel","rule","for","ReLu","units","proposed","in","DeepLIFT","."]
docstr: Get the SHAP value computation graph for a given model output.
          
docstr_tok: ["Get","the","SHAP","value","computation","graph","for","a","given","model","output","."]
code: def phi_symbolic(self, i):
      """Get the SHAP value computation graph for a given model output."""
      if self.phi_symbolics[i] is None:
          if not tf.executing_eagerly():
  
              def anon():
                  out = (
                      self.model_output[:, i]
                      if self.multi_output
                      else self.model_output
                  )
                  return tf.gradients(out, self.model_inputs)
  
              self.phi_symbolics[
                  i
              ] = self.execute_with_overridden_gradients(anon)
          else:
  
              @tf.function
              def grad_graph(shap_rAnD):
                  phase = tf.keras.backend.learning_phase()
                  tf.keras.backend.set_learning_phase(0)
  
                  with tf.GradientTape(
                      watch_accessed_variables=False
                  ) as tape:
                      tape.watch(shap_rAnD)
                      out = self.model(shap_rAnD)
                      if self.multi_output:
                          out = out[:, i]
  
                  self._init_between_tensors(out.op, shap_rAnD)
                  x_grad = tape.gradient(out, shap_rAnD)
                  tf.keras.backend.set_learning_phase(phase)
                  return x_grad
  
              self.phi_symbolics[i] = grad_graph
  
      return self.phi_symbolics[i]
  
imports: import warnings
  import numpy
  from packaging import version
  from ...utils._exceptions import DimensionError
  from .._explainer import Explainer
  from ..tf_utils import _get_graph, _get_model_inputs, _get_model_output, _get_session
  from .deep_utils import _check_additivity
label_desc: Use image node_id 5 for calling the TFDeep obj's underlying member method code with example usage: obj.phi_symbolic(i) and returns: self, tf, x_grad