class_docstr: Compute the phase of the complex input in radian, resulting in a float tensor
  
  Includes option to use approximate phase algorithm this will return the same
  results as the PhaseTflite layer (the tflite compatible layer).
  
  Args:
      approx_atan_accuracy (`int`): if `None` will use tf.math.angle() to
          calculate the phase accurately. If an `int` this is the number of
          iterations to calculate the approximate atan() using a tflite compatible
          method. the higher the number the more accurate e.g.
          approx_atan_accuracy=29000. You may want to experiment with adjusting
          this number: trading off accuracy with inference speed.
  
  Example:
      ::
  
          input_shape = (2048, 1)  # mono signal
          model = Sequential()
          model.add(kapre.STFT(n_fft=1024, hop_length=512, input_shape=input_shape))
          model.add(Phase())
          # now the shape is (batch, n_frame=3, n_freq=513, ch=1) and dtype is float
class_docstr_tok: ["Compute","the","phase","of","the","complex","input","in","radian",",","resulting","in","a","float","tensor","Includes","option","to","use","approximate","phase","algorithm","this","will","return","the","same","results","as","the","PhaseTflite","layer","(","the","tflite","compatible","layer",")",".","Args",":","approx_atan_accuracy","(","`","int","`",")",":","if","`","None","`","will","use","tf.math.angle","(",")","to","calculate","the","phase","accurately",".","If","an","`","int","`","this","is","the","number","of","iterations","to","calculate","the","approximate","atan","(",")","using","a","tflite","compatible","method",".","the","higher","the","number","the","more","accurate","e.g",".","approx_atan_accuracy=29000",".","You","may","want","to","experiment","with","adjusting","this","number",":","trading","off","accuracy","with","inference","speed",".","Example",":",":",":","input_shape","=","(","2048",",","1",")","#","mono","signal","model","=","Sequential","(",")","model.add","(","kapre.STFT","(","n_fft=1024",",","hop_length=512",",","input_shape=input_shape",")",")","model.add","(","Phase","(",")",")","#","now","the","shape","is","(","batch",",","n_frame=3",",","n_freq=513",",","ch=1",")","and","dtype","is","float"]
docstr: Args:
      x (complex `Tensor`): input complex tensor
  
  Returns:
      (float `Tensor`): phase of `x` (Radian)
docstr_tok: ["Args",":","x","(","complex","`","Tensor","`",")",":","input","complex","tensor","Returns",":","(","float","`","Tensor","`",")",":","phase","of","`","x","`","(","Radian",")"]
code: def call(self, x):
      """
      Args:
          x (complex `Tensor`): input complex tensor
  
      Returns:
          (float `Tensor`): phase of `x` (Radian)
      """
      if self.approx_atan_accuracy:
          return atan2_tflite(
              tf.math.imag(x),
              tf.math.real(x),
              n=self.approx_atan_accuracy,
          )
  
      return tf.math.angle(x)
  
imports: import tensorflow
  from tensorflow.keras import backend
  from tensorflow.keras.layers import Layer
  from .None import backend
  from .backend import _CH_FIRST_STR, _CH_LAST_STR, _CH_DEFAULT_STR
  from .tflite_compatible_stft import atan2_tflite
label_desc: Use image node_id 2 for calling the Phase obj's underlying member method code with example usage: obj.call(x) and returns: tf, atan2_tflite