Spec-Zone.ru › TensorFlow 2.3

tf.debugging.enable_check_numerics

Включить проверку числовых значений тензоров в режиме eager/graph.

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения дополнительной информации.

tf.compat.v1.debugging.enable_check_numerics

tf.debugging.enable_check_numerics(
    stack_height_limit=30, path_length_limit=50
)

Механизм проверки числовых значений будет вызывать ошибку при выполнении TensorFlow в режиме eager или graph, как только выходной тензор операции будет содержать бесконечность или NaN.

Этот метод идемпотентен. Его многократное вызов эквивалентно его однократному вызову.

Этот метод действует только на потоке, в котором он был вызван.

Когда выходной тензор с плавающей точкой операции содержит бесконечность или NaN, будет выброшено исключение tf.errors.InvalidArgumentError с сообщением об ошибке, содержащим следующую информацию:

  • Тип операции, которая сгенерировала тензор с неверными числовыми значениями.
  • Тип данных (dtype) тензора.
  • Форма тензора (в той степени, в которой она известна в момент выполнения eager или построения графа).
  • Имя содержащего графа (если доступно).
  • (Только режим графа): трассировка стека создания внутриграфической операции, с ограничением высоты стека и длины пути для наглядности. Фреймы стека, принадлежащие коду пользователя (в отличие от внутреннего кода tensorflow), выделены стрелкой ("->").
  • (Только режим eager): количество элементов тензора, нарушающих условие, равное бесконечности и NaN соответственно.

После включения механизм проверки числовых значений может быть отключен с помощью tf.debugging.disable_check_numerics().

Пример использования:

  1. Перехват бесконечности во время выполнения графа tf.function:
import tensorflow as tf

tf.debugging.enable_check_numerics()

@tf.function
def square_log_x_plus_1(x):
  v = tf.math.log(x + 1)
  return tf.math.square(v)

x = -1.0

# When the following line runs, a function graph will be compiled
# from the Python function `square_log_x_plus_1()`. Due to the
# `enable_check_numerics()` call above, the graph will contain
# numerics checking ops that will run during the function graph's
# execution. The function call generates an -infinity when the Log
# (logarithm) op operates on the output tensor of the Add op.
# The program errors out at this line, printing an error message.
y = square_log_x_plus_1(x)
z = -y
  1. Перехват NaN во время выполнения eager:
import numpy as np
import tensorflow as tf

tf.debugging.enable_check_numerics()

x = np.array([[0.0, -1.0], [4.0, 3.0]])

# The following line executes the Sqrt op eagerly. Due to the negative
# element in the input array, a NaN is generated. Due to the
# `enable_check_numerics()` call above, the program errors immediately
# at this line, printing an error message.
y = tf.math.sqrt(x)
z = tf.matmul(y, y)
Примечание: Если ваш код выполняется на TPUs, убедитесь, что вы вызываете tf.config.set_soft_device_placement(True) до вызова tf.debugging.enable_check_numerics(), так как этот API использует автоматическую компиляцию вне TPU. Например:
tf.config.set_soft_device_placement(True)
tf.debugging.enable_check_numerics()

resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu='')
strategy = tf.distribute.TPUStrategy(resolver)
with strategy.scope():
  # ...
Аргументы
stack_height_limit Ограничение высоты трассировки стека. Применимо только к операциям в tf.function (графиках).
path_length_limit Ограничение пути файла, включенного в трассировку стека. Применимо только к операциям в tf.function (графиках).

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r2.3/api_docs/python/tf/debugging/enable_check_numerics

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API