《深入了解TensorFlow》笔记——Chapter 6.4 可视化高维数据


本节讨论的可视化高维数据特指embedding features。embedding是指将客观世界中离散的物体或对象(如单词、短语、图片等)映射到特征空间中的操作。embedding feature是指映射后的特征空间中连续且稠密的高维向量。

由于deep learning or machine learning的大多数模型都是为稠密的连续向量而设计的,所以embedding representations可以让经典算法模型处理许多离散的输入对象。

在Automatic Speech Recognition(ASR)、Image Recognition, and Recommendation System等机器学习领域,通常使用embedding vector to describe 客观世界的物体。embedding vector不是对物体进行简单的编号,而是在尽量保持相似性不变的前提下对Object进行特征抽象和编码。通过不断地训练,我们能够将objective world中的物体“不失真”地映射到high-level feature space,进而对这些feature vector进行classification, regressiong and prediction。

TensorBoard可视化高维数据

TensorBoard可视化高维数据的模块叫做embedding projector,打开EMBEDDINGS面板即可查看。

Embedding projector是将high-dim data投影到low-dim space中的可视化模块。它内置t-SNE(t-Distributed Stochastic Neighbor Embedding)和PCA(Principal Component Analysis)两种降维算法,也支持用户自定义descending dimension methods。

embedding feature visualization
TB可视化embedding features流程如上图所示,主要包括了embedding variables, metadata, and projector configuration。

  1. 创建embedding variables, 并保存到checkpoint file中
  2. 创建metadata,并保存到metadata.tsv中
  3. 设置projector config parameters,并保存到projector_config.pbtxt中
  4. 运行TB程序,加载上面生成的3个文件,查看embedding feature的可视化结果

嵌入变量

Embedding variable是待可视化数据的载体,TB要求必须按照二阶张量形式<嵌入数据总数,嵌入数据维度>表示待可视化的高维数据。embedding variable本身也是一种变量,通过tf.Saver.save()可以直接写入到checkpoint file中。

embedding_var = tf.Variable(tf.stack(mnist.test.images[:1000]), trainable=False, name='embedding')

# create embedding_saver to save embedding variable
embedding_saver = tf.train.Saver([embedding_var])
embedding_saver.save(sess, os.path.join(log_dir, 'mnist.ckpt'))

嵌入变量元数据

用于描述embedding variable中每个元素的数据特征集合。在TB中展示投影的数据点时,我们可以为其添加对应的数据特征,以便更清晰地观察数据。例如,为MNIST图像的embedding variables添加对应的数字标签,或者为词向量的embedding variables添加对应的出现频数。

TB推荐使用TSV文件格式保存metadata of embedding variables。

对于表示图像的嵌入变量,TB还支持为其添加对应的图像文件,以供页面成像。

投影配置参数

用于指定TB可视化embedding feature时所使用的embedding varibale and metadata。Projector config parameters 存储在以Protocol Buffer序列化格式保存的文本文件中(后缀为.pbtxt)。这些configurations包括tensor_name, metadata_path和全景图配置(sprite)等。

projector config file示例:

embedding{
	tensor_name: "embedding:0"
	metadata_path: "./summary/embeddings/metadata.tsv"
	sprite {
		image_path: './summary/images/mnist_10k_sprite.png'
		single_image_dim: 28
		single_image_dim: 28
	}
}

可视化MNIST数据集示例

源码见tf_embedding_feature.py
运行前,务必在当前路径下创建’log/summary/images’文件夹:

$: mkdir -p log/sumamry/images

并将下载MNIST sprite image(全景图),放到该文件夹下。然后在命令行运行如下指令:

$ tensorboard --logdir='log/summary'

t-SNE降维可视化

MNIST t-SNE可视化结果

PCA降维可视化结果

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dongz__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值