Sobreamostragem on-line no pipeline de entrada Tensorflow

Eu tenho um pipeline de entrada semelhante ao doRede Neural Convolucional tutorial. Meu conjunto de dados está desequilibrado e quero usar uma super amostragem minoritária para tentar lidar com isso. Idealmente, desejo fazer isso "online", ou seja, não desejo duplicar amostras de dados no disco.

Basicamente, o que eu quero fazer é duplicar exemplos individuais (com alguma probabilidade) com base no rótulo. Eu tenho lido um pouco sobre o Control Flow no Tensorflow. E parecetf.cond(pred, fn1, fn2) é o caminho a percorrer. Estou apenas lutando para encontrar a parametrização correta, poisfn1 efn2 precisaria produzir listas de tensores, onde as listas têm o mesmo tamanho.

Isto é aproximadamente o que eu tenho até agora:

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),])

No entanto, isso gera um erro, como mencionei antes:

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

Alguma ideia?

P.S .: esta é minha primeira pergunta sobre estouro de pilha. Qualquer feedback sobre a minha pergunta é apreciado.

questionAnswers(1)

yourAnswerToTheQuestion