Tf.shape () ja x.get_shape (). As_list ()

Tf Shape X Get_shape



Dies ist eine einfache Erklärung, x.get_shape (). Nur Tensor kann diese Methode verwenden und ein Tupel zurückgeben.

import tensorflow as tf import numpy as np a_array=np.array([[1,2,3],[4,5,6]]) b_list=[[1,2,3],[3,4,5]] c_tensor=tf.constant([[1,2,3],[4,5,6]]) print(c_tensor.get_shape()) print(c_tensor.get_shape().as_list()) with tf.Session() as sess: print(sess.run(tf.shape(a_array))) print(sess.run(tf.shape(b_list))) print(sess.run(tf.shape(c_tensor)))

Ergebnis: Visible kann nur verwendet werden, damit der Tensor die Form zurückgibt. Es handelt sich jedoch um ein Tupel, das durch die Operation as_list () in eine Liste konvertiert werden muss.





Wenn es sich nicht um ein Tupel handelt, wird ein Fehler gemeldet!



Wenn Sie dem obigen Code a_array.get_shape () hinzufügen, wird der folgende Fehler gemeldet:

print(a_array.get_shape()) AttributeError: 'numpy.ndarray' object has no attribute 'get_shape'

Es ist zu sehen, dass nur Tensor ein solches Privileg hat!

Hier sind einige Einschränkungen:



Der erste Punkt: tensor.get_shape () gibt das Tupel zurück, das nicht in sess.run () platziert werden kann. Dies kann nur Betrieb und Tensor setzen

Der zweite Punkt: tf.shape () gibt einen Tensor zurück. Um zu wissen, wie viel es ist, müssen Sie sess.run () übergeben

import tensorflow as tf import numpy as np a_array=np.array([[1,2,3],[4,5,6]]) b_list=[[1,2,3],[3,4,5]] c_tensor=tf.constant([[1,2,3],[4,5,6]]) with tf.Session() as sess: a_array_shape=tf.shape(a_array) print('a_array_shape:',a_array_shape) print('a_array_shape:',sess.run(a_array_shape)) c_tensor_shape=c_tensor.get_shape().as_list() print('c_tensor_shape:',c_tensor_shape) #print(sess.run(c_tensor_shape)) #Report Error

Ergebnis:

Wenn Sie das Auskommentierte freigeben, lautet der Fehler wie folgt: Offensichtlich handelt es sich nicht um einen Tensor oder eine Operation.