2017-08-16 67 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