Tensorflow源码分析--angle()

Tensorflow源码分析–angle()

标签(空格分隔): Tensorflow


设输入为[x + y*j]返回角度值,该角度为aegtan(x,y),注意,返回的是角度值

import tensorflow as tf
x = tf.constant([1 + 10000j])
y = tf.constant([1])
z = tf.constant([1 + 1j])
sess = tf.Session()
print(sess.run(tf.angle(x)))#这里无限接近于直角,所以为90°,所以为1.57069633
print(sess.run(tf.angle(y))) # 这里接近0°,所以值为0 
print(sess.run(tf.angle(z))) # 这里是45°所以返回的是 0.78539816

>>> [1.57069633]
[0]
[0.78539816]

源码:

def angle(input, name=None):
  r"""Returns the element-wise argument of a complex (or real) tensor.

  Given a tensor `input`, this operation returns a tensor of type `float` that
  is the argument of each element in `input` considered as a complex number.

  The elements in `input` are considered to be complex numbers of the form
  \\(a + bj\\), where *a* is the real part and *b* is the imaginary part.
  If `input` is real then *b* is zero by definition.

  The argument returned by this function is of the form \\(atan2(b, a)\\).
  If `input` is real, a tensor of all zeros is returned.

  For example:

  ```
  # tensor 'input' is [-2.25 + 4.75j, 3.25 + 5.75j]
  tf.angle(input) ==> [2.0132, 1.056]
  ```

  Args:
    input: A `Tensor`. Must be one of the following types: `float`, `double`,
      `complex64`, `complex128`.
    name: A name for the operation (optional).

  Returns:
    A `Tensor` of type `float32` or `float64`.
  """
  with ops.name_scope(name, "Angle", [input]) as name:
    if input.dtype.is_complex:
      return gen_math_ops.angle(input, Tout=input.dtype.real_dtype, name=name)
    else:
      return array_ops.zeros_like(input)

猜你喜欢

转载自blog.csdn.net/jiangzhenkang/article/details/80744554