2017-08-16 18 views
0

Tensorflowでプレースホルダの寸法を取得しようとしています。機能tf$shapeすぐに私の心に来た。私はtf$shapeを使って正の次元を持つプレースホルダーの形を得るのに問題はなかった。しかし、私はプレースホルダが異なるサイズの入力を取り込めるようにしたいので、1つの次元を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)操作は、プレースホルダーテンソルadynamic shapeを含むテンソルを返します。 aの動的形状は、aの値に依存します。値を入力しないと、動的形状は定義されません。したがって、sess$run(tf$shape(a))コールでaの値を入力する必要があります。

残念なことに、プレースホルダーopが部分的に定義された図形をどのように扱うかに関するTensorFlow 1.2の不具合のため、あなたが見ている特定のエラー(「図形[-1,2]に負の次元があります」)は役に立たない。 TensorFlow 1.3(現在リリース候補として入手可能)にアップグレードすると、このバグが修正され、次の行に沿ってエラーが発生します。

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

+0

ありがとうございました! – nnguyen24