如何调试TensorFlow

如何调试张量流覆盖

尝试一种更快更简单的方法来管理Python包和解决依赖关系。使用ActiveState的Python 3.9并使用所需的包和依赖项构建自己的运行时。Acti188bet金宝搏备用veState平台的命令行界面,State Tool将自动为您解析依赖项,以确保您的Python环境不会因安装不兼容的依赖项而被破坏。

免费开始在ActiveState平台上创建帐户188bet金宝搏备用或者用你的GitHub账号登录。

如何调试TensorFlow

TensorFlow是一个用于复杂数值计算的开源Python库。它也是一种用于表示神经网络的计算图的语言,可能需要对不总是按照预期运行的代码进行调试和错误修正。

如何调试张量流图像

TensorFlow基于图的功能与它所使用的许多深度学习算法的随机性相结合,使得调试TensorFlow具有挑战性。某些传统的调试语言方法不适用于TensorFlow。

例如,插入打印语句有助于调试命令语言,但由于TensorFlow的图形结构,它很可能会忽略打印语句。

不同类型的bug

TensorFlow中的调试可以参考代码中的bug,以及没有收敛或没有产生目标值的模型。

这篇文章提供了建议和最佳实践来避免这两种问题通过使用:

  • 尽可能减少调试需要的方法
  • TensorFlow库中包含的函数和调试工具

TensorFlow调试方法

调试TensorFlow有四种主要方法:

  • 在Session.run中打印值
  • 使用tf。打印操作
  • 增加日志
  • 使用TensorFlow调试器和API函数

通过在Session.run中打印值调试TensorFlow

在会话环境中创建TensorFlow对象,并在打印语句中运行它们。这是一种简单、安全的求张量值的方法。

Session对象封装了在其中执行和计算其他对象的环境。封装会话可以避免会话中可能的错误影响会话外的功能。这样可以简化调试。例如:

tensorflow 2中的Eager执行是自动的。x #和需要被禁用实例:tf.compat.v1.disable_eager_execution() #创建一个图:a = tf.constant (4.0) b = tf.constant (5.0) c = a * b #启动一个会话的图:税= tf.compat.v1.Session() #评估张量' c '在这个会话:打印(sess.run (c))

图1所示。打印session.run()值。

如何调试张量流图1

使用tf调试TensorFlow。打印操作

Python的替代品打印tf.print在图形执行过程中打印张量值。

tf.print ()是一个TensorFlow操作符,用于在调试时将指定的输入打印到指定的输出流,其中包括潜在的错误。Tf.print()可以帮助在执行期间跟踪值。例如:

Import tensorflow as tf Import sys张量= tf.range(8)#打印“[0 1 2 ... 7]”到sys.stderr:tf.print(tensor, output_stream=sys.stderr)

通过增加日志量来调试TensorFlow

日志文件可以是潜在调试信息的来源。首先导入所需的库:导入日志

通常,大多数TensorFlow日志记录工具支持不同级别的严重性(级别)。TensorFlow支持以下五个标准的严重级别,按严重程度排序:调试、错误,致命,信息,*警告

为了更好地利用日志,可以在python控制台中输入以下代码来增加TensorFlow日志的详细程度:

TF_CPP_VMODULE=segment=2 convert_graph=2 convert_nodes=2 trt_engine_op=2

要返回TensorFlow记录器实例,请输入:

tf.get_logger ()

使用张量调试器和API函数调试张量流

TensorFlow调试器转储如下调试信息:

  • 张量流函数结构,如:
    • 用@tf.function修饰的Python函数的编译
    • op类型
    • 名(如果可用)
    • 上下文
    • 输入和输出张量,以及相关的堆栈跟踪
  • 执行TensorFlow操作(ops)和函数及其堆栈跟踪、操作类型、名称(如果可用)和上下文。这取决于tensor_debug_mode论点,输出张量的值或更简洁的张量值摘要将被丢弃。
  • TensorFlow程序执行过程中涉及的Python源文件的快照。

你可以实现TensorFlow调试,并通过在TensorFlow应用程序的顶部添加一行代码将信息发送到指定的位置:

tf.debugging.experishing.enable_dump_debug_info('/ tmp / my-tfdbg-dump-dump-dumbs')# TensorFlow应用代码:导入tensorflow作为tf ....

图2:TensorFlow调试:

如何调试张量流图2

TensorFlow调试可以通过以下命令关闭:

disable_dump_debug_info ()

启用TensorFlow数值检查

tf.debugging.enable_check_numerics当一个张量包含遇到。此方法仅在调用它的线程上有效。

例如:

导入tensorflow作为tf导入numpy作为np#启用数字检查:tf.debugging.enable_check_numerics () x = np.array ([[0.0, -1.0], [7.0, 8.0]])输入数组中的负元素将生成NaN错误。因为启用了数字检查#,程序将抛出一个错误并打印一个错误消息:y = tf.math.sqrt (x)

图3。数字检查输出:

如何调试张量流图3

数字检查机制可以禁用:

tf.debugging.disable_check_numerics ()

用以下方法修饰Python函数@tf.function为错误检测

tf.function是一个装饰器函数,它将Python代码转换为一个可调用的Tensorflow图形函数。在这个例子中tf.functionDecorator将' add '转换为一个可调用函数:

@tf.functiondef add(a, b): return a + b add(tf.ones([2, 2]), tf.ones([2, 2]))

图4。' add '被tf作为函数调用。函数并返回a + b:

如何调试张量流图4

利用TensorFlow tf.debugging API函数

根据每个函数的规格,使用API检查bug、错误和True/False条件。

例如,要检查张量的nan值和无穷大值,您可以使用tf.debugging.check_numerics功能。运行时,函数返回一个InvalidArgument如果张量有任何nan和无穷大值,则存在误差:

tf.debug .check_numerics(张量,message, name=无

有关tf.debugging API函数的完整列表,请参阅API文档


Python包管理的现代解决方案——尝试ActiveState的平台

Acti188bet金宝搏备用veState Platform是一个基于云的Python构建工具。它提供了构建自动化和漏洞修复:

  • Python语言核心,包括Python 2.7和Python 3.5+
  • Python包及其依赖项,包括:
  • (即传递依赖关系。,依赖的依赖)
  • 链接的C和Fortran库,因此您可以构建数据科学包
  • Windows、Linux和macOS的操作系统级依赖
  • 依赖关系(即共享。OpenSSL)
  • 在几分钟内找到、修复和自动重建安全版本的Python包,如Django和环境

Python 3.9 Web GUI截图

运行中的Python包管理

了解ActiveState平台如何帮助您管理Python环境的依赖项。188bet金宝搏备用只需运行以下命令来安装Python 3.9和我们的包管理器State Tool:

窗户

powershell -Command "& $([scriptblock]::Create((New-Object Net.WebClient).DownloadString('https://platform.activestate.com/dl/cli/install.ps1')) -activate-default ActiveState-Labs/Python-3.9Beta"

Linux

——activate-default ActiveState-Labs/Python-3.9Beta .sh <(curl -q https://platform.activestate.com/dl/cli/install.sh)——activate-default ActiveState-Labs/Python-3.9Beta

现在可以运行状态install 。了解更多关于如何使用状态工具来管理Python环境。

让我们知道你的经验ActiveState的社区论坛。

雷米米