Missed TensorFlow World? Check out the recap. Learn more

tf.debugging.assert_near

TensorFlow 1 version View source on GitHub

Assert the condition x and y are close element-wise.

Aliases:

tf.debugging.assert_near(
    x,
    y,
    rtol=None,
    atol=None,
    message=None,
    summarize=None,
    name=None
)

This Op checks that x[i] - y[i] < atol + rtol * tf.abs(y[i]) holds for every pair of (possibly broadcast) elements of x and y. If both x and y are empty, this is trivially satisfied.

If any elements of x and y are not close, message, as well as the first summarize entries of x and y are printed, and InvalidArgumentError is raised.

The default atol and rtol is 10 * eps, where eps is the smallest representable positive number such that 1 + eps != 1. This is about 1.2e-6 in 32bit, 2.22e-15 in 64bit, and 0.00977 in 16bit. See numpy.finfo.

Args:

  • x: Float or complex Tensor.
  • y: Float or complex Tensor, same dtype as and broadcastable to x.
  • rtol: Tensor. Same dtype as, and broadcastable to, x. The relative tolerance. Default is 10 * eps.
  • atol: Tensor. Same dtype as, and broadcastable to, x. The absolute tolerance. Default is 10 * eps.
  • message: A string to prefix to the default message.
  • summarize: Print this many entries of each tensor.
  • name: A name for this operation (optional). Defaults to "assert_near".

Returns:

Op that raises InvalidArgumentError if x and y are not close enough. This can be used with tf.control_dependencies inside of tf.functions to block followup computation until the check has executed.

Raises:

  • InvalidArgumentError: if the check can be performed immediately and x != y is False for any pair of elements in x and y. The check can be performed immediately during eager execution or if x and y are statically known.

Eager Compatibility

returns None

Numpy Compatibility

Similar to numpy.assert_allclose, except tolerance depends on data type. This is due to the fact that TensorFlow is often used with 32bit, 64bit, and even 16bit data.