#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 в качестве входных данных.