Использование двух разных сигмоидальных функций в Neuralnet в R

Я пытаюсь повторить исследование ( https://www.sciencedirect.com/science/article/pii/S0957417410011711)

В исследовании они используют две разные функции, одну для скрытого слоя и одну для вывода. На странице 5314 они пишут: "На скрытом слое была выбрана касательная передаточная функция сигмоиды. С другой стороны, на выходном слое была использована передаточная функция логистической сигмоиды".

Я пользуюсь пакетом "neuralnet" в R.

Чтобы иметь функцию передачи касательной сигмоида для скрытого слоя, я могу использовать код:

act.fct = 'tanh'

Но это создаст проблему, что у меня либо А) будет ЖЕ функция для выходного слоя.

Или б) пользуюсь linear.output = T Что дает мне линейный выход, но не сигмоидальную функцию. Есть ли какой-нибудь возможный способ для меня иметь другую функцию для выходного слоя?

Аналогично: если я использую act.fct = 'logistic' Я получу функцию передачи логистической сигмоиды по всей сети, что даст мне правильную функцию для выходного слоя, но не подходит для скрытых слоев. Который снова только принять меня на полпути.

У меня есть грубая альтернатива для решения этой проблемы, метод, который я предпочел бы не использовать. Должно быть возможно использовать err.fct = и создать настраиваемую функцию ошибок, которая использует линейный вывод и пропускает его через желаемую сигмоидальную функцию для вывода. Затем я запускаю вывод из compute Команда через сигмовидную функцию, отдельно. Но это похоже на хлопоты, и, вероятно, я буду путаться где-то по пути. Любое правильное / лучшее решение для этого?

1 ответ

Это не похоже на пакет R neuralnet поддерживает функции активации в скрытых слоях. Проверьте пакет keras чтобы решить это для вас.

model <- keras_model_sequential() 
model %>% 
  layer_dense(units = 100, activation = 'tanh') %>% 
  layer_dropout(rate = 0.2) %>% 
  layer_dense(units = 1, activation = 'sigmoid')
Другие вопросы по тегам