Я хотел бы использовать tf.unsorted_segment_sum
, где «идентификаторы сегментов» вычисляется из значений цвета и то, что вам сумма является tf.ones
вектором. Обратите внимание, что tf.unsorted_segment_sum
, вероятно, лучше всего рассматривать как «сумку ковша». Он реализует dest[segment] += thing_to_sum
- именно то, что вам нужно для гистограммы.
В слегка псевдокод (то есть я не запускать это):
binned_values = tf.reshape(tf.floor(img_r * (NUM_BINS-1)), [-1])
binned_values = tf.cast(binned_values, tf.int32)
ones = tf.ones_like(binned_values, dtype=tf.int32)
counts = tf.unsorted_segment_sum(ones, binned_values, NUM_BINS)
Вы могли бы сделать это за один проход вместо выделяющий г, г, б значения с раздельным, если вы хотите искусно создайте свои «те», чтобы выглядеть «100100 ...» для красного, «010010» для зеленого и т. д., но я подозреваю, что это будет медленнее в целом и труднее читать. Я бы просто сделал раскол, который вы предложили выше.
Вы хотите использовать гистограмму в вычислении позже TF, или выводит гистограмму на конечная цель? – dga
@dga Я использую его в последующем вычислении TF. – panmari