Spaces:
Sleeping
Sleeping
# NOTE that this code is not mine and was taken from https://becominghuman.ai/logging-in-tensorboard-with-pytorch-or-any-other-library-c549163dee9e | |
import io | |
import numpy as np | |
from PIL import Image | |
import tensorflow as tf | |
# run tensorboard --logdir="logs/" on command line to get up the tensorboard afterwards | |
class Tensorboard: | |
def __init__(self, logdir): | |
self.writer = tf.summary.FileWriter(logdir) | |
def close(self): | |
self.writer.close() | |
def log_scalar(self, tag, value, global_step): | |
summary = tf.Summary() | |
summary.value.add(tag=tag, simple_value=value) | |
self.writer.add_summary(summary, global_step=global_step) | |
self.writer.flush() | |
def log_histogram(self, tag, values, global_step, bins): | |
counts, bin_edges = np.histogram(values, bins=bins) | |
hist = tf.HistogramProto() | |
hist.min = float(np.min(values)) | |
hist.max = float(np.max(values)) | |
hist.num = int(np.prod(values.shape)) | |
hist.sum = float(np.sum(values)) | |
hist.sum_squares = float(np.sum(values ** 2)) | |
bin_edges = bin_edges[1:] | |
for edge in bin_edges: | |
hist.bucket_limit.append(edge) | |
for c in counts: | |
hist.bucket.append(c) | |
summary = tf.Summary() | |
summary.value.add(tag=tag, histo=hist) | |
self.writer.add_summary(summary, global_step=global_step) | |
self.writer.flush() | |
def log_image(self, tag, img, global_step): | |
s = io.BytesIO() | |
Image.fromarray(img).save(s, format='png') | |
img_summary = tf.Summary.Image(encoded_image_string=s.getvalue(), | |
height=img.shape[0], | |
width=img.shape[1]) | |
summary = tf.Summary() | |
summary.value.add(tag=tag, image=img_summary) | |
self.writer.add_summary(summary, global_step=global_step) | |
self.writer.flush() | |
def log_plot(self, tag, figure, global_step): | |
plot_buf = io.BytesIO() | |
figure.savefig(plot_buf, format='png') | |
plot_buf.seek(0) | |
img = Image.open(plot_buf) | |
img_ar = np.array(img) | |
img_summary = tf.Summary.Image(encoded_image_string=plot_buf.getvalue(), | |
height=img_ar.shape[0], | |
width=img_ar.shape[1]) | |
summary = tf.Summary() | |
summary.value.add(tag=tag, image=img_summary) | |
self.writer.add_summary(summary, global_step=global_step) | |
self.writer.flush() |