code: def saliency_map(output, input, name="saliency_map"):
      
      max_outp = tf.reduce_max(output, 1)
      saliency_op = tf.gradients(max_outp, input)[:][0]
      return tf.identity(saliency_op, name=name)
docs: Produce a saliency map as described in the paper:
      `Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps
      <https://arxiv.org/abs/1312.6034>`_.
      The saliency map is the gradient of the max element in output w.r.t input.
  
      Returns:
          tf.Tensor: the saliency map. Has the same shape as input.