2017-02-14 159 views
2

我試圖將一維數組轉換爲TF矩陣,用於卷積網絡,類似於它在TF深層MNIST示例中的做法通過使用tf.reshape()嘗試將向量轉換爲矩陣後tf.reshape()出錯

X = tf.placeholder(tf.float32, [None, 480]) 
X = tf.reshape(X, shape=[-1, 60, 8, 1]) 

我收到以下錯誤:

ValueError: Cannot feed value of shape (5, 480) for Tensor 'Reshape_1:0', which has shape '(?, 60, 8, 1)' 

5是我batch_size和480是原始數組的長度。我想將它轉換爲60x8張量,加上1個輸出通道,所以我使用TF MNIST示例使用目標形狀[-1, 60, 8, 1]

  1. 任何想法,爲什麼我得到這個?看起來像在MNIST示例中,他們使用-1來將單行調整爲AxA矩陣併爲輸出通道添加一個額外維度?
  2. 我甚至可以使用這種非方矩陣,還是會給我一個錯誤的道路?我試着做類似400 = 20x20的東西,以及只是爲了查看錯誤是否是由不均勻的形狀造成的,但仍然出現錯誤...

回答

2

在您的第一行代碼中,您定義了一個佔位符並將其存儲在python變量X中。在第二行代碼中,您定義了一個整形運算符並將其存儲在python變量X中。現在,您已覆蓋X的前一個值並失去對佔位符的訪問權限。您正在嘗試向佔位符中添加一個值,但實際上將它提供給重塑操作員。如果你爲這些變量使用不同的名字,那麼你將不會看到這個錯誤。

+0

謝謝,這是做到了。我保持這種方式,因爲TF的例子有這種方式,但現在你提到它,可能它在那裏工作,因爲X重塑是在一個函數中定義的,將預重塑的X作爲變量傳遞給它,所以也許這就是爲什麼TF允許它在那裏......謝謝! –

+0

重要的是不要將python變量與tensorflow變量混淆。 python變量只是指向tensorflow的指針。 – Aaron