2016-07-29 6 views
6

Ich habe den folgenden Code, der TensorFlow verwendet. Nachdem ich eine Liste umformatiere, heißt esTensorFlow: AttributeError: 'Tensor' Objekt hat kein Attribut 'shape'

wenn ich versuche, seine Form zu drucken.

# 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 

Ausgang:

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'

Könnte jemand bitte sagen Sie mir, was mir fehlt?

Antwort

13

UPDATE: Da TensorFlow 1.0 tf.Tensor hat jetzt eine tf.Tensor.shape Eigenschaft, die den gleichen Wert wie tf.Tensor.get_shape() zurückgibt.


der Tat in den Versionen vor TensorFlow 1.0 tf.Tensor keinen .shape Eigenschaft. Sie sollten die Tensor.get_shape() Methode verwenden statt:

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

Beachten Sie, dass in der Regel nicht möglich sein könnte, die tatsächliche Form des Ergebnisses eines TensorFlow Betrieb zu erhalten. In einigen Fällen ist die Form ein berechneter Wert, der davon abhängt, ob die Berechnung ausgeführt wird, um ihren Wert zu finden. und es kann sogar von einem Lauf zum nächsten variieren (z. B. die Form von tf.unique()). In diesem Fall kann das Ergebnis von get_shape() für einige Abmessungen None (oder "?") sein.

+0

Dann wie 'print' train_data.shape: "+ str (train_data.shape) 'gibt aus' train_data.shape: (400,) '? –

+3

Ich nehme an, die erste 'train_data.shape' ist ein NumPy-Array. Nachdem Sie das Ergebnis von 'tf.reshape()' zu 'train_data' zugewiesen haben, ist sein Typ ein' tf.Tensor'. – mrry

+0

In APIr.1.0 gibt es 'shape' Attribut für' tf.Tensor': https://www.tensorflow.org/api_docs/python/tf/Tensor#shape – tuned