我已经设法使用下面的代码在tensorboard中显示卷积层的输出。我的重大挑战以及我希望你可以帮助我的地方是我希望能够将输出保存在png文件中(例如)。
我已经开始这样做,但却无法让它发挥作用 使用PIL或tensorflow编码。我在###### BEGIN END #####
之间附加了代码假设我的图层的输出是一个形状的张量(64,16,16,1)是否有一种非常简单的方法提取并保存该张量的第一个元素,即(64,64,1),如使用PIL / numpy或TF的png / jpeg图像?
非常感谢您的时间和帮助。 Ñ
def _view_layer(name, layer, w, h, d, training=True):
L = tf.slice(layer, (0, 0, 0, 0), (1, -1, -1, -1), name='slice_first_input')
L = tf.reshape(L, (w, h, d))
L = tf.transpose(L, (2, 0, 1))
# Bring into shape expected by image_summary
L = tf.reshape(L, (-1, w, h, 1))
###### BEGIN save as image ### not working #################################
if(training == False):
print(L.get_shape())
img_f = tf.image.resize_images(L, 64, 64, method=2) # 224
img_int = tf.cast(img_f, tf.uint8)
print(img_int.get_shape())
slice_im_2d = img_int[0, 2:66, 2:66, :] #<=Not sure how to get (64, 64, 1)
print(slice_im_2d.get_shape())
# Trying with PIL
# im = Image.fromarray(np.array(slice_im_2d).astype(np.uint8))
# im.save( datetime.now() + ".png")
# png_bin = tf.image.encode_png(slice_im_2d)
# Trying with TensorFlow
# with tf.Session().as_default():
# format_str = ('%s.png')
# fr = format_str % datetime.now()
# f = open(fr, "wb+")
# f.write(png_bin.eval())
# f.close()
###### END save as image ### not working #################################
# show in Tensorboard summary
tf.image_summary(name, V)