在TensorBoard中使用t-SNE实现TensorFlow自动编码器的可视化嵌入
时间:2022-05-02
本文章向大家介绍在TensorBoard中使用t-SNE实现TensorFlow自动编码器的可视化嵌入,主要内容包括嵌入一个自编码器、可视化与t-SNE、运行代码、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
将TensorBoard插在MNIST数据集上的一个自动编码器上,用于演示非监督机器学习的t-SNE嵌入的可视化。
需要说明的是,在这个项目中,我们有两种类型的嵌入:
- 我们使用自动编码器来嵌入和压缩数据集。这是对我们的数据进行无监督的神经压缩,并且这样的神经压缩可以揭示在无标记数据可用的各种任务中显得非常有用。
- 我们将自动编码器嵌入到t-SNE中来进一步压缩信息,从而可视化自动编码器的嵌入过程。
嵌入一个自编码器
与在原始的MNIST输入图像上运行的t-SNE嵌入相比,这里的细微差别在于,我们可以看到编码器在其压缩的内部层表示中编码的过程(在下图中称为“代码(code)”,并且通常被称为“嵌入(embedding)”)。
图片来源:https://en.wikipedia.org/wiki/File:Autoencoder_structure.png
我们在这里训练的编码器是非常简单的,只是举了一个64个神经元的代码的例子。理想情况下,它包含了卷积,并将更优化。
可视化与t-SNE
这有一篇关于如何解读t-sne的结果的文章:https://distill.pub/2016/misread-tsne/。 下面是t-SNE在默认参数下的样子(困惑度(perplexity)为25,学习率(learning rate)为10):
请注意,主组件分析(PCA)可以以类似的方式使用。然而,在数学上,PCA比t-SNE更有趣。
下面这张动图是PCA的样子,代表了19.8%的方差:
运行代码
步骤1
运行:
python3 autoencoder_t-sne.py
步骤2
./run_tensorboard.sh
你也可以简单地运行包含在 .sh中的
同样的东西:
tensorboard --logdir=logs --port="6006"
这仅仅是在默认端口上运行TensorBoard。
步骤3
浏览本地主机:6006或http://0.0.0.06006/,然后进入“嵌入(embedding)”选项卡。
根据标签选择颜色,然后你可以使用t-sne或PCA嵌入。
现在开始享受它吧!
- 微信这家人脸智慧时尚店可以“刷脸”试衣、付款
- 北京允许无人驾驶路测 难道是为方便圣诞老人送礼?
- 小程序新增多项功能,优化100多个功能点,堪称重磅!
- 人工智能的回报率:对冲基金嵌入机器学习?
- “人工智能助力上海科创中心建设”国际高峰论坛圆满结束
- 纳米白与Pandas
- 人工智能来了!实体零售会变成什么样?
- 全国计算机等级考试重大改革!新增Python科目
- 福特:相比美国人中国人更欢迎自动驾驶未来
- Zzreal的大数据笔记-SparkDay03
- 一文读懂公有链、私有链、联盟链
- 你开车低头看个微信消息都能被拍的清清楚楚,因为有这些黑科技
- 开启程序员世界的Hello World
- TensorFlow实战——图像分类神经网络模型
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 二叉树:听说递归能做的,栈也能做!
- 二叉树:一入递归深似海,从此offer是路人
- 关于二叉树,你该了解这些!
- 双指针法:总结篇!
- 栈与队列:总结篇!
- Appium移动端自动化测试--元素操作与触摸动作【移动端自动化测试教程奉上】
- 接口测试Mock利器--moco runner是如何工作的?
- Java中类型判断的几种方式
- 如何实现类似@Component的Spring动态注入功能
- 一次代码优化实践,用了模板方法+策略+工厂方法模式
- 给 JDK 报了一个 P4 的 Bug,结果居然……
- Git | Git Server 搭建
- leetcode树之二叉树的深度
- Nic*app的native层算法破解
- ActiveMq的顺序性消费问题