2016-11-10 59 views
0

我想檢查卷積層的過濾器。爲此,我試圖在會話的最後一步獲取變量。如何從會話中的圖表中獲取變量?

這裏是我的模型的簡化版本:

graph = tf.Graph() 
with graph.as_default(): 

    # Placeholders 
    ... 

    # Variables. 
    conv1_w = tf.Variable(..., name='conv1_w') 
    ... 

    optimizer = ... 
    accuracy = ... 

with tf.Session(graph=graph) as session: 
    ... 
    acc, c1 = session.run([accuracy, conv1_w], feed_dict=feed_test) 

我得到下面的異常

Fetch argument <tensorflow.python.ops.variables.Variable object at 0x137890710> cannot be interpreted as a Tensor. (Tensor Tensor("conv1_w:0", shape=(5, 5, 1, 16), dtype=float32_ref) is not an element of this graph.) 

但是,如果我申請的運算,我能賣到沒有錯誤產生的張量:

c1_op = tf.mul(conv1_w,1.0) 
    optimizer = ... 
    accuracy = ... 

不Tensorflow不允許獲取變量?

+0

應該沒有吧是ACC,conv_val = session.run([精度,conv1_w],feed_dict = feed_test) – Steven

+0

它是一個錯字。我編輯的問題 – znat

回答

0

這可能是有點混亂,變量名和「名稱」參數都conv1_w

除此之外好像沒有實際使用它在所有在你的計算圖。這意味着沒有數據被推送或不被使用。

快速簡單的例子:

import tensorflow as tf 
sess = tf.InteractiveSession() 

conv1 = tf.Variable(1) 

sess.run(tf.initialize_all_variables()) 
sess.run(conv1) 

結果是1

作爲一個方面說明:這是更好地使用tf.get_variable()代替tf.Variable()

+0

您好,我有同樣的結果之前,使用一個交互式會話嘗試。在我的問題中,關於提取的張量數量與返回的變量數量有關。 – znat

+0

你可以把更多的代碼或鏈接的呢?否則,它應該像我的快速示例一樣工作。在這種情況下,Session與InteractiveSession沒有區別。 – Steven