2017-06-10 73 views
1

我在Jupyter筆記本掙扎運行Tensorflow(V1.1)代碼多次運行Tensorflow代碼多次。不能在Jupyter筆記本

例如,我執行這個簡單的代碼段,對於一個seq2seq模型創建一個編碼層:

# Construct encoder layer (LSTM) 
encoder_cell = tf.contrib.rnn.LSTMCell(encoder_hidden_units) 
encoder_outputs, encoder_final_state = tf.nn.dynamic_rnn(
    encoder_cell, encoder_inputs_embedded, 
    dtype=tf.float32, time_major=False 
) 

第一次是完全細,則創建我的編碼器。

不過,如果我重新運行它(不管我申請的變化),我得到這個錯誤: Attempt to have a second RNNCell use the weights of a variable scope that already has weights

這是非常惱人的,因爲它迫使我重新啓動內核我想改變每次一層。

有人能解釋我爲什麼會這樣,我該如何解決這一問題?

謝謝!

+0

另外,如果你們中的一些有關於如何實現基本seq2seq車型偉大的教程:

以防萬一,我也會作爲開始TensorFlow InteractiveSession節中描述here建議使用一個交互式會話在Tensorflow 1.1中,請不要猶豫分享!不幸的是,[seq2seq教程](https://www.tensorflow.org/tutorials/seq2seq)已經過時,而且有利於[新seq2seq API]的(https://www.tensorflow.org/api_docs/python/棄用tf/contrib/seq2seq) – Blockost

+0

Jupyter具體嗎?它在python shell中工作嗎? – user1735003

+0

以下@Nicolas答案,在Python shell中也會發生同樣的情況。當我們嘗試從圖中重建現有節點時,Tensorflow會產生錯誤。 – Blockost

回答

3

你正在試圖建立兩次完全相同的圖形,因此TensorFlow抱怨,因爲變量已經在默認圖中存在。

你可以做的是試圖調用該方法的第二個時間,以確保在需要時您創建一個新的圖形之前調用tf.reset_default_graph()

import tensorflow as tf 
sess = tf.InteractiveSession() 
+0

完美,非常感謝! – Blockost