vision/m4/sourcing/data_collection/utils/kl_utils.py (7 lines of code) (raw):

import numpy as np NB_BINS = 40 def kl_div(p, q, nb_bins=NB_BINS): freq_p, _ = np.histogram(p, bins=nb_bins, range=(0.0, 1.0), density=True) freq_q, _ = np.histogram(q, bins=nb_bins, range=(0.0, 1.0), density=True) elem = freq_p * np.log(freq_p / freq_q) return np.sum(np.where((~np.isnan(elem)) & (freq_q != 0), elem, 0))