Эффективное удаление нулевого изображения из тензора в TensorFlow - PullRequest
1 голос
/ 17 января 2020

У меня есть набор 50 изображений формы (50,128,128,1), который представлен как тензор в TensorFlow. Предположим, что изображения 25th и 30th являются просто нулевыми изображениями, но я не знаю, какие изображения заранее равны нулю (25th и 30th в этом примере только для ясности). У меня есть sh для удаления таких изображений и тензор размером (48,128,128,1). Как это может быть достигнуто в Tensorflow без циклического прохождения измерения 0th тензора 50 раз и проверки для каждого изображения, если tf.reduce_sum(tf.abs(image_i))>0.

1 Ответ

2 голосов
/ 17 января 2020

Вы можете использовать Dataset.map(some_fn). Здесь вы можете определить some_fn, который будет проверять значение каждого тензора с помощью вашей логики c tf.reduce_sum(). Итак, если значение total равно нулю, вы можете пренебречь им, иначе вы можете оставить его.

def some_fn():
    image = tf.fill([8,8], 0)# dummy tensor values
    image_row = tf.slice(image, [1,0], [1, -1])
    total = tf.reduce_sum(tf.abs(image_row)) # total = 0
    return total

Вы можете прочитать здесь больше. Это не все oop, оно работает параллельно для каждого элемента (каждого изображения в вашем случае.) Так что это быстро.

...