python高维向量的可视化_Tensorboard教程:高维向量可视化

本文通过Tensorboard的PROJECTOR界面展示如何可视化MNIST数据集的高维向量,包括生成sprite图像和标签信息,利用全连接神经网络训练后的输出层向量进行T-SNE和PCA降维,以便于理解和分析模型效果。
摘要由CSDN通过智能技术生成

Tensorflow高维向量可视化

觉得有用的话,欢迎一起讨论相互学习~

参考文献

强烈推荐Tensorflow实战Google深度学习框架

实验平台:

Tensorflow1.4.0

python3.5.0

MNIST数据集将四个文件下载后放到当前目录下的MNIST_data文件夹下

高维向量表示

为了更加直观的了解embedding 向量的效果,TensorBoard 提供了PROJECTOR 界面来可视化高维向量之间的关系。PROJECTOR 界面可以非常方便地可视化多个高维向量之间的关系。比如在图像迁移学习中可以将一组目标问题的图片通过训练好的卷积层得到瓶颈层 ,这些瓶颈层向量就是多个高维向量。如果在目标问题图像数据集上同一种类的图片在经过卷积层之后得到的瓶颈层向量在空间中比较接近,那么这样迁移学习得到的结果就有可能会更好。类似地,在训练单词向量时,如果语义相近的单词所对应的向量在空间中的距离也比较接近的话,那么自然语言模型的效果也有可能会更好。

为了更直观地介绍TensorBoard PROJECTOR 的使用方法,本节将给出一个MNIST的样例程序。这个样例程序在MNIST 数据上训练了一个简单的全连接神经网络。本节将展示在训练100轮和10000轮之后,测试数据经过整个神经网络得到的输出层向量通过PROJECTOR 得到的可视化结果。为了在PROJECTOR中更好地展示MNIST 图片信息以及每张图片对应的真实标签,PROJECTOR 要求用户准备一个sprite 图像(所谓sprite 图像就是将一组图片组合成一整张大图片)和一个tsv文件给出每张图片对应的标签信息。以下代码给出了如何使用MNIST测试数据生成PROJECTOR所需要的这两个文件。

示例代码

# get_ipython().run_line_magic('matplotlib', 'inline')

import matplotlib.pyplot as plt

import tensorflow as tf

import numpy as np

import os

from tensorflow.examples.tutorials.mnist import input_data

# PROJECTOR需要的日志文件名和地址相关参数

LOG_DIR = 'log'

SPRITE_FILE = 'mnist_sprite.jpg'

META_FIEL = "mnist_meta.tsv"

# 使用给出的MNIST图片列表生成sprite图像

def create_sprite_image(images):

"""Returns a sprite image consisting of images passed as argument. Images should be count x width x height"""

if isinstance(images, list):

images = np.array(images)

img_h = images.shape[1]

img_w = images.shape[2]

# sprite图像可以理解成是小图片平成的大正方形矩阵,大正方形矩阵中的每一个元素就是原来的小图片。于是这个正方形的边长就是sqrt(n),其中n为小图片的数量。

n_plots = int(np.ceil(np.sqrt(images.shape[0])))

# 使用全1来初始化最终的大图片。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值