Я пытаюсь повторить исследование (https://www.sciencedirect.com/science/article/pii/S0957417410011711)
. В исследовании они используют две разные функции, одну для скрытого слоя и одну для вывода. На странице 5314 они пишут «Касательная передача сигмоида»функция была выбрана на скрытом слое. С другой стороны, на выходном слое была использована функция передачи логистической сигмоиды. "
Я использую пакет" neuralnet "в R.
InДля того, чтобы иметь функцию передачи касательной сигмоида для скрытого слоя, я могу использовать код:
act.fct = 'tanh'
Но это создаст проблему, что у меня тоже будет А) иметь ту же функцию для выходного слоя.
Или B) Я использую linear.output = T
, который дает мне линейный выход, но не сигмовидную функцию.Есть ли какой-нибудь возможный способ для меня иметь другую функцию для выходного слоя?
Аналогично: если я использую act.fct = 'logistic'
, я получу функцию логистической передачи сигмоида по всей сети, давая мне правильную функцию длявыходной слой, но не подходит для скрытых слоев.Который снова только принять меня на полпути.
У меня есть грубая альтернатива для решения этой проблемы, метод, который я бы предпочел не использовать , должна быть возможность использовать err.fct =
и создать настраиваемую функцию ошибок, которая использует линейнуювыводит и пропускает через желаемую сигмовидную функцию для вывода.Затем я запускаю вывод команды compute
через функцию сигмоида отдельно.Но это похоже на хлопоты, и, вероятно, я буду путаться где-то по пути.Любое правильное / лучшее решение для этого?