2017-01-04 8 views
0

テンソルボードは、tf.train.Saver()を使用してテンソルフロー変数の埋め込みビジュアライゼーションを提供します。 (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のように、tensorflowテンソルから埋め込みを可視化することができますか?

単に

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

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

を交換すると、次のエラーのため、動作しません:

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) 

は、視覚化を埋め込むtensorboard生成する代替の人を知っていますtf.tensorの?

答えて

0

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(...) 
関連する問題