2016-11-15 225 views
-1

我是一個TensorFlow noob。我已經從開源的deeppose實現中訓練了一個TensorFlow模型,並且現在必須針對一組新的圖像運行該模型。Tensorflow Assign要求兩個張量的形狀相匹配。 lhs shape = [20] rhs shape = [48]

該模型在尺寸爲100 * 100的圖像上進行了訓練,因此我將這組新圖像調整爲相同尺寸。我有149新圖像來運行該模型。當我運行模型時,出現以下錯誤。

InvalidArgumentError (see above for traceback): Assign requires shapes 
of both tensors to match. lhs shape= [20] rhs shape= [48] 

在生產線

saver = tf.train.Saver(tf.all_variables()) 

我懷疑訓練模型大小和測試圖像大小不匹配。我不清楚如何解決這個問題。我打印出tf.all_variables()調用的變量列表。這裏是

Tensor("Placeholder:0", shape=(128, 100, 100, 3), dtype=float32) 
(11, 11, 3, 20) 
conv1/weights:0 
(20,) 
conv1/biases:0 
(5, 5, 20, 35) 
conv2/weights:0 
(35,) 
conv2/biases:0 
(3, 3, 35, 50) 
conv4/weights:0 
(50,) 
conv4/biases:0 
(3, 3, 50, 75) 
conv5/weights:0 
(75,) 
conv5/biases:0 
(300, 1024) 
local1/weights:0 
(1024,) 
local1/biases:0 
(1024, 1024) 
local2/weights:0 
(1024,) 
local2/biases:0 
(1024, 0) 
softmax_linear/weights:0 
(0,) 
softmax_linear/biases:0 

我不確定RHS參數來自哪裏。我已經看過所有的配置文件,並且似乎沒有指定此配置的任何參數。

任何幫助解決此問題將不勝感激。

+0

嘗試'saver = tf.train.Saver(tf.all_variables(),reshape = True)' – yuefengz

+0

你能展示更大的堆棧跟蹤嗎? – sygi

+0

@Fake - 重塑不起作用,但我解決了這個問題。感謝隊友 –

回答

-1

因此,我更新了TensorFlow代碼,但未能訓練它。所以我回到了以前的版本,對運行腳本進行了適當的新更改並使其運行。

6

嘗試刪除之前運行中保存的所有檢查點。有時當改變架構並重新運行時,TF會從舊的檢查點(但帶有新的定義)中取出,並且出現此錯誤。

+1

這應該是正確的答案 – wossoneri

相關問題