Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

114
Vistas
Cómo usar fn_map para asignar cada fila en una matriz C a su correspondiente en la matriz B

Como estoy trabajando con TensorFlow, me gustaría saber cómo mapear mis filas de un tensor C al índice de su fila correspondiente en la matriz B.

Aquí está el código que escribí:

 B= tf.constant([[ 0., 5., 2.],[ 0., 0., 0.], [ 0., 0., 3.],[1.,5.,6.],[2.,5.,7.]]) def embeding_to_index(a_vector): return np.where(np.all(a_vector==B,axis=1))[0].tolist()[0] c = tf.constant([[0., 0., 3.],[2.,5.,7.]]) arr = tf.map_fn(fn=embeding_to_index,elems=c)

Mi resultado esperado es obtener un tensor [2 4], donde 2 se refiere al índice del vector [0., 0., 3.] en las filas del tensor B, y 4 se refiere al índice del vector [2 .,5.,7.] en las filas del tensor B.

Tuve el siguiente error:

 --------------------------------------------------------------------------- AxisError Traceback (most recent call last) <ipython-input-8-de82c21bac35> in <module> 79 80 arr=tf.map_fn(fn=embeding_to_index, # input & output have different dtypes ---> 81 elems=c) 82 # arr = tf.vectorized_map(fn=embeding_to_index_,elems=U) ~\.conda\envs\test\lib\site-packages\tensorflow\python\ops\map_fn.py in map_fn(fn, elems, dtype, parallel_iterations, back_prop, swap_memory, infer_shape, name) 266 back_prop=back_prop, 267 swap_memory=swap_memory, --> 268 maximum_iterations=n) 269 results_flat = [r.stack() for r in r_a] 270 ... AxisError: axis 1 is out of bounds for array of dimension 0

¿Cómo puedo resolver este problema usando la biblioteca TensorFlow? ¿Hay alguna alternativa al método fn_map en TensorFlow?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No tiene que usar tf.map_fn . Tal vez intente algo como esto:

 import tensorflow as tf B = tf.constant([[ 0., 5., 2.], [ 0., 0., 0.], [ 0., 0., 3.],[1.,5.,6.], [2.,5.,7.]]) c = tf.constant([[0., 0., 3.], [2.,5.,7.]]) c_shape = tf.shape(c) b_shape = tf.shape(B) c = tf.reshape(tf.tile(c, [1, b_shape[0]]), [c_shape[0], b_shape[0], c_shape[1]]) z = tf.where(tf.reduce_all(tf.equal(B, c), -1)) z = tf.stack([z[i, 1] for i in tf.range(tf.shape(z)[0])], axis=0) print(z)
 tf.Tensor([2 4], shape=(2,), dtype=int64)

Utilizando:

 c = tf.constant([[0., 0., 3.], [2.,5.,7.],[2.,5.,7.],[2.,5.,7.],[2.,5.,7.],[2.,5.,7.],[2.,5.,7.],[2.,5.,7.]])

Usted obtiene:

 tf.Tensor([2 4 4 4 4 4 4 4], shape=(8,), dtype=int64)

Actualización 1 : si desea usar los índices en z para obtener los valores correspondientes en B , simplemente haga esto:

 z, _ = tf.unique(z) print(tf.gather(B, z))
 tf.Tensor( [[2. 5. 7.] [0. 0. 3.]], shape=(2, 3), dtype=float32)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda