jam_shield_LLM_app / utilities /Tensorboard.py
asataura's picture
initial commit
6fa23b0
raw
history blame
2.53 kB
# 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()