@tf_export('math.imag', v1=['math.imag', 'imag'])
@deprecation.deprecated_endpoints('imag')
@dispatch.add_dispatch_support
def imag(input, name=None):
    'Returns the imaginary part of a complex (or real) tensor.\n\n  Given a tensor `input`, this operation returns a tensor of type `float` that\n  is the imaginary part of each element in `input` considered as a complex\n  number. If `input` is real, a tensor of all zeros is returned.\n\n  For example:\n\n  ```python\n  x = tf.constant([-2.25 + 4.75j, 3.25 + 5.75j])\n  tf.imag(x)  # [4.75, 5.75]\n  ```\n\n  Args:\n    input: A `Tensor`. Must be one of the following types: `float`, `double`,\n      `complex64`, `complex128`.\n    name: A name for the operation (optional).\n\n  Returns:\n    A `Tensor` of type `float32` or `float64`.\n  '
    with ops.name_scope(name, 'Imag', [input]) as name:
        if input.dtype.is_complex:
            return gen_math_ops.imag(input, Tout=input.dtype.real_dtype, name=name)
        else:
            return array_ops.zeros_like(input)
Returns the imaginary part of a complex (or real) tensor.

Given a tensor `input`, this operation returns a tensor of type `float` that
is the imaginary part of each element in `input` considered as a complex
number. If `input` is real, a tensor of all zeros is returned.

For example:

```python
x = tf.constant([-2.25 + 4.75j, 3.25 + 5.75j])
tf.imag(x)  # [4.75, 5.75]
```

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`.
@tf_export('math.imag', v1=['math.imag', 'imag'])
@deprecation.deprecated_endpoints('imag')
@dispatch.add_dispatch_support
def imag(input, name=None):
    'Returns the imaginary part of a complex (or real) tensor.\n\n  Given a tensor `input`, this operation returns a tensor of type `float` that\n  is the imaginary part of each element in `input` considered as a complex\n  number. If `input` is real, a tensor of all zeros is returned.\n\n  For example:\n\n  ```python\n  x = tf.constant([-2.25 + 4.75j, 3.25 + 5.75j])\n  tf.imag(x)  # [4.75, 5.75]\n  ```\n\n  Args:\n    input: A `Tensor`. Must be one of the following types: `float`, `double`,\n      `complex64`, `complex128`.\n    name: A name for the operation (optional).\n\n  Returns:\n    A `Tensor` of type `float32` or `float64`.\n  '
    with ops.name_scope(name, 'Imag', [input]) as name:
        if input.dtype.is_complex:
            return gen_math_ops.imag(input, Tout=input.dtype.real_dtype, name=name)
        else:
            return array_ops.zeros_like(input)