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.