Я хочу сделать выбор объектов из 512 карт объектов (3X3 каждая) из сверточных слоев нейронной сети.Я хочу вычислить матрицу взаимной информации 512X512 между каждыми двумя векторами и выбрать 256 карт объектов с наименьшими значениями взаимной информации (исключая строки / столбцы со всеми нулями).
Для простоты, скажем, у меня есть следующие тензоры(вам не нужен pytorch, вы можете просто использовать numpy):
t2 = torch.Tensor([0.25, 2.1.5. 3.2, 3.1, 2.5])
t3 = torch.Tensor([0.14, 0.9, 6.2 ,3.1 ,1.7])
v2 = t2.data.numpy()
v3 = t3.data.numpy()
Я использовал найденный мной код для вычисления взаимной информации между двумя векторами (я просто изменил xrange на range): Python'sреализация взаимной информации
mi_compmi = computeMI(v2,v3)
print('Result: ', mi_compmi)
Дело в том, что я всегда получаю одинаковые значения px, py, pxy и один и тот же результат 2,32 для всех векторов, которые я назначаю в v2 и v3, почему?Я получаю это, даже когда вычисляю MI между вектором и самим собой, тогда как оно должно быть 0.