es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo agrego solo ciertas columnas a un tensor en tensorflow?

Considere el siguiente código:

import tensorflow como tf

test = tf.constant ([[[100., 2., -30.], [-4,5,6]], [[4., 5., 6.], [-7,8,9]]]) # matriz

print (test)

test1 = tf.constant ([[[100.]],[[ 8.]]])

print (test1)

Cuando se agrega test1 a las dos primeras columnas de prueba, obtendríamos la siguiente salida:

print (test [:,:, 0:2] + test1)

No quisiera agregar la variable test1 a la última columna de la variable test, pero al mismo tiempo me gustaría incluir la última columna de la variable test en la salida sin cambios:

[[[200. 102., -30.]
  [96. 105., 6.]]

 [[12. 13., 6]
  [1. 16., 9]]]

¿Cómo podría codificar esto rápidamente?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para lograr esto, puedes usar la función tf.concat para concatenar la porción de prueba que deseas agregar con la variable test1 a lo largo de la segunda dimensión (que representa las columnas), mientras concatenas la porción de prueba que no deseas cambiar con un tensor de ceros a lo largo de la segunda dimensión. Aquí hay un ejemplo de cómo se vería el código:

    import tensorflow as tf
    
    test=tf.constant([[[100., 2., -30.],[-4,5,6]], [[4., 5., 6.],[-7,8,9]]]) # matriz
    
    print(test)
    
    test1=tf.constant([[[100.]],[[  8.]]])
    
    print(test1)
    
    # concatenar test1 con las primeras dos columnas de test a lo largo de la segunda dimensión
    # concatenar una porción de ceros con la última columna de prueba a lo largo de la segunda dimensión
    output = tf.concat([test[:,:,0:2]+test1, tf.concat([test[:,:,2:], tf.zeros_like(test[:,:,2:])], axis=2)], axis=2)
    
    print(output)
    

    La función tf.zeros_like crea un tensor con la misma forma que la porción de la variable test que no se modificó con todos los elementos establecidos en cero. La función tf.concat se utiliza nuevamente para concatenar este tensor con la porción no modificada de la variable test a lo largo de la segunda dimensión. El tensor resultante tiene la misma forma que el original, pero con la modificación que describiste.

Comments are closed.