Sobremuestreo en línea en la tubería de entrada de Tensorflow

Tengo una tubería de entrada similar a la delRed neuronal convolucional tutorial. Mi conjunto de datos está desequilibrado y quiero utilizar un sobremuestreo minoritario para tratar de solucionar esto. Idealmente, quiero hacer esto "en línea", es decir, no quiero duplicar muestras de datos en el disco.

Esencialmente, lo que quiero hacer es duplicar ejemplos individuales (con cierta probabilidad) basados en la etiqueta. He estado leyendo un poco sobre Control Flow en Tensorflow. Y parecetf.cond(pred, fn1, fn2) Es el camino a seguir. Estoy luchando por encontrar la parametrización correcta, ya quefn1 yfn2 necesitaría generar listas de tensores, donde las listas tienen el mismo tamaño.

Esto es más o menos lo que tengo hasta ahora:

image = image_preprocessing(image_buffer, bbox, False, thread_id)            
pred = tf.reshape(tf.equal(label, tf.convert_to_tensor([2])), [])
r_image = tf.cond(pred, lambda: [tf.identity(image), tf.identity(image)], lambda: [tf.identity(image),])
r_label = tf.cond(pred, lambda: [tf.identity(label), tf.identity(label)], lambda: [tf.identity(label),])

Sin embargo, esto genera un error como mencioné antes:

ValueError: fn1 and fn2 must return the same number of results.

¿Algunas ideas?

PD: esta es mi primera pregunta de desbordamiento de pila. Cualquier comentario sobre mi pregunta es apreciado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta