2016-07-29 5 views
6

TensorFlowを使用する次のコードがあります。リストの形状を変更した後、その形状を印刷しようとすると、TensorFlow:AttributeError: 'Tensor'オブジェクトに 'shape'属性がありません

AttributeError: 'Tensor' object has no attribute 'shape'

と表示されます。

# Get the shape of the training data. 
print "train_data.shape: " + str(train_data.shape) 
train_data = tf.reshape(train_data, [400, 1]) 
print "train_data.shape: " + str(train_data.shape) 
train_size,num_features = train_data.shape 

出力:

train_data.shape: (400,) Traceback (most recent call last): File "", line 1, in File "/home/shehab/Downloads/tools/python/pycharm-edu-2.0.4/helpers/pydev/pydev_import_hook.py", line 21, in do_import module = self._system_import(name, *args, **kwargs) File "/home/shehab/Dropbox/py-projects/try-tf/logistic_regression.py", line 77, in print "train_data.shape: " + str(train_data.shape) AttributeError: 'Tensor' object has no attribute 'shape'

誰もが私が行方不明です何を教えていただけますか?

答えて

13

UPDATE: TensorFlow 1.0、tf.Tensortf.Tensor.get_shape()は今と同じ値を返しtf.Tensor.shape性質を有するからです。


確かに、前のバージョンでTensorFlow 1.0 tf.Tensor.shape性質を持っていません。一般的に、あなたはTensorFlow操作の結果の実際の形状を取得することができない場合がありますことを

train_data = tf.reshape(train_data, [400, 1]) 
print "train_data.shape: " + str(train_data.get_shape()) 

注:あなたが代わりにTensor.get_shape()メソッドを使用する必要があります。場合によっては、形状は、その値を見つけるために計算を実行することに依存する計算値となります。実行ごとに異なることさえあり得る(例えば、tf.unique()の形状)。その場合、一部の次元のget_shape()の結果はNone(または"?")になる可能性があります。

+0

次に、 'print' train_data.shape: "+ str(train_data.shape)"が 'train_data.shape:(400、)'を出力していますか? –

+3

最初の 'train_data.shape'がNumPy配列であると仮定します。 'tf.reshape()'の結果を 'train_data'に代入した後、その型は' tf.Tensor'です。 – mrry

+0

APIr.1.0には 'tf.Tensor'の' shape'属性があります:https://www.tensorflow.org/api_docs/python/tf/Tensor#shape – tuned

関連する問題