Softmax со временем функция расчета? - PullRequest
0 голосов
/ 09 декабря 2018

У меня есть код, который вычисляет Softmax с течением времени, но я не могу понять строку.Кто-нибудь может мне объяснить?

    def softmax_over_time(x):
        assert(K.ndim(x) > 2)
        e = K.exp(x - K.max(x, axis=1, keepdims=True))
        s = K.sum(e, axis=1, keepdims=True)
        return e / s

Кто-нибудь может объяснить мне, почему мы используем "x - K.max (x, axis = 1, keepdims = True)"?Я думаю, что истина должна быть "K.max (x, axis = 1, keepdims = True)"?

1 Ответ

0 голосов
/ 09 декабря 2018

Это необходимо для предотвращения переполнения данных, например:

Если ваш вывод равен 1000.0, вычисленный exp равен inf.

import numpy as np
print(np.exp(1000.0))
inf

Если ваш вывод равен -1000.0, рассчитанный expравно 0.

import numpy as np
print(np.exp(-1000.0))
0.0

Но если вычесть максимум, проблем не будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...