啟用從 TensorFlow 程序轉儲調試信息。
用法
tf.debugging.experimental.enable_dump_debug_info(
dump_root, tensor_debug_mode=DEFAULT_TENSOR_DEBUG_MODE,
circular_buffer_size=1000, op_regex=None, tensor_dtypes=None
)
參數
-
dump_root
將寫入轉儲信息的目錄路徑。 -
tensor_debug_mode
張量值的調試模式,作為字符串。當前支持的選項有:- "NO_TENSOR":(默認)僅跟蹤所有已執行操作的輸出張量(包括那些在 Python 級別即刻執行或作為 TensorFlow 圖的一部分執行的操作)和函數,而不從張量的值中提取任何信息。
- "CURT_HEALTH":對於每個floating-dtype張量(例如,dtypes的張量,如
float32
,float64
和bfloat16
),提取一個二進製位,指示它是否包含任何-infinity、+infinity或NaN。 - "CONCISE_HEALTH":對於每個 floating-dtype 張量,提取總元素計數,以及 -infinity、+infinity 和 NaN 元素的計數。
- "FULL_HEALTH":對於每個 floating-dtype 張量,提取 dtype、rank(維數)、總元素計數以及 -infinity、+infinity 和 NaN 元素的計數。
- "SHAPE":對於每個張量(不考慮 dtype),提取其 dtype、rank、總元素數和形狀。
-
circular_buffer_size
執行事件的循環緩衝區的大小。這些循環緩衝區旨在減少調試轉儲的開銷。它們保存有關即刻執行操作和tf.function
s 以及在tf.function
s 內計算的張量值的跟蹤的最新調試事件。僅當調用正確的刷新方法時才將它們寫入文件係統(請參見下麵的返回值說明)。預計為整數。如果 -
op_regex
僅從與正則表達式匹配的操作類型的張量中轉儲數據(通過 Python 的re.match()
)。 "Op type" 指的是 TensorFlow 操作的名稱(例如,"MatMul"、"LogSoftmax"),它們可能在 TensorFlow 函數中重複。它確實不是指的是函數中唯一的節點名稱(例如,"dense/MatMul"、"dense_1/MatMul_1")。- 示例 1:僅從 MatMul 和 Relu ops
op_regex="^(MatMul|Relu)$"
轉儲張量數據。 - 示例 2:轉儲除 Relu 之外的所有操作的張量:
op_regex="(?!^Relu$)"
。此過濾器與tensor_dtypes
以邏輯 AND 關係運行。
- 示例 1:僅從 MatMul 和 Relu ops
-
tensor_dtypes
僅從指定 dtypes 的張量中轉儲數據。此可選參數可以采用以下任何格式:- 的列表或元組
DType
可以轉換為的對象或字符串DType
對象通過tf.as_dtype()
.例子:tensor_dtype=[tf.float32, tf.float64]
,tensor_dtype=["float32", "float64"]
,tensor_dtypes=(tf.int32, tf.bool)
,tensor_dtypes=("int32", "bool")
- 一個可調用的,需要一個
DType
參數並返回一個 Pythonboolean
指示是否將 dtype 包含在數據轉儲中。例子:tensor_dtype=lambda dtype:dtype.is_integer
。此過濾器與op_regex
以邏輯 AND 關係運行。
- 的列表或元組
返回
-
轉儲回調使用的 DebugEventsWriter 實例。調用者可以使用其刷新方法,包括
FlushNonExecutionFiles()
和FlushExecutionFiles()
。
調試信息被轉儲到指定為 dump_root
的文件係統上的目錄中。
調試器 UI 可以提取轉儲的調試信息。
轉儲目錄中的文件包含以下信息:
- TensorFlow 函數構造(例如,用 @tf.function 修飾的 Python 函數的編譯)、操作類型、名稱(如果可用)、上下文、輸入和輸出張量以及相關的堆棧跟蹤。
- TensorFlow 操作 (ops) 和函數的執行及其堆棧跟蹤、操作類型、名稱(如果可用)和上下文。此外,根據
tensor_debug_mode
參數的值(參見下麵的 Args 部分),輸出張量的值或更簡潔的張量值摘要將被轉儲。 - 執行 TensorFlow 程序所涉及的 Python 源文件的快照。
啟用後,可以使用同一 Python 命名空間下的相應 disable_dump_debug_info()
方法禁用轉儲。使用相同的dump_root
多次調用此方法是冪等的。使用不同的 tensor_debug_mode
多次調用此方法會導致 ValueError
。使用不同的 circular_buffer_size
多次調用此方法會導致 ValueError
。使用不同的 dump_root
調用此方法會取消 previously-enabled dump_root
。
使用示例:
tf.debugging.experimental.enable_dump_debug_info('/tmp/my-tfdbg-dumps')
# Code to build, train and run your TensorFlow model...
注意:如果您的代碼在 TPU 上運行,請務必在調用 tf.debugging.experimental.enable_dump_debug_info()
之前調用 tf.config.set_soft_device_placement(True)
,因為此 API 在 TPU 上使用自動外部編譯。例如:
tf.config.set_soft_device_placement(True)
tf.debugging.experimental.enable_dump_debug_info(
logdir, tensor_debug_mode="FULL_HEALTH")
resolver = tf.distribute.cluster_resolver.TPUClusterResolver(tpu='')
strategy = tf.distribute.TPUStrategy(resolver)
with strategy.scope():
# ...
相關用法
- Python tf.debugging.enable_check_numerics用法及代碼示例
- Python tf.debugging.assert_type用法及代碼示例
- Python tf.debugging.check_numerics用法及代碼示例
- Python tf.debugging.Assert用法及代碼示例
- Python tf.debugging.set_log_device_placement用法及代碼示例
- Python tf.debugging.assert_shapes用法及代碼示例
- Python tf.device用法及代碼示例
- Python tf.distribute.OneDeviceStrategy.experimental_distribute_values_from_function用法及代碼示例
- Python tf.data.Dataset.take_while用法及代碼示例
- Python tf.data.experimental.RandomDataset.group_by_window用法及代碼示例
- Python tf.data.TFRecordDataset.filter用法及代碼示例
- Python tf.data.TextLineDataset.reduce用法及代碼示例
- Python tf.data.TextLineDataset.with_options用法及代碼示例
- Python tf.data.experimental.SqlDataset.enumerate用法及代碼示例
- Python tf.data.TextLineDataset.as_numpy_iterator用法及代碼示例
- Python tf.data.experimental.make_saveable_from_iterator用法及代碼示例
- Python tf.distribute.TPUStrategy用法及代碼示例
- Python tf.data.TextLineDataset.random用法及代碼示例
- Python tf.data.FixedLengthRecordDataset.repeat用法及代碼示例
- Python tf.data.TFRecordDataset.random用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.debugging.experimental.enable_dump_debug_info。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。