Skip to main content
 首页 » 编程设计

python之调试 Tensorflow 卡在全局变量初始化上

2025年02月15日23duanxz

我正在寻求有关如何调试 Tensorflow 挂起时遇到的问题的建议。

我有一个多层 CNN,它卡在 session 中运行的 global_variables_initializer() 上。我在控制台输出中没有收到任何错误或消息。

有没有一种智能的方法来调试 Tensorflow 在挂起时遇到的问题,而不是反复注释掉生成图形的代码行,然后重新运行以查看它挂起的位置。 TensorFlow 调试器 (tfdbg) 有帮助吗?我有哪些选择?

理想情况下,最好只是中断当前执行并查看一些堆栈或类似的东西以查看执行在初始化期间挂起的位置。

我目前在 Jupiter notebook 中使用 Python 3 运行 Tensorflow 0.12.1。

请您参考如下方法:

我设法解决了这个问题。 @amo-ej1 提出的在常规文件中运行的提示是朝着正确方向迈出的一步。这表明 tensorflow 进程正在使用 SIGKILL 自行终止并返回错误代码 137。

我尝试了 Tensorflow Debugger tfdbg 但这没有提供任何进一步的细节,因为问题是图表没有初始化。我开始认为图形结构不正确,所以我使用以下方法转储了图形结构: tf.summary.FileWriter('./logs/traing_graph', graph)

然后我用Tensorboard检查了转出目录的结果汇总图结构数据,发现全连接层的张量维度是错误的,宽度为1500万!??! (错误)

事实证明,图形的一个可配置参数不正确。它从错误的寻址先前的 tf.shape 类型属性中错误地选择了第 2 层张量形状的维度,并且它爆炸了图形的维度。

/var/log/system.log 中没有 OOM 错误消息,所以我不确定为什么图形初始化导致 python tensorflow 脚本进程终止。

我固定了图表的维度,图表初始化工作得很好!

我的首要提示是在初始化和训练之前使用 Tensorboard 可视化您的图表,以快速检查您编码的结果图表结构是否符合您的预期。您可能会节省很多时间! :-)