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

434
Vistas
¿Hay alguna manera de apilar dos conjuntos de datos de tensorflow?

Quiero apilar dos objetos de conjuntos de datos en Tensorflow (función rbind en R). Creé un conjunto de datos A a partir de archivos tfRecord y un conjunto de datos B a partir de matrices numpy. Ambos tienen las mismas variables. ¿Sabes si hay alguna manera de apilar estos dos conjuntos de datos para crear uno más grande? ¿O para crear un iterador que leerá aleatoriamente datos de estas dos fuentes?

Gracias

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

0

El método tf.data.Dataset.concatenate() es el análogo más cercano a tf.stack() cuando se trabaja con conjuntos de datos. Si tiene dos conjuntos de datos con la misma estructura (es decir, los mismos tipos para cada componente, pero posiblemente formas diferentes):

 dataset_1 = tf.data.Dataset.range(10, 20) dataset_2 = tf.data.Dataset.range(60, 70)

entonces puedes concatenarlos de la siguiente manera:

 combined_dataset = dataset_1.concatenate(dataset_2)
over 4 years ago · Santiago Trujillo Denunciar

0

Si al apilar quiere decir lo que hacen tf.stack() y np.stack() :

Apila una lista de tensores de rango R en un tensor de rango (R+1) .

https://www.tensorflow.org/api_docs/python/tf/stack

Únete a una secuencia de matrices a lo largo de un nuevo eje.

https://docs.scipy.org/doc/numpy/reference/generated/numpy.stack.html

entonces creo que lo más cercano que puede venir con un tf.data.Dataset es Dataset.zip() :

 @staticmethod zip(datasets)

Crea un conjunto de Dataset al comprimir los conjuntos de datos dados.

https://www.tensorflow.org/api_docs/python/tf/data/Dataset?version=stable#zip

Esto le permite iterar a través de múltiples conjuntos de datos al mismo tiempo al iterar sobre la dimensión compartida de los conjuntos de datos originales, de manera similar a un tensor o matriz stack() ed.

Luego, también puede usar .map(tf.stack) o .map(lambda *t: tf.stack(t, axis=-1)) para apilar los tensores a lo largo de nuevas dimensiones en la parte delantera o trasera, respectivamente,

Si realmente desea lograr lo que tf.concat() y np.concatenate() , entonces use Dataset.concatenate() .

over 4 years ago · Santiago Trujillo Denunciar

0

Suponga que tiene dos conjuntos de datos cuya forma de elemento es respectivamente (bs, d0, d1) y (bs, d0', d1) y desea un nuevo conjunto de datos cuya forma de elemento es (bs, d0 + d0', d1) puede hacerlo usando tf.Dataset.zip y luego concatenando cada elemento en el segundo eje, como en el siguiente ejemplo:

 import tensorflow as tf a = tf.zeros((100,4,8)) b = tf.ones((100,1,8)) d1 = tf.data.Dataset.from_tensor_slices(a) d1 = d1.batch(16,drop_remainder=True) # elements shape (16,4,8) d2 = tf.data.Dataset.from_tensor_slices(b) d2 = d2.batch(16,drop_remainder=True) # elements shape (16,1,8) d = tf.data.Dataset.zip((d1,d2)) d = d.map(lambda x,y:tf.concat([x,y],axis=-2)) # elements shape (16,4+1,8) it = iter(d) x = next(it) print(x.shape) print(x)

Si, en cambio, desea apilar dos conjuntos de datos con la misma forma de elementos (bs, d0, d1) en un nuevo conjunto de datos con forma de elementos (bs, d0, d1,2), puede hacerlo comprimiendo los dos conjuntos de datos y luego replanteando los elementos.

 import tensorflow as tf a = tf.zeros((100,4,8)) b = tf.ones((100,4,8)) d1 = tf.data.Dataset.from_tensor_slices(a) d1 = d1.batch(16,drop_remainder=True) # elements shape (16,4,8) d2 = tf.data.Dataset.from_tensor_slices(b) d2 = d2.batch(16,drop_remainder=True) # elements shape (16,4,8) d = tf.data.Dataset.zip((d1,d2)) d = d.map(lambda x,y:tf.stack([x,y],axis=-1)) # elements shape (16,4,8,2) it = iter(d) x = next(it) print(x.shape) print(x)
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