#python #torch
#питон #факел
Вопрос:
Я пытаюсь рассчитать потери сети, и ее потеря-это расхождение KL между равномерным распределением и распределением вероятностей, предсказанным сетью. И я получил распределение вероятностей, используя:
probs_data = pre_network(data)
# probs_data.size() is [16,2]
Однако я не знаю, как построить равномерное распределение для вычисления KL.
В этом случае я вывожу формулу KL, похоже, я могу сгладить probs_data, используя
probs_flatten = torch. flatten(probs_data,0)
,
а затем вычислите и суммируйте логарифмическое значение для каждого элемента в этом тензоре probs_flatten .
probs_result = -torch.sum(torch.log(probs_flatten))/2
Однако я не знаю, правда ли это.
Вопрос: Каков правильный код для расчета убытка?
Комментарии:
1. Является ли probs_data и/или probs_flatten дистрибутивом? (Все ли значения в [0, 1] и равны ли они в сумме 1,0?) Если это так, эталонное равномерное распределение равно 1/N * единиц( your_shape), где N-размер вектора вероятностей, и your_shape соответствует вектору вероятностей