Неожиданный вывод для слоя keras ReLU - PullRequest
1 голос
/ 07 января 2020

В документации keras функция keras.activations.relu(x, alpha=0.0, max_value=None, threshold=0.0) определяется как:

f(x) = max_value for x >= max_value,
f(x) = x for threshold <= x < max_value,
f(x) = alpha * (x - threshold) otherwise.

Я провел небольшой тест с alpha=0.01, threshold=5.0 и max_value=100.0 и для x=5.0 вывода Я получаю f(x)=0.0.

Если я не ошибаюсь, поскольку x == threshold, я должен получить f(x)=x=5.0.

Может кто-нибудь объяснить, пожалуйста?

Спасибо,

  • Жюльен

1 Ответ

0 голосов
/ 07 января 2020

Документация в исходном коде неверна. (И вы должны перейти на tf.keras вместо keras). Должно быть,

f(x) = max_value for x >= max_value,
--> f(x) = x for threshold < x < max_value,
f(x) = alpha * (x - threshold) otherwise.

Так что, когда ваш x == threshold переходит к третьему случаю, в котором есть 0 (т.е. x - threshold). Вот почему вы получаете 0.

Если вам нужно задокументированное поведение , эту строку нужно изменить на

x = x * tf.cast(tf.greater_equal(x, threshold), floatx())

...