pytorch: база log_softmax 2?

#pytorch

#пыторч

Вопрос:

Я хочу получить неожиданные значения из выходных данных logit от PyTorch, используя базу данных журнала 2.

Одним из способов сделать это, учитывая тензор логитов, является:

 probs = nn.functional.softmax(logits, dim = 2) surprisals = -torch.log2(probs)  

Тем не менее, PyTorch предоставляет функцию, которая сочетает в себе log и softmax, что быстрее, чем указано выше:

 surprisals = -nn.functional.log_softmax(logits, dim = 2)  

Но это, похоже, возвращает значения в базе e, чего я не хочу. Есть ли такая функция , как log_softmax , но которая использует базу 2? Я пробовал log2_softmax и log_softmax2 , ни то, ни другое, похоже, не работает, и мне не повезло найти документацию в Интернете.

Ответ №1:

Как насчет того, чтобы просто использовать тот факт, что базы логарифмов могут быть легко изменены с помощью следующего математического тождества

это то, что F.log_softmax() дает вам. Все, что вам нужно сделать, это

 surprisals = - (1 / torch.log(2.)) * nn.functional.log_softmax(logits, dim = 2)  

Это просто скалярное умножение. Таким образом, у него вряд ли есть какие-либо недостатки в производительности.