Skip to content

Instantly share code, notes, and snippets.

@gyglim
Last active August 23, 2023 21:29
Show Gist options
  • Save gyglim/1f8dfb1b5c82627ae3efcfbbadb9f514 to your computer and use it in GitHub Desktop.
Save gyglim/1f8dfb1b5c82627ae3efcfbbadb9f514 to your computer and use it in GitHub Desktop.

Revisions

  1. gyglim revised this gist Jul 18, 2019. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion tensorboard_logging.py
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,6 @@
    """Simple example on how to log scalars and images to tensorboard without tensor ops.
    License: Copyleft
    License: BSD License 2.0
    """
    __author__ = "Michael Gygli"

  2. gyglim revised this gist Apr 13, 2018. No changes.
  3. gyglim revised this gist Oct 3, 2017. 1 changed file with 8 additions and 3 deletions.
    11 changes: 8 additions & 3 deletions tensorboard_logging.py
    Original file line number Diff line number Diff line change
    @@ -1,4 +1,7 @@
    """Simple example on how to log scalars and images to tensorboard without tensor ops."""
    """Simple example on how to log scalars and images to tensorboard without tensor ops.
    License: Copyleft
    """
    __author__ = "Michael Gygli"

    import tensorflow as tf
    @@ -52,8 +55,10 @@ def log_images(self, tag, images, step):

    def log_histogram(self, tag, values, step, bins=1000):
    """Logs the histogram of a list/vector of values."""

    # Create histogram using numpy
    # Convert to a numpy array
    values = np.array(values)

    # Create histogram using numpy
    counts, bin_edges = np.histogram(values, bins=bins)

    # Fill fields of histogram proto
  4. gyglim revised this gist Jan 4, 2017. 1 changed file with 22 additions and 23 deletions.
    45 changes: 22 additions & 23 deletions tensorboard_logging.py
    Original file line number Diff line number Diff line change
    @@ -53,30 +53,29 @@ def log_images(self, tag, images, step):
    def log_histogram(self, tag, values, step, bins=1000):
    """Logs the histogram of a list/vector of values."""

    if step % self.frequency == 0:
    # Create histogram using numpy
    counts, bin_edges = np.histogram(values, bins=bins)
    # Create histogram using numpy
    counts, bin_edges = np.histogram(values, bins=bins)

    # Fill fields of histogram proto
    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))
    # Fill fields of histogram proto
    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))

    # Requires equal number as bins, where the first goes from -DBL_MAX to bin_edges[1]
    # See https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/framework/summary.proto#L30
    # Thus, we drop the start of the first bin
    bin_edges = bin_edges[1:]
    # Requires equal number as bins, where the first goes from -DBL_MAX to bin_edges[1]
    # See https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/framework/summary.proto#L30
    # Thus, we drop the start of the first bin
    bin_edges = bin_edges[1:]

    # Add bin edges and counts
    for edge in bin_edges:
    hist.bucket_limit.append(edge)
    for c in counts:
    hist.bucket.append(c)
    # Add bin edges and counts
    for edge in bin_edges:
    hist.bucket_limit.append(edge)
    for c in counts:
    hist.bucket.append(c)

    # Create and write Summary
    summary = tf.Summary(value=[tf.Summary.Value(tag=tag, histo=hist)])
    self.writer.add_summary(summary, step)
    self.writer.flush()
    # Create and write Summary
    summary = tf.Summary(value=[tf.Summary.Value(tag=tag, histo=hist)])
    self.writer.add_summary(summary, step)
    self.writer.flush()
  5. gyglim revised this gist Jan 4, 2017. 1 changed file with 25 additions and 21 deletions.
    46 changes: 25 additions & 21 deletions tensorboard_logging.py
    Original file line number Diff line number Diff line change
    @@ -49,30 +49,34 @@ def log_images(self, tag, images, step):
    summary = tf.Summary(value=im_summaries)
    self.writer.add_summary(summary, step)


    def log_histogram(self, tag, values, step, bins=1000):
    """Logs the histogram of a list/vector of values."""

    # Create histogram using numpy
    counts, bin_edges = np.histogram(values, bins=bins)
    if step % self.frequency == 0:
    # Create histogram using numpy
    counts, bin_edges = np.histogram(values, bins=bins)

    # Fill fields of histogram proto
    hist = tf.HistogramProto()
    hist.min = np.min(values)
    hist.max = np.max(values)
    hist.num = np.prod(values.shape)
    hist.sum = np.sum(values)
    hist.sum_squares = np.sum(values**2)
    # Fill fields of histogram proto
    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))

    # Requires equal number of bins, where the first goes from -DBL_MAX to bin_edges[1]
    # See https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/framework/summary.proto#L30
    bin_edges = bin_edges[1:]
    # Requires equal number as bins, where the first goes from -DBL_MAX to bin_edges[1]
    # See https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/framework/summary.proto#L30
    # Thus, we drop the start of the first bin
    bin_edges = bin_edges[1:]

    for edge in bin_edges:
    hist.bucket_limit.append(edge)
    for c in counts:
    hist.bucket.append(c)

    # Create and write Summary
    summary = tf.Summary(value=[tf.Summary.Value(tag=tag, histo=hist)])
    self.writer.add_summary(summary, step)
    self.writer.flush()
    # Add bin edges and counts
    for edge in bin_edges:
    hist.bucket_limit.append(edge)
    for c in counts:
    hist.bucket.append(c)

    # Create and write Summary
    summary = tf.Summary(value=[tf.Summary.Value(tag=tag, histo=hist)])
    self.writer.add_summary(summary, step)
    self.writer.flush()
  6. gyglim revised this gist Jan 4, 2017. 1 changed file with 29 additions and 1 deletion.
    30 changes: 29 additions & 1 deletion tensorboard_logging.py
    Original file line number Diff line number Diff line change
    @@ -4,7 +4,7 @@
    import tensorflow as tf
    from StringIO import StringIO
    import matplotlib.pyplot as plt

    import numpy as np

    class Logger(object):
    """Logging in tensorboard without tensorflow ops."""
    @@ -48,3 +48,31 @@ def log_images(self, tag, images, step):
    # Create and write Summary
    summary = tf.Summary(value=im_summaries)
    self.writer.add_summary(summary, step)

    def log_histogram(self, tag, values, step, bins=1000):
    """Logs the histogram of a list/vector of values."""

    # Create histogram using numpy
    counts, bin_edges = np.histogram(values, bins=bins)

    # Fill fields of histogram proto
    hist = tf.HistogramProto()
    hist.min = np.min(values)
    hist.max = np.max(values)
    hist.num = np.prod(values.shape)
    hist.sum = np.sum(values)
    hist.sum_squares = np.sum(values**2)

    # Requires equal number of bins, where the first goes from -DBL_MAX to bin_edges[1]
    # See https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/framework/summary.proto#L30
    bin_edges = bin_edges[1:]

    for edge in bin_edges:
    hist.bucket_limit.append(edge)
    for c in counts:
    hist.bucket.append(c)

    # Create and write Summary
    summary = tf.Summary(value=[tf.Summary.Value(tag=tag, histo=hist)])
    self.writer.add_summary(summary, step)
    self.writer.flush()
  7. gyglim revised this gist Jan 4, 2017. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion tensorboard_logging.py
    Original file line number Diff line number Diff line change
    @@ -1,7 +1,7 @@
    """Simple example on how to log scalars and images to tensorboard without tensor ops."""
    __author__ = "Michael Gygli"

    import tensorboard as tf
    import tensorflow as tf
    from StringIO import StringIO
    import matplotlib.pyplot as plt

  8. gyglim created this gist Jan 4, 2017.
    50 changes: 50 additions & 0 deletions tensorboard_logging.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,50 @@
    """Simple example on how to log scalars and images to tensorboard without tensor ops."""
    __author__ = "Michael Gygli"

    import tensorboard as tf
    from StringIO import StringIO
    import matplotlib.pyplot as plt


    class Logger(object):
    """Logging in tensorboard without tensorflow ops."""

    def __init__(self, log_dir):
    """Creates a summary writer logging to log_dir."""
    self.writer = tf.summary.FileWriter(log_dir)

    def log_scalar(self, tag, value, step):
    """Log a scalar variable.
    Parameter
    ----------
    tag : basestring
    Name of the scalar
    value
    step : int
    training iteration
    """
    summary = tf.Summary(value=[tf.Summary.Value(tag=tag,
    simple_value=value)])
    self.writer.add_summary(summary, step)

    def log_images(self, tag, images, step):
    """Logs a list of images."""

    im_summaries = []
    for nr, img in enumerate(images):
    # Write the image to a string
    s = StringIO()
    plt.imsave(s, img, format='png')

    # Create an Image object
    img_sum = tf.Summary.Image(encoded_image_string=s.getvalue(),
    height=img.shape[0],
    width=img.shape[1])
    # Create a Summary value
    im_summaries.append(tf.Summary.Value(tag='%s/%d' % (tag, nr),
    image=img_sum))

    # Create and write Summary
    summary = tf.Summary(value=im_summaries)
    self.writer.add_summary(summary, step)