2017-10-10 71 views
-1

我最近已經被煩惱由以下錯誤消息:形如何張量陣列?

ValueError: Cannot feed value of shape (2455040,) for Tensor 'Placeholder:0', which has shape '(2455040, ?)' 

正被從運行下面的代碼產生:

NUMCLASSES=16 
NUMPIXELS=959*640*4 
# set up to feed an array of images [images, size_of_image] 
x = tf.placeholder(tf.float32, [NUMPIXELS,None]) 

.... .... deletia

# Define loss and optimizer..why is this 2d? 
y_ = tf.placeholder(tf.float32, [None,NUMCLASSES]) 


sess = tf.InteractiveSession() 
tf.global_variables_initializer().run(session=sess) 
tl = get_tensor_list() 

for f, n in tl: 
    str = '/users/me/downloads/train/' + f 
    mm = Image.open(str) 
    mm = mm.convert('F') 
    mma=np.array(mm) 
    i = mma.flatten() #now this is an array of floats of size NUMPIXELS 
    sess.run(train_step, feed_dict={x: i, y_: n}) # <<DEATH 

不知何故,該數組得到了一個形狀,當它想要(x,?)]時,它不喜歡[(x,))。如何在這種情況下滿足tensorgods?張量必須是未經討論的其他數學原因所必須的。

+0

請考慮清楚地寫出問題。您的示例代碼也很模糊。 –

+0

我會再試一次:我聲明一個形狀的張量[NUMPIXELS,無],並獲得一個形狀[ROWPIX,COLPIX]的圖像,我將它變成[NUMPIXELS],當我將它傳遞給sess.run() 。我想這些問題是:(1)如何強制圖像的形狀[NUMPIXELS]; (2)張量爲[NUMPIXELS,無(==?)]時爲什麼形狀[NUMPIXELS]不夠好? –

回答

0

整形數組可能會有所幫助。

i = mma.flatten().reshape((NUMPIXELS,1)) 
+0

在那裏,做到了,拿到了T恤。沒有快樂:(NUMPIXELS,)。 –

0

的錯誤是因爲兩個張量有不同ranks:張量形狀(2455040)的秩爲1,而張量形狀(2455040 ,?)的秩2.

你可以這樣做:

x = tf.placeholder(tf.float32, [None]) 
x = tf.reshape(x, [NUMPIXELS,-1])