2017-08-16 97 views
0

我想在Tensorflow中獲取佔位符的尺寸。功能tf$shape立即出現在我的腦海裏。我毫不費力地使用tf$shape來獲得具有正面維度的佔位符的形狀。不過,我希望我的佔位符能夠接受不同尺寸的輸入,所以我留下了一個尺寸爲NULL。現在,根據我的理解,當涉及到尺寸時,Tensorflow會等效地處理NULL-1。然而,當我跑我的代碼,我收到此錯誤:獲取Tensorflow佔位符的形狀

W tensorflow/core/framework/op_kernel.cc:1148] Invalid argument: Shape [-1,2] has negative dimensions

下面是我的代碼重複的例子:

a = tf$placeholder(tf$float32, shape = shape(NULL, 2L))  
sess = tf$Session() 
sess$run(tf$shape(a)) 

是上面引用的在我的代碼或由造成一些錯誤事實上,tf$shape不能佔用負面維度的佔位符?如果後者是真的,有沒有辦法讓我得到負尺寸佔位符的形狀而不使用tf$shape

回答

1

tf$shape(a)操作返回包含佔位符張量的dynamic shape的張量。 a的動態形狀取決於您爲a提供的值;如果你不提供一個值,那麼動態形狀是未定義的。因此,您必須在sess$run(tf$shape(a))調用中爲a提供值。

不幸的是,您看到的特定錯誤(「Shape [-1,2]具有負面尺寸」)是無益的,因爲TensorFlow 1.2中有關佔位符op如何處理部分定義的形狀的錯誤。如果升級到TensorFlow 1.3(當前可作爲發佈候選版本)或更高版本,則此錯誤已得到修復,您將得到以下錯誤:

You must feed a value for placeholder tensor 'Placeholder' with dtype float32 and shape [?,2]

+0

非常感謝! – nnguyen24