@tf_export('math.count_nonzero', v1=[])
def count_nonzero_v2(input, axis=None, keepdims=None, dtype=dtypes.int64, name=None):
    'Computes number of nonzero elements across dimensions of a tensor.\n\n  Reduces `input` 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` has no entries, all dimensions are reduced, and a\n  tensor with a single element is returned.\n\n  **NOTE** Floating point comparison to zero is done by exact floating point\n  equality check.  Small values are **not** rounded to zero for purposes of\n  the nonzero check.\n\n  For example:\n\n  ```python\n  x = tf.constant([[0, 1, 0], [1, 1, 0]])\n  tf.count_nonzero(x)  # 3\n  tf.count_nonzero(x, 0)  # [1, 2, 0]\n  tf.count_nonzero(x, 1)  # [1, 2]\n  tf.count_nonzero(x, 1, keepdims=True)  # [[1], [2]]\n  tf.count_nonzero(x, [0, 1])  # 3\n  ```\n\n  **NOTE** Strings are compared against zero-length empty string `""`. Any\n  string with a size greater than zero is already considered as nonzero.\n\n  For example:\n  ```python\n  x = tf.constant(["", "a", "  ", "b", ""])\n  tf.count_nonzero(x) # 3, with "a", "  ", and "b" as nonzero strings.\n  ```\n\n  Args:\n    input: The tensor to reduce. Should be of numeric type, `bool`,\n      or `string`.\n    axis: The dimensions to reduce. If `None` (the default),\n      reduces all dimensions. Must be in the range\n      `[-rank(input), rank(input))`.\n    keepdims: If true, retains reduced dimensions with length 1.\n    dtype: The output dtype; defaults to `tf.int64`.\n    name: A name for the operation (optional).\n\n  Returns:\n    The reduced tensor (number of nonzero values).\n  '
    if (keepdims is None):
        keepdims = False
    with ops.name_scope(name, 'count_nonzero', [input]):
        input = ops.convert_to_tensor(input, name='input')
        zero = array_ops.zeros([], dtype=input.dtype)
        return cast(reduce_sum(cast(gen_math_ops.not_equal(input, zero), dtypes.int64), axis=axis, keepdims=keepdims), dtype=dtype)
Computes number of nonzero elements across dimensions of a tensor.

Reduces `input` 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` has no entries, all dimensions are reduced, and a
tensor with a single element is returned.

**NOTE** Floating point comparison to zero is done by exact floating point
equality check.  Small values are **not** rounded to zero for purposes of
the nonzero check.

For example:

```python
x = tf.constant([[0, 1, 0], [1, 1, 0]])
tf.count_nonzero(x)  # 3
tf.count_nonzero(x, 0)  # [1, 2, 0]
tf.count_nonzero(x, 1)  # [1, 2]
tf.count_nonzero(x, 1, keepdims=True)  # [[1], [2]]
tf.count_nonzero(x, [0, 1])  # 3
```

**NOTE** Strings are compared against zero-length empty string `""`. Any
string with a size greater than zero is already considered as nonzero.

For example:
```python
x = tf.constant(["", "a", "  ", "b", ""])
tf.count_nonzero(x) # 3, with "a", "  ", and "b" as nonzero strings.
```

Args:
  input: The tensor to reduce. Should be of numeric type, `bool`,
    or `string`.
  axis: The dimensions to reduce. If `None` (the default),
    reduces all dimensions. Must be in the range
    `[-rank(input), rank(input))`.
  keepdims: If true, retains reduced dimensions with length 1.
  dtype: The output dtype; defaults to `tf.int64`.
  name: A name for the operation (optional).

Returns:
  The reduced tensor (number of nonzero values).
@tf_export('math.count_nonzero', v1=[])
def count_nonzero_v2(input, axis=None, keepdims=None, dtype=dtypes.int64, name=None):
    'Computes number of nonzero elements across dimensions of a tensor.\n\n  Reduces `input` 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` has no entries, all dimensions are reduced, and a\n  tensor with a single element is returned.\n\n  **NOTE** Floating point comparison to zero is done by exact floating point\n  equality check.  Small values are **not** rounded to zero for purposes of\n  the nonzero check.\n\n  For example:\n\n  ```python\n  x = tf.constant([[0, 1, 0], [1, 1, 0]])\n  tf.count_nonzero(x)  # 3\n  tf.count_nonzero(x, 0)  # [1, 2, 0]\n  tf.count_nonzero(x, 1)  # [1, 2]\n  tf.count_nonzero(x, 1, keepdims=True)  # [[1], [2]]\n  tf.count_nonzero(x, [0, 1])  # 3\n  ```\n\n  **NOTE** Strings are compared against zero-length empty string ``. Any\n  string with a size greater than zero is already considered as nonzero.\n\n  For example:\n  ```python\n  x = tf.constant([, "a", "  ", "b", ])\n  tf.count_nonzero(x) # 3, with "a", "  ", and "b" as nonzero strings.\n  ```\n\n  Args:\n    input: The tensor to reduce. Should be of numeric type, `bool`,\n      or `string`.\n    axis: The dimensions to reduce. If `None` (the default),\n      reduces all dimensions. Must be in the range\n      `[-rank(input), rank(input))`.\n    keepdims: If true, retains reduced dimensions with length 1.\n    dtype: The output dtype; defaults to `tf.int64`.\n    name: A name for the operation (optional).\n\n  Returns:\n    The reduced tensor (number of nonzero values).\n  '
    if (keepdims is None):
        keepdims = False
    with ops.name_scope(name, 'count_nonzero', [input]):
        input = ops.convert_to_tensor(input, name='input')
        zero = array_ops.zeros([], dtype=input.dtype)
        return cast(reduce_sum(cast(gen_math_ops.not_equal(input, zero), dtypes.int64), axis=axis, keepdims=keepdims), dtype=dtype)