tensorboard 可视化 projector

原文链接: tensorboard 可视化 projector

上一篇: TensorFlow 函数详解 一

下一篇: pycocotools 安装

好麻烦的东西。。。。。。。。

https://www.tensorflow.org/guide/embedding

不错的博客

https://blog.csdn.net/aliceyangxi1987/article/details/71079387

如果遇到一个报错,找不到cupti64_90.dll

将C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\extras\CUPTI\libx64下的dll改个名字放到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\bin中

241c8d19857ca5ba2f4e9c6e0386800a766.jpg

主要步骤如下,包括生成tsv文件,精灵图文件的创建

tsv文件每行的数字代表一个分类的label

精灵图必须是正方形的。。。。不够的可以补全否则会有问题,多的也没事,也可以只写在一排,但是数目多的话会占内存。。。可以使用不同的背景,但是白色背景在使用labell区分时比较好辨认一点

15cb9186f308beac8b7d90114f817725e38.jpg39e8acb58316e79071770ef0c54e875540c.jpg2917664f54006b29827f8971bfcf3ad703c.jpgfbd7668ccc177d621c04043419a12238b17.jpg

黑色背景以label区分时,只会讲文字改变颜色,没有白色背景明显

f80ed3521c9889341a2948e8f5a9d533b1a.jpgc37249f8266e4ae3b50bb1152e32736bca3.jpgf92f16b66628a4894eb990a3fa686c491b0.jpg

在这段代码中没有没有生成图片

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.contrib.tensorboard.plugins import projector

show_num = 6
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)

show_images = mnist.train.images[:show_num]
show_labels = mnist.train.labels[:show_num]
embedding = tf.Variable(tf.stack(show_images), trainable=False, name='embedding')
save_dir = "./log/"

sess = tf.Session()
metadata_path = 'metadata.tsv'
with open(save_dir + metadata_path, 'w') as f:
    labels = sess.run(tf.argmax(show_labels, 1))
    for i in labels:
        f.write(str(i) + '\n')

image_path = 'mnist_sprite.png'

projector_writer = tf.summary.FileWriter(save_dir, sess.graph)
saver = tf.train.Saver()
config = projector.ProjectorConfig()
embed = config.embeddings.add()
embed.tensor_name = embedding.name
embed.metadata_path = metadata_path
embed.sprite.image_path = image_path
embed.sprite.single_image_dim.extend([28, 28])
projector.visualize_embeddings(projector_writer, config)

sess.run(tf.global_variables_initializer())
saver.save(sess, save_dir + 'model.ckpt')
projector_writer.close()

文件结果如下,注意配置文件的路径与,创建文件的路径是不一样的

cfb635543ddb82dd45b8cc6e8a1483bda89.jpg

配置文件中不需要再次加上log文件夹地址

be81149c3a5d835644e0591340521eef1df.jpg

为了方便可视化数据选取平方数比较好一点,这样比较好生成精灵图

白色背景精灵图的生成

from tensorflow.examples.tutorials.mnist import input_data
import cv2 as cv
import numpy as np

mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
cnt = 10
imgs = mnist.train.images[:cnt]
labels = mnist.train.labels[:cnt]
print(imgs.shape)
print(np.max(imgs))
row = np.concatenate(list(
    map(lambda item: 255 * (1 - item.reshape((28, 28, 1))), imgs)
), 1)
print(row.shape)
imgs = np.concatenate([row, 255 * np.ones(((cnt - 1) * 28, cnt * 28, 1))], 0)
print(imgs.shape)
cv.imwrite('mnist_sprite.png', imgs)

简单可视化,只分label,不显示图片,用label代替图片的显示

106562ced396592b3c42d98c0928cfaa2a1.jpg

5d4d7faf346bae0550e79c2b72b6bd8018f.jpg

也要注意配置文件的路径,和在程序中写入的路径不一样的

6bc2cb1187d742413b3df25bc73452cb6f5.jpg

import os
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.contrib.tensorboard.plugins import projector

LOG_DIR = 'logs'
metadata = 'metadata.tsv'

mnist = input_data.read_data_sets('MNIST_data')
images = tf.Variable(mnist.test.images, name='images')

with open(os.path.join(LOG_DIR, metadata), 'w') as metadata_file:
    for row in mnist.test.labels:
        metadata_file.write('%d\n' % row)

with tf.Session() as sess:
    saver = tf.train.Saver([images])

    sess.run(images.initializer)
    saver.save(sess, os.path.join(LOG_DIR, 'images.ckpt'))

    config = projector.ProjectorConfig()
    # One can add multiple embeddings.
    embedding = config.embeddings.add()
    embedding.tensor_name = images.name
    # Link this tensor to its metadata file (e.g. labels).
    embedding.metadata_path = metadata
    # Saves a config file that TensorBoard will read during startup.
    projector.visualize_embeddings(tf.summary.FileWriter(LOG_DIR), config)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值