如何调试Tensorflow网络权重/输出/每个输入样本的成本?

时间:2016-04-11 16:08:11

标签: python machine-learning tensorflow deep-learning

我制作了一个张量流模型。 但由于某种原因,总会得到NAN损失。 我想知道如何调试和查看每个张量中的每个值。

例如: -

 out = tf.add(tf.matmul(outputs[-1], _weights['out']), _biases['out'])

在运行期间,我想查看此张量中的值并查看出错的位置。 我在post

中找到了类似的内容

他们做这样的事情

out = tf.add(tf.matmul(outputs[-1], _weights['out']), _biases['out'])
out = tf.Print(out, [out], message="This is softmax Output: ")

但这就像这样放弃和放弃

I tensorflow/core/kernels/logging_ops.cc:79] This is softmax Output: [2.148583e-08 5.9002307e-08 -9.90654e-08...]
I tensorflow/core/kernels/logging_ops.cc:79] This is softmax Output: [nan nan nan...]
I tensorflow/core/kernels/logging_ops.cc:79] This is softmax Output: [nan nan nan...]
Iter 64, Minibatch Loss= nan, Training Accuracy= 0.01562
Testing Accuracy: 0.0
I tensorflow/core/kernels/logging_ops.cc:79] This is softmax Output: [nan nan nan...]
I tensorflow/core/kernels/logging_ops.cc:79] This is softmax Output: [nan nan nan...]
I tensorflow/core/kernels/logging_ops.cc:79] This is softmax Output: [nan nan nan...]
I tensorflow/core/kernels/logging_ops.cc:79] This is softmax Output: [nan nan nan...]

这不是真的那么有用,因为我无法查看所有的值。 我想知道是否有逐步调试选项?

2 个答案:

答案 0 :(得分:1)

TensorFlow现在有一个名为 tfdbg 的内置调试器。它暴露了图中的中间张量以及图形结构,这样可以使您更容易调试此类问题。与print ops相比,它需要更少的代码更改,并提供更好的图形覆盖率。

请查看主HEAD的文档/教程: https://github.com/tensorflow/tensorflow/blob/master/tensorflow/g3doc/how_tos/debugger/index.md

答案 1 :(得分:0)

如果您传递tf.Print()可选参数,

summarize将显示更多结果。例如summarize=100将显示张量的前100个元素。

API Reference

(当询问问题时,不确定该功能是否存在)