Функция debugging.enable_check_numerics
Функция debugging.enable_check_numerics включает глобальный режим проверки числовой стабильности. Первым параметром передается сообщение об ошибке, которое будет добавлено к тексту исключения при обнаружении NaN или Inf. Вторым параметром можно передать функцию-фильтр, которая решает, для каких операций выполнять проверку. Третьим параметром задается максимальное количество проверяемых тензоров, хранимых в памяти.
После включения TensorFlow будет анализировать каждый тензор, проходящий через граф, и выбрасывать исключение InvalidArgumentError, если в нем появятся значения NaN или Inf. Это помогает быстро находить источник числовых ошибок в модели.
Синтаксис
tf.debugging.enable_check_numerics(
message="",
check_numerics_callback=None,
stack_height_limit=0
)
Пример
Давайте включим проверку числовой стабильности и выполним операцию деления на ноль, чтобы получить значение Inf:
import tensorflow as tf
tf.debugging.enable_check_numerics("numerics check")
t = tf.constant([1.0, 2.0, 3.0])
res = t / tf.constant([1.0, 0.0, 3.0])
print(res)
Результат выполнения кода:
InvalidArgumentError: numerics check : Tensor had Inf values
Пример
Давайте отключим проверку числовой стабильности и повторим ту же операцию:
import tensorflow as tf
tf.debugging.enable_check_numerics("numerics check")
tf.debugging.disable_check_numerics()
t = tf.constant([1.0, 2.0, 3.0])
res = t / tf.constant([1.0, 0.0, 3.0])
print(res)
Результат выполнения кода:
tf.Tensor([ 1. inf 1.], shape=(3,), dtype=float32)
Пример
Давайте передадим функцию-фильтр, которая проверяет только операции с именем div:
import tensorflow as tf
def filter_fn(op_type, op_name, attrs):
return "div" in op_name.lower()
tf.debugging.enable_check_numerics(
message="division check",
check_numerics_callback=filter_fn
)
t = tf.constant([1.0, 2.0, 3.0])
res = t / tf.constant([1.0, 0.0, 3.0])
print(res)
Результат выполнения кода:
InvalidArgumentError: division check : Tensor had Inf values
Смотрите также
-
функцию
debugging.disable_check_numerics,
которая отключает проверку числовой стабильности -
функцию
debugging.assert_equal,
которая проверяет равенство двух тензоров -
функцию
debugging.assert_near,
которая проверяет близость значений тензоров -
функцию
debugging.assert_type,
которая проверяет тип данных тензора