Hola, soy nuevo en tensorflow. Quiero implementar el siguiente código de Python en tensorflow.
import numpy as np a = np.array([1,2,3,4,5,6,7,9,0]) print(a) ## [1 2 3 4 5 6 7 9 0] print(a.shape) ## (9,) b = a[:, np.newaxis] ### want to write this in tensorflow. print(b.shape) ## (9,1)El comando correspondiente es tf.newaxis (o None , como en numpy). No tiene una entrada propia en la documentación de tensorflow, pero se menciona brevemente en la página de documentación de tf.stride_slice .
x = tf.ones((10,10,10)) y = x[:, tf.newaxis] # or y = x [:, None] print(y.shape) # prints (10, 1, 10, 10) Usar tf.expand_dims también está bien pero, como se indica en el enlace anterior,
Esas interfaces son mucho más amigables y muy recomendables.
Creo que sería tf.expand_dims -
tf.expand_dims(a, 1) # Or tf.expand_dims(a, -1)Básicamente, enumeramos el ID del eje donde se insertará este nuevo eje y los ejes/dimensiones posteriores se empujarán hacia atrás .
De los documentos vinculados, aquí hay algunos ejemplos de dimensiones en expansión:
# 't' is a tensor of shape [2] shape(expand_dims(t, 0)) ==> [1, 2] shape(expand_dims(t, 1)) ==> [2, 1] shape(expand_dims(t, -1)) ==> [2, 1] # 't2' is a tensor of shape [2, 3, 5] shape(expand_dims(t2, 0)) ==> [1, 2, 3, 5] shape(expand_dims(t2, 2)) ==> [2, 3, 1, 5] shape(expand_dims(t2, 3)) ==> [2, 3, 5, 1]a = a[..., tf.newaxis].astype("float32")Esto también funciona