@tf_export('math.reduce_variance')
def reduce_variance(input_tensor, axis=None, keepdims=False, name=None):
    'Computes the variance of elements across dimensions of a tensor.\n\n  Reduces `input_tensor` along the dimensions given in `axis`.\n  Unless `keepdims` is true, the rank of the tensor is reduced by 1 for each\n  entry in `axis`. If `keepdims` is true, the reduced dimensions\n  are retained with length 1.\n\n  If `axis` is None, all dimensions are reduced, and a\n  tensor with a single element is returned.\n\n  For example:\n\n  ```python\n  x = tf.constant([[1., 2.], [3., 4.]])\n  tf.reduce_variance(x)  # 1.25\n  tf.reduce_variance(x, 0)  # [1., 1.]\n  tf.reduce_variance(x, 1)  # [0.25,  0.25]\n  ```\n\n  Args:\n    input_tensor: The tensor to reduce. Should have numeric type.\n    axis: The dimensions to reduce. If `None` (the default), reduces all\n      dimensions. Must be in the range `[-rank(input_tensor),\n      rank(input_tensor))`.\n    keepdims: If true, retains reduced dimensions with length 1.\n    name: A name scope for the associated operations (optional).\n\n  Returns:\n    The reduced tensor, of the same dtype as the input_tensor.\n\n  @compatibility(numpy)\n  Equivalent to np.var\n\n  Please note that `np.var` has a `dtype` parameter that could be used to\n  specify the output type. By default this is `dtype=float64`. On the other\n  hand, `tf.reduce_variance` has an aggressive type inference from\n  `input_tensor`,\n  @end_compatibility\n  '
    name = (name if name else 'reduce_variance')
    with ops.name_scope(name):
        means = reduce_mean(input_tensor, axis=axis, keepdims=True)
        squared_deviations = gen_math_ops.square((input_tensor - means))
        return reduce_mean(squared_deviations, axis=axis, keepdims=keepdims)
Computes the variance of elements across dimensions of a tensor.

Reduces `input_tensor` along the dimensions given in `axis`.
Unless `keepdims` is true, the rank of the tensor is reduced by 1 for each
entry in `axis`. If `keepdims` is true, the reduced dimensions
are retained with length 1.

If `axis` is None, all dimensions are reduced, and a
tensor with a single element is returned.

For example:

```python
x = tf.constant([[1., 2.], [3., 4.]])
tf.reduce_variance(x)  # 1.25
tf.reduce_variance(x, 0)  # [1., 1.]
tf.reduce_variance(x, 1)  # [0.25,  0.25]
```

Args:
  input_tensor: The tensor to reduce. Should have numeric type.
  axis: The dimensions to reduce. If `None` (the default), reduces all
    dimensions. Must be in the range `[-rank(input_tensor),
    rank(input_tensor))`.
  keepdims: If true, retains reduced dimensions with length 1.
  name: A name scope for the associated operations (optional).

Returns:
  The reduced tensor, of the same dtype as the input_tensor.

@compatibility(numpy)
Equivalent to np.var

Please note that `np.var` has a `dtype` parameter that could be used to
specify the output type. By default this is `dtype=float64`. On the other
hand, `tf.reduce_variance` has an aggressive type inference from
`input_tensor`,
@end_compatibility
@tf_export('math.reduce_variance')
def reduce_variance(input_tensor, axis=None, keepdims=False, name=None):
    'Computes the variance of elements across dimensions of a tensor.\n\n  Reduces `input_tensor` along the dimensions given in `axis`.\n  Unless `keepdims` is true, the rank of the tensor is reduced by 1 for each\n  entry in `axis`. If `keepdims` is true, the reduced dimensions\n  are retained with length 1.\n\n  If `axis` is None, all dimensions are reduced, and a\n  tensor with a single element is returned.\n\n  For example:\n\n  ```python\n  x = tf.constant([[1., 2.], [3., 4.]])\n  tf.reduce_variance(x)  # 1.25\n  tf.reduce_variance(x, 0)  # [1., 1.]\n  tf.reduce_variance(x, 1)  # [0.25,  0.25]\n  ```\n\n  Args:\n    input_tensor: The tensor to reduce. Should have numeric type.\n    axis: The dimensions to reduce. If `None` (the default), reduces all\n      dimensions. Must be in the range `[-rank(input_tensor),\n      rank(input_tensor))`.\n    keepdims: If true, retains reduced dimensions with length 1.\n    name: A name scope for the associated operations (optional).\n\n  Returns:\n    The reduced tensor, of the same dtype as the input_tensor.\n\n  @compatibility(numpy)\n  Equivalent to np.var\n\n  Please note that `np.var` has a `dtype` parameter that could be used to\n  specify the output type. By default this is `dtype=float64`. On the other\n  hand, `tf.reduce_variance` has an aggressive type inference from\n  `input_tensor`,\n  @end_compatibility\n  '
    name = (name if name else 'reduce_variance')
    with ops.name_scope(name):
        means = reduce_mean(input_tensor, axis=axis, keepdims=True)
        squared_deviations = gen_math_ops.square((input_tensor - means))
        return reduce_mean(squared_deviations, axis=axis, keepdims=keepdims)