Tensorflow训练期间的Slim调试

时间:2017-01-26 07:48:45

标签: python machine-learning tensorflow neural-network deep-learning

我主要关注初始模型的this。假设我想在每个训练循环中打印批处理中使用的图像数据,即我想打印“图像”的值。每个训练迭代的变量 '在不同的标签集上微调模型。'代码,我怎么做这个,因为会话实际上是在slim.training.train函数内创建的,因此我不能在这里做sess.run([images])吗?

3 个答案:

答案 0 :(得分:0)

所以你想要想象培训图像?那么,您可以在任何有句柄的地方添加图像摘要,例如:在“在Flowers数据集上训练模型”下:

images, _, labels = load_batch(dataset)
tf.summary.image("input/images", images)

答案 1 :(得分:0)

使用以下脚本,您可以看到您的图像: summaries.add(tf.summary.image('image_tensor,max_images=15,name='images'))

tf.summary.image是最简单的方法,因为提到的会话操作是在slim.learning.train内创建的。虽然interactivesession()可以在代码中间使用,但它可能会扰乱由slim创建的会话!

答案 2 :(得分:0)

两个先例的答案都非常适合精确地可视化图像。

但是,如果您有兴趣打印任何其他变量值甚至图像的像素强度,您可以在调用slim.learning.train之前使用以下代码:

    variable = tf.get_default_graph().get_tensor_by_name("variable_name")
    train_tensor = tf.Print(train_tensor, [variable], text_to_print_before_value, summarize=number_of_values_to_print_if_array)

第一行按名称获取变量(例如,您可以通过tensorboard或打印slim.get_model_variables()来获取变量)。

第二行在计算train_tensor时打印它并返回train_tensor本身,以便将此Print节点添加到图形中。

从Mobilenet模型打印变量的示例:

    beta = tf.get_default_graph().get_tensor_by_name("MobilenetV1/Conv2d_12_pointwise/BatchNorm/beta:0")
    train_tensor = tf.Print(train_tensor, [beta], "beta ", summarize=256)