użyłbym tf.unsorted_segment_sum
, gdzie „Identyfikatory segment” są obliczane na podstawie wartości kolorów, a rzeczą, którą suma jest tf.ones
wektorowych. Zauważ, że tf.unsorted_segment_sum
jest prawdopodobnie lepiej pomyślany jako "suma kubełkowa". Implementuje ona dest[segment] += thing_to_sum
- dokładnie taką operację, jakiej potrzebujesz do histogramu.
w nieco Pseudokod (co oznacza, że nie uruchomić tego):
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)
Można tego dokonać w jednym przejściu zamiast oddzielenie R, G i B o wartości ułamku jeśli chciał sprytnie skonstruuj swoje "te", aby wyglądały jak "100100 ..." dla czerwieni, "010010" dla zieleni itp., ale podejrzewam, że ogólnie byłoby wolniejsze i trudniejsze do odczytania. Po prostu zrobię podział, który zaproponowałeś powyżej.
Chcesz użyć histogramu w późniejszych obliczeń TF, czy jest wyprowadzanie histogram się cel końcowy? – dga
@dga Używam go w późniejszych obliczeniach TF. – panmari