2016-10-30 50 views
0

兩者都是標量。我正在嘗試重新分配變量。但我無法這樣做,因爲每次迭代都會改變變量的大小。我嘗試了各種轉換,但它們不起作用。任何想法?變量賦值TensorFlow大小錯誤

我想只是有一個行爲,例如追加元素到列表中。

a = tf.Variable(0.00, tf.float32) 
b = tf.Variable(0.00, tf.float32) 
a.assign(tf.pack([a, b])) 

這給出了一個錯誤:

ValueError: Shapes() and (2,) are not compatible 
+0

類型不同,以至於無法正常工作。雖然代碼是Python,但TF圖檢查類型。如何使用第三個變量,這將承載'tf.pack([a,b])的結果'? –

+0

但是我的變量在每次迭代中總是會增加一個。這意味着我必須創建數千個變量來適應不斷增加的維度。 – Ritchie

+0

我沒有任何上下文來思考它。 [documentation](https://www.tensorflow.org/versions/master/api_docs/python/state_ops.html#Variable)指出:「初始值定義變量的類型和形狀。在構建之後,類型和變量的形狀是固定的。「這意味着對'a'的賦值必須提供浮點值。如何使用「TensorArray」,張量和API(如「tf.expand_dims」)來處理動態結構(比列表更復雜)? –

回答

0

a是一個標量 b是一個標量

則只能分配其他標值,這些變量(是不是像你可以分配任何東西的Python)。

當你做tf.pack([a, b])你正在創建一個張量,你不能給一個標量變量賦一個張量。你必須創建一個新的變量。