Online-Oversampling in der Tensorflow-Eingangspipeline

Ich habe eine Eingabe-Pipeline ähnlich der in derConvolutional Neural Network Lernprogramm. Mein Dataset ist unausgewogen und ich möchte versuchen, mit Überabtastungen von Minderheiten umzugehen. Idealerweise möchte ich dies "online" machen, d. H. Ich möchte keine Datenproben auf der Festplatte duplizieren.

Im Wesentlichen möchte ich einzelne Beispiele (mit einiger Wahrscheinlichkeit) anhand des Etiketts duplizieren. Ich habe ein bisschen über den Kontrollfluss in Tensorflow gelesen. Und es scheinttf.cond(pred, fn1, fn2) ist der richtige Weg. Ich habe nur Mühe, die richtige Parametrisierung zu finden, dafn1 undfn2 müsste Tensorlisten ausgeben, wobei die Listen dieselbe Größe haben.

Das ist ungefähr das, was ich bisher habe:

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

Dies löst jedoch einen Fehler aus, wie ich bereits erwähnt habe:

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

Irgendwelche Ideen

P.S .: das ist meine erste stapelüberlauf frage. Jedes Feedback zu meiner Frage ist willkommen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage