español - keras vs tensorflow
Vector shift(Roll) en Tensorflow (1)
Simplemente tuve que hacer esto yo mismo, y no creo que haya una operación tensorflow para hacer np.roll desafortunadamente. Sin embargo, su código anterior parece básicamente correcto, excepto que no se desplaza por ri, sino por (x.shape [1] - ri).
También debe tener cuidado al elegir su entero aleatorio que es del rango (1, x.shape [1] +1) en lugar de rango (0, x.shape [1]), como si ri fuera 0, entonces x [:, 0: ri] estaría vacío.
Entonces, lo que sugeriría sería algo más parecido (para avanzar a lo largo de la dimensión 1):
x_len = x.get_shape().as_list()[1]
i = np.random.randint(0,x_len) # The amount you want to roll by
y = tf.concat([x[:,x_len-i:], x[:,:x_len-i]], axis=1)
EDITAR: agregó dos puntos faltantes después del comentario correcto de Han.
Digamos que queremos procesar imágenes (o vectores ndim) usando Keras / TensorFlow. Y queremos, para una regularización sofisticada, cambiar cada entrada por un número aleatorio de posiciones a la izquierda (porciones que fluyen hacia arriba reapareciendo en el lado derecho).
¿Cómo podría ser visto y resuelto?
1)
¿Hay alguna variación en la función numpy roll para TensorFlow?
2)
x - 2D tensor
ri - random integer
concatenate(x[:,ri:],x[:,0:ri], axis=1) #executed for each single input to the layer, ri being random again and again (I can live with random only for each batch)