Онлайн передискретизация во входном конвейере Tensorflow
У меня есть входной конвейер, похожий на тот, что вСверточная нейронная сеть руководство. Мой набор данных несбалансирован, и я хочу использовать передискретизацию меньшинства, чтобы попытаться справиться с этим. В идеале я хочу сделать это "онлайн", то есть я не хочу дублировать образцы данных на диске.
По сути, я хочу дублировать отдельные примеры (с некоторой вероятностью) на основе метки. Я немного читал о потоке управления в Tensorflow. И похожеtf.cond(pred, fn1, fn2)
это путь Я просто изо всех сил пытаюсь найти правильную параметризацию, так какfn1
а такжеfn2
потребуется выводить списки тензоров, где списки имеют одинаковый размер.
Это примерно то, что я имею до сих пор:
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),])
Тем не менее, это вызывает ошибку, как я уже упоминал ранее:
ValueError: fn1 and fn2 must return the same number of results.
Есть идеи?
П.С .: Это мой первый вопрос о переполнении стека. Любая обратная связь по моему вопросу приветствуется.