我使用TensorFlow's Dataset API来加载和预处理图像。我想将我的预处理图像的摘要添加到Tensorboard。
建议的方法是什么?
到目前为止,我的代码看起来像这样:
def get_data():
dataset = FixedLengthRecordDataset(...)
dataset = dataset.map(dataset_parser, ...)
if is_training:
dataset = dataset.map(preprocess_for_train, ...)
# Do shuffling, batching...
return dataset
def preprocess_for_train(image, label):
# Do preprocessing...
image = tf.image.random_flip_left_right(image)
# Add summary
tf.summary.image('preprocessed_image', tf.expand_dims(image, 0))
return image, label
在preprocess_for_train
范围内,我的图片列在SUMMARIES
集合中,但在返回外部函数时它不再是图表的一部分。我认为这是因为map
使用了不同的线程,因此引用了tf.Graph
的不同实例。
由于这不起作用,我还有什么其他选项可以在Tensorboard中显示我的图像?
答案 0 :(得分:0)
我找到了一个hack,使用迭代器的输出将预处理的图像添加到Tensorboard:
train_dataset = get_data()
iterator = Iterator.from_structure(train_dataset.output_types, train_dataset.output_shapes)
# Batch consists of [image, label]
next_batch = iterator.get_next()
tf.summary.image('preprocessed_image', next_batch[0])
但是,这将在运行summary_op时第二次调用next_batch。它有助于调试图像预处理,但它不是真正训练的解决方案。此外,只能观察到完全预处理的图像,而不是中间预处理阶段。