[英]Tensorboard and Keras Images with ImageDataGenerator
使用TensorFlow,Keras和TensorBoard时遇到问题。
我写了一个图像分类网络。 我使用Keras的ImageDataGenerator在拟合期间加载图像:
test_image_data = test_image_generator.flow_from_directory("images/test_set/buildings",
target_size=(64, 64),
batch_size=32,
class_mode='binary')
tensorboard = TensorBoard(log_dir='./log/{}'.format(NAME), embeddings_freq=1, embeddings_layer_names=['features'], embeddings_data=test_image_data)
model.fit_generator(train_image_data, validation_data=test_image_data, validation_steps=800,
steps_per_epoch=8000, epochs=10, callbacks=[tensorboard])
所以我想在TensorBoard中查找CNN对图像的处理方式。
谢谢,马文。
我不知道如何在keras中使用tensorboard回调来做到这一点。 因此,我编写了自己的keras回调。 这是一个简短的代码段,您可以轻松对其进行修改
class ImageCallback(Callback):
def __init__(self,logdir, data, n_images):
self.logdir = logdir
self.data = data
self.n_images = n_images
def set_model(self,model):
self.model = model
self.sess = K.get_session()
self.writer = tf.summary.FileWriter(logdir=self.logdir)
def on_epoch_end(self,epoch,logs={}):
output_images = tf.cast(self.model.call(self.data),dtype=tf.float32)
output_images *= 255
with tf.name_scope("predictions"):
tf.summary.image(name="output",tensor = output_iamges, max_outputs=self.n_images)
self.writer.add_summary(self.sess.run(self.summary), epoch+1)
def on_train_begin(self,logs=None):
with tf.name_scope("images"):
input_images = tf.summary.image(name="input", tensor=self.data, max_outputs=self.n_images)
self.writer.add_summary(self.sess.run(input_images))
output_images = tf.cast(self.model.call(self.data),dtype=tf.float32)
output_images *= 255
with tf.name_scope("predictions"):
tf.summary.image(name="output",tensor = output_images, max_outputs=self.n_images)
self.summary = tf.summary.merge_all(scope='predictions')
self.writer.add_summary(self.sess.run(self.summary),0)
然后,您可以在调用model.fit()
时传递此回调。 希望对您有所帮助。 让我知道,是否有更好的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.