tensorboard
自带降维可视化的功能,在tensorboard
的PROJECTOR
栏中,如图所示。
上图是tensorbaord
-PROJECTOR
栏的概览,左侧有一些选项,中间是数据点,话不多说,上代码。
概述
使用tensorboard
进行降维的主要步骤如下:
1.生成数据,格式是
[num_of_samples,num_of_dimensions]
2.生成元数据用于描述每个数据点(这个是可选的,比如每个点的标签,方便后面使用标签进行上色)
3.构建tf.Variable
4.初始化变量并配置
对单个张量进行降维可视化
import os
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.contrib.tensorboard.plugins import projector
def visualization(data,labels):
# 注意data的格式
var = tf.Variable(data,name="var")
# 构建元数据文件
with open('metadata.tsv','w') as metadata:
metadata.write('Index\tLabel\n')
for i,label in enumerate(labels):
metadata.write('%d\t%d\n'%(i,label))
with tf.Session() as sess:
saver = tf.train.Saver([var])
sess.run(var.initializer)
saver.save(sess, os.path.join('logs/', 'temp.ckpt'))
config = projector.ProjectorConfig()
embedding = config.embeddings.add()
embedding.tensor_name = var.name
embedding.metadata_path = 'metadata.tsv'
projector.visualize_embeddings(tf.summary.FileWriter('logs/'), config)
构造好数据和标签后,直接使用上述函数即可在logs/
生成可视化必要的文件,在该目录运行tensorboard
即可。
对多个张量进行降维可视化
import os
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.contrib.tensorboard.plugins import projector
def visualization(data1,data2,labels):
# 注意data的格式
var1 = tf.Variable(data1,name="var1")
var2 = tf.Variable(data2,name="var2")
# 构建元数据文件
with open('metadata.tsv','w') as metadata:
metadata.write('Index\tLabel\n')
for i,label in enumerate(labels):
metadata.write('%d\t%d\n'%(i,label))
vars = [var1,var2]
with tf.Session() as sess:
saver = tf.train.Saver(vars )
sess.run(tf.global_variables_initializer())
saver.save(sess, os.path.join('logs/', 'temp.ckpt'))
config = projector.ProjectorConfig()
for var in vars:
embedding = config.embeddings.add()
embedding.tensor_name = var.name
embedding.metadata_path = 'metadata.tsv'
projector.visualize_embeddings(tf.summary.FileWriter('logs/'), config)
在图示区域可以选择对应的张量进行可视化