Итак, после того, как у вас есть обученный алгоритм машинного обучения с вашими слоями, узлами и весами, как именно он получает прогноз для входного вектора? Я использую MultiLayer Perceptron (нейронные сети).
Насколько я понимаю, вы начинаете с предсказания входного вектора. Затем вы отправляете его на свой скрытый слой (-ы), где он добавляет ваш член смещения к каждой точке данных, затем добавляет сумму произведения каждой точки данных и веса для каждого узла (найденного при обучении), затем запускает это через та же функция активации, что и при обучении. Повторите эти действия для каждого скрытого слоя, затем сделайте то же самое для выходного слоя. Тогда каждый узел в выходном слое - это ваш прогноз (я). Это верно?
Я запутался при использовании opencv для этого, потому что в guide он говорит, когда вы используете функцию предсказать:
Если вы используете функцию активации по умолчанию cvANN_MLP :: SIGMOID_SYM со значениями параметров по умолчанию fparam1 = 0 и fparam2 = 0, то используется функция y = 1.7159 * tanh (2/3 * x), поэтому выходные данные будут в диапазоне от [- 1.7159, 1.7159] вместо [0,1].
Однако при обучении в документации также указано, что SIGMOID_SYM использует функцию активации: f(x)= beta*(1-e^{-alpha x})/(1+e^{-alpha x} )
Где альфа и бета - переменные, определяемые пользователем.
Итак, я не совсем понимаю, что это значит. Где в игру вступает функция tanh? Кто-нибудь может прояснить это, пожалуйста? Спасибо за уделенное время!
Документация, в которой это находится, находится здесь: ссылка на tanh находится под описания функций прогнозировать. Ссылка на функцию активации находится на S-образном графике в верхней части страницы.
Поскольку это общий вопрос, а не конкретный код, я не публиковал с ним никакого кода.