2017-04-23 136 views
0

我想要得到張量的值。打印出來的如何評估變量?

# First Layer 
encoder_layer1 = tflearn.fully_connected(x,41,activation='relu',bias=True) 
layer1_weights = encoder_layer1.W 
layer1_bias = encoder_layer1.b 

結果是:

The layer 1 weights are: <tf.Variable 'FullyConnected/W:0' shape=(41, 41) dtype=float32_ref> 

即使eval()函數似乎不工作。它會拋出一個錯誤

tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value FullyConnected/W 
    [[Node: _send_FullyConnected/W_0 = _Send[T=DT_FLOAT, client_terminated=true, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/cpu:0", send_device_incarnation=-6055748491062458677, tensor_name="FullyConnected/W:0", _device="/job:localhost/replica:0/task:0/cpu:0"](FullyConnected/W)]] 

我試過所有的方法提出,但它似乎並沒有工作。

在此先感謝

+0

[如何在TensorFlow中打印張量對象的值?](http://stackoverflow.com/questions/33633370/how-to-print-the-value-of-張量 - 張量中的物體) –

+0

問題已解決!感謝您指出 –

回答

0

不久:

你不能評價任何變量張會話之外,你必須做它session內,

爲什麼不能:

爲了理解爲什麼我們不能這樣做,首先我們現在應該知道張量流的背後是什麼,因爲張量流中的每一件事都是圖的一個節點,當我們定義變量併爲它們賦值時,實際上我們正在設計在我們運行圖之前,圖和值不會被分配。

如何運行圖:

會話執行的圖形,考慮代碼塊,當我們在tensorflow像藍圖,這tf.session as sess行後會話之前設計的網絡,一切都像施工現場,所以你只能評估(eval())會議內的張量。換句話說,圖定義了操作,操作只在會話內執行。

希望這是有用的。欲瞭解更多信息,請閱讀this

+0

我的訓練師功能中有一個會話,我在'with trainer.session.as_default()'中運行eval(),然後我得到第二個錯誤 –

+1

@WiLL_K,錯誤狀態很清楚:您先必須初始化變量 – dv3

+0

我已經手動初始化變量,我解決了問題,只是tflean和tensorflow無法識別'trainer.session.as_default()',我不得不聲明會話內部'eval(session = trainer.session)''。問題解決了。我認爲當我用更多的指令集來構建它時,我已經搞砸了。 –