Debugging 有没有办法将Tensorflow中的中间输出保存到文件中?

Debugging 有没有办法将Tensorflow中的中间输出保存到文件中?,debugging,save,tensorflow,Debugging,Save,Tensorflow,我有一个conv-net,可以做很多事情 推理代码如下所示: conv0_feature_count = 2 with tf.variable_scope('conv0') as scope: kernel = _variable_with_weight_decay('weights', shape=[5, 5, 1, conv0_feature_count], stddev=5e-2, wd=0.0) conv = tf.nn.conv2d(images, kernel, [1

我有一个conv-net,可以做很多事情

推理代码如下所示:

conv0_feature_count = 2
with tf.variable_scope('conv0') as scope:
    kernel = _variable_with_weight_decay('weights', shape=[5, 5, 1, conv0_feature_count], stddev=5e-2, wd=0.0)
    conv = tf.nn.conv2d(images, kernel, [1, 1, 1, 1], padding='SAME')
    biases = _variable_on_cpu('biases', [conv0_feature_count], tf.constant_initializer(0.0))
    bias = tf.nn.bias_add(conv, biases)
    conv0 = tf.nn.relu(bias, name=scope.name)
等等,然后是最大池,等等


我希望能够将conv0保存到一个文件以供检查。我知道tf.Print会在控制台中打印值,但它是一个大张量。打印该值毫无意义。

TensorFlow没有任何公共运算符可以将张量写入文件,但如果您查看的实现(尤其是该方法),您会发现它包括一个op实现,该op可以将一个或多个张量写入文件,它用于编写检查点

注意事项:以下解决方案依赖于内部实现,可能会发生更改,但适用于TensorFlow r0.10rc0

下面的代码片段将张量
t
写入名为
“/tmp/t.ckpt”
的文件:

要读取该值,可以使用
tf.train.NewCheckpointReader()
如下所示:

reader = tf.train.NewCheckpointReader("/tmp/t.ckpt")
print reader.get_tensor("t")  # ==> "array([[6]], dtype=int32)"

你知道有没有增加编剧的计划吗?否则,我可以添加pr并将其发送到GitHub回购。这对调试非常有用。我不知道有什么具体的计划,尽管目前正在修改
tf.train.Saver
(以使用更有效的检查点格式),因此可能会在这项工作上实现。欢迎功能请求!使用image\u summary如何?
tf.image\u summary()
仅限于序列化表示图像批次的4-D张量。原则上,概要协议缓冲区可以扩展以支持任意张量数据,这也是一个值得的特性请求。现在可能还可以。我可以重塑为4级张量,然后重塑为可视化。谢谢
reader = tf.train.NewCheckpointReader("/tmp/t.ckpt")
print reader.get_tensor("t")  # ==> "array([[6]], dtype=int32)"