【问题标题】:Tensorboard embeddings does not display tensors?Tensorboard 嵌入不显示张量?
【发布时间】:2017-05-18 04:27:34
【问题描述】:

Tensorboard 使用 tf.train.Saver() 提供 tensorflow 变量的嵌入可视化。以下是一个工作示例(来自this answer)

import os
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
from tensorflow.contrib.tensorboard.plugins import projector


LOG_DIR = '/tmp/emb_logs/'
metadata = os.path.join(LOG_DIR, 'metadata.tsv')

mnist = input_data.read_data_sets('MNIST_data')

#Variables
images = tf.Variable(mnist.test.images, name='images')
weights=tf.Variable(tf.random_normal([3,3,1,16]))
biases=tf.Variable(tf.zeros([16]))

#Tensor from the variables
x = tf.reshape(images, shape=[-1, 28, 28, 1])
conv_layer=tf.nn.conv2d(x, weights, [1,1,1,1], padding="SAME")
conv_layer=tf.add(conv_layer, biases)
y = tf.reshape(conv_layer, shape=[-1, 28*28*16])


with open(metadata, 'wb') as metadata_file:
    for row in mnist.test.labels:
        metadata_file.write('%d
' % row)

with tf.Session() as sess:
    saver = tf.train.Saver([images])

    sess.run(images.initializer)
    saver.save(sess, os.path.join(LOG_DIR, 'images.ckpt'))

    config = projector.ProjectorConfig()
    # One can add multiple embeddings.
    embedding = config.embeddings.add()
    embedding.tensor_name = images.name
    # Link this tensor to its metadata file (e.g. labels).
    embedding.metadata_path = metadata
    # Saves a config file that TensorBoard will read during startup.
    projector.visualize_embeddings(tf.summary.FileWriter(LOG_DIR), config)

如何可视化来自张量流张量的嵌入,例如上面代码中的y?

简单替换

saver = tf.train.Saver([images])

与

saver = tf.train.Saver([y])

不起作用,因为以下错误:

 474         var = ops.convert_to_tensor(var, as_ref=True)
 475         if not BaseSaverBuilder._IsVariable(var):
 476           raise TypeError("Variable to save is not a Variable: %s" % var)
 477         name = var.op.name
 478         if name in names_to_saveables:

 TypeError: Variable to save is not a Variable: Tensor("Reshape_11:0", shape=(10000, 12544), dtype=float32)

有谁知道生成 tf.tensor 的张量板嵌入可视化的替代方法?

【问题讨论】:

    标签: tensorflow computer-vision deep-learning tensorboard


    【解决方案1】:

    您可以创建一个新变量,您可以将y 的值分配给。

    y_var = tf.Variable(tf.shape(y))
    saver = tf.train.Saver([y_var])
    assign_op = y_var.assign(y)
    ...
    # Training
    sess.run((loss, assign_op))
    saver.save(...)
    

    【讨论】:

      【解决方案2】:

      tf.summary.tensor_summary 将为任意张量保存摘要。

      【讨论】:

        猜你喜欢
        • 2017-12-25
        • 1970-01-01
        • 2017-05-06
        • 2018-07-18
        • 1970-01-01
        • 2017-09-15
        • 1970-01-01
        • 1970-01-01
        • 2021-06-03
        相关资源
        最近更新 更多