Активация выходного уровня нейронной сети

#deep-learning

#глубокое обучение

Вопрос:

Я знаком с Keras, и в Keras нам нужно добавить функцию активации в выходной уровень в соответствии с требованиями, но при изучении Tensorflow я обнаружил, что функция активации не добавлена в выходной уровень.

Кто-нибудь может объяснить причину этого.

Ответ №1:

Для выходного уровня в Keras также не требуется функция активации.

Для задач классификации мы обычно склонны добавлять функцию активации в выходные данные («sigmoid» для двоичных файлов и «softmax» для многоклассовых и т.д.).

Однако в большинстве случаев люди не добавляют функцию активации в выходной уровень для задач нейронной сети с регрессией (пример ниже), потому что в конце нам нужно реальное непрерывное выходное значение.

 model.add(Dense(1))
  

Ответ №2:

В Tensorflow функция потерь обычно требует логитов в качестве входных данных, таких как sigmoid_cross_entropy_with_logits или softmax_cross_entropy_with_logits. Логины — это выходные данные, предшествующие функции активации.

Однако в Keras по умолчанию вам необходимо передать выходные данные (с активацией), чтобы вычислить ваши потери, как вы можете видеть здесь для categorical_cross_entropy , если то, что вы передаете потере, не является logit (есть функция активации) (которая установлена по умолчанию), она вычисляет кросс-энтропию непосредственно на основе выходных данных, но если она поступает из logits, вам нужно будет указать from_logits=True , и она будет использовать соответствующую функцию потерь TF, которая ожидает logits в качестве входных данных.