Tout simplement, utilisez tensor.shape
pour obtenir la forme statique:
In [102]: a = tf.placeholder(tf.float32, [None, 128])
# retourne [None, 128]
In [103]: a.shape.as_list()
Out[103]: [None, 128]
Alors que pour obtenir la forme dynamique, utilisez tf.shape()
:
dynamic_shape = tf.shape(a)
Vous pouvez également obtenir la forme comme vous le feriez dans NumPy avec your_tensor.shape
comme dans l'exemple suivant.
In [11]: tensr = tf.constant([[1, 2, 3, 4, 5], [2, 3, 4, 5, 6]])
In [12]: tensr.shape
Out[12]: TensorShape([Dimension(2), Dimension(5)])
In [13]: list(tensr.shape)
Out[13]: [Dimension(2), Dimension(5)]
In [16]: print(tensr.shape)
(2, 5)
Aussi, cet exemple, pour les tenseurs qui peuvent être eval
ués.
In [33]: tf.shape(tensr).eval().tolist()
Out[33]: [2, 5]
0 votes
J'ai trouvé cette réponse très utile pour analyser la forme d'un tenseur, même si ce n'est pas celle acceptée.