2017-02-15 13 views
0

私はテンソルが表示されていないことについて質問があります。 私は以下のようにコード化していますが、名前が 'ttt'、 'l1a'または 'l1_maxpool'のテンソルがあると思いますが、tf.all_variables関数では見えません。 しかし、その位置にブレークポイントをトグルすることによって、それらが存在します。Tensorflow:示されていないテンソル

なぜ表示されないのか、またはコードを変更する必要がある他の理由はありますか? ありがとうございます。

import tensorflow as tf 

def init_weights(shape, name): 
    return tf.Variable(tf.random_normal(shape, stddev=0.01), name=name) 

X = tf.placeholder("float", [None, 28, 28, 1]) 
Y = tf.placeholder("float", [None, 10]) 

w = init_weights([3, 3, 1, 32], 'w') 
w2 = init_weights([3, 3, 32, 64], 'w2') 
w3 = init_weights([3, 3, 64, 128], 'w3') 
w4 = init_weights([128 * 4 * 4, 625], 'w4') 
w_o = init_weights([625, 10], 'w_o') 

ttt = tf.nn.conv2d(X, w, strides=[1, 1, 1, 1], padding='SAME', name='ttt') 
l1a = tf.nn.relu(ttt, name='l1a') 
l1 = tf.nn.max_pool(l1a, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME', name='l1_maxpool') 

with tf.Session() as sess: 
    tf.initialize_all_variables().run() 

    z_ttt = tf.get_default_graph().get_tensor_by_name(ttt.name) 
    z_l1 = tf.get_default_graph().get_tensor_by_name(l1.name)  

    tensors = tf.all_variables() 
    for k in range(len(tensors)): 
     print tensors[k].name 

    kk = 0; 
+0

'tf.all_variables()'は変数リストを返します。 'ttt'は' Tensor'ではなく 'variables'です。これが 'テンソル'に存在しない 'ttt'の理由です – xxi

答えて

1

変数と操作には違いがあります。 Convolution、relu、およびmax_poolは、変数に対して実行する操作です。グラフ(https://www.tensorflow.org/how_tos/graph_viz/)を視覚化すると、追加した操作が実際にそこにあることがわかります!

希望すると便利です。

関連する問題