将TensorBoard插在MNIST数据集上的一个自动编码器上,用于演示非监督机器学习的t-SNE嵌入的可视化。
需要说明的是,在这个项目中,我们有两种类型的嵌入:
与在原始的MNIST输入图像上运行的t-SNE嵌入相比,这里的细微差别在于,我们可以看到编码器在其压缩的内部层表示中编码的过程(在下图中称为“代码(code)”,并且通常被称为“嵌入(embedding)”)。
图片来源:https://en.wikipedia.org/wiki/File:Autoencoder_structure.png
我们在这里训练的编码器是非常简单的,只是举了一个64个神经元的代码的例子。理想情况下,它包含了卷积,并将更优化。
这有一篇关于如何解读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嵌入。
现在开始享受它吧!