听起来您想获得在 TensorBoard 上运行 t-SNE 的可视化部分。正如您所描述的,Tensorflow 的 API 仅在 how-to document 中提供了最基本的命令。
我已将我的工作解决方案与 MNIST 数据集上传到 my GitHub repo。
是的,一般分为三个步骤:
- 为每个维度创建元数据。
- 将图像与每个维度相关联。
- 将数据加载到 TensorFlow 中并将嵌入保存在 LOG_DIR 中。
TensorFlow r0.12 版本仅包含通用细节。我知道官方源代码中没有完整的代码示例。
我发现其中涉及的两个任务未在操作方法中记录。
- 从源准备数据
- 将数据加载到
tf.Variable
虽然 TensorFlow 是为使用 GPU 而设计的,但在这种情况下,我选择使用 CPU 生成 t-SNE 可视化,因为该过程占用的内存比我的 MacBookPro GPU 所能访问的更多。 TensorFlow 包含对 MNIST 数据集的 API 访问,所以我使用了它。 MNIST 数据是一个结构化的 numpy 数组。使用tf.stack 函数可以将此数据集堆叠到张量列表中,张量列表可以嵌入到可视化中。以下代码包含我如何提取数据并设置 TensorFlow 嵌入变量。
with tf.device("/cpu:0"):
embedding = tf.Variable(tf.stack(mnist.test.images[:FLAGS.max_steps], axis=0), trainable=False, name='embedding')
创建元数据文件是通过对 numpy 数组进行切片来执行的。
def save_metadata(file):
with open(file, 'w') as f:
for i in range(FLAGS.max_steps):
c = np.nonzero(mnist.test.labels[::1])[1:][0][i]
f.write('{}\n'.format(c))
要关联的图像文件如操作指南中所述。我已将前 10,000 张 MNIST 图像的 png 文件上传到 my GitHub。
到目前为止,TensorFlow 对我来说非常好用,它的计算速度很快,有据可查,而且对于我目前要做的任何事情,API 似乎功能完整。我期待在来年使用自定义数据集生成更多可视化。这篇文章是从my blog 编辑的。祝你好运,请告诉我进展如何。 :)