Tensorboard调试器图表消失,只剩下队列,为什么?

Hak*_*hin 5 python debugging tensorflow

我正在尝试使用tensorboard调试器来调试我的应用程序.我看到图形如何慢慢构建,但是当训练开始时我只看到CPU上的队列节点和图形的其余部分,整个GPU部分不再可见.最简单的解释几张照片.

在我运行第一个session.run(var.assign(data))来初始化数据之前: 在此输入图像描述 在此输入图像描述 然后我逐步通过vars的初始化: 在此输入图像描述 最后,当我用sess.run(training_op)开始训练时: 在此输入图像描述 为什么我最后只看到FIFO队列而不是整个图?

看起来GPU正在从调试过程中被切断,但我不确定为什么,因为肯定会被使用,因为我已经编写了自定义操作,当我打印时我得到输出,但这是一个麻烦的调试方式.

我不能发布一个MVC,因为代码库是庞大而复杂的,但原则是:

  1. FIFO队列
    • q = tf.FIFOQueue(queue_size, [tf.float32, tf.float32, tf.int32, tf.float32, tf.float32, tf.float32, tf.float32, tf.float32, tf.float32, tf.float32, tf.float32])
  2. 图形积累
    • def make_var(self, name, shape, initializer=None, regularizer=None, trainable=True): return tf.get_variable(name, shape, initializer=initializer, regularizer=regularizer, trainable=trainable)
  3. 变量初始化
    • session.run(var.assign(data))
  4. 第二个线程开始提供队列
    • t = threading.Thread(target=load_and_enqueue, args=(sess, self.net, data_layer, coord_train, iters_train))
  5. 训练循环
    • 第5点和第6点都显示在这里:

格式化虚拟文本

for epoch in range(epochs):
    coord_train.run = True
    coord_val.run = True
    t = threading.Thread(target=load_and_enqueue, args=(sess, self.net, data_layer, coord_train, iters_train))
    t.start()
    t_val = threading.Thread(target=load_and_enqueue_val, args=(sess, self.net, data_layer, coord_val, iters_val))
    print("Epoch: %d / %d" % (epoch, epochs))
    for iter_train in range(iters_train):

        timer.tic()
        loss_summary, loss_cls_summary, loss_vertex_summary, loss_pose_summary, loss_regu_summary, loss_value, loss_cls_value, loss_vertex_value, loss_pose_value, loss_regu_value, lr, _ \
            = sess.run([loss_op, loss_cls_op, loss_vertex_op, loss_pose_op, loss_regu_op, loss, loss_cls, loss_vertex, loss_pose, loss_regu, learning_rate, train_op])
Run Code Online (Sandbox Code Playgroud)

如果我可以提供更多信息以及调试此问题有什么用处,请告诉我.