forked from vahidk/EffectiveTensorflow
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsummary.py
More file actions
50 lines (42 loc) · 1.51 KB
/
Copy pathsummary.py
File metadata and controls
50 lines (42 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
"""Utility functions for visualization on tensorboard."""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import io
import matplotlib.pyplot as plt
import numpy as np
import PIL
import tensorflow as tf
def labeled_image(name, images, labels, max_outputs=3, flip_vertical=False,
color='pink', font_size=15):
"""Writes a summary visualizing given images and corresponding labels."""
def _visualize_image(image, label):
# Do the actual drawing in python
fig = plt.figure(figsize=(3, 3), dpi=80)
ax = fig.add_subplot(111)
if flip_vertical:
image = image[::-1,...]
ax.imshow(image.squeeze())
ax.text(0, 0, str(label),
horizontalalignment='left',
verticalalignment='top',
color=color,
fontsize=font_size)
fig.canvas.draw()
# Write the plot as a memory file.
buf = io.BytesIO()
data = fig.savefig(buf, format='png')
buf.seek(0)
# Read the image and convert to numpy array
img = PIL.Image.open(buf)
return np.array(img.getdata()).reshape(img.size[0], img.size[1], -1)
def _visualize_images(images, labels):
# Only display the given number of examples in the batch
outputs = []
for i in range(max_outputs):
output = _visualize_image(images[i], labels[i])
outputs.append(output)
return np.array(outputs, dtype=np.uint8)
# Run the python op.
figs = tf.py_func(_visualize_images, [images, labels], tf.uint8)
return tf.summary.image(name, figs)