Сигмовидная функция в vb
Кто-нибудь может кодировать простую сигмовидную функцию в vb.net? Я пытался, и я не думаю, что это работает. Если бы кто-нибудь мог предложить какие-либо улучшения и / или исправления, я был бы очень рад. Спасибо!
Function sigmoid(inputs As Single)
Dim finish As New Decimal
finish = 1 / 1 + 2.71828183 ^(-inputs)
Return finish
End Function
1 ответ
Оператор деления имеет более высокий приоритет, чем оператор сложения, поэтому ваша функция вычисляет (1/1) + e^-x. Все, что вам нужно сделать, это добавить скобки, чтобы оценка была равна 1/(1+e^-x).
Есть встроенная функция e^x.
Вероятно, нет необходимости использовать одинарный, а не двойной.
Вам нужно объявить тип возвращаемого значения функции - вероятно, Double лучше для того, для чего вы его используете, чем Decimal. Использование Option Strict On
сказал бы вам о первом; Я настоятельно рекомендую вам использовать его и установить его по умолчанию для новых проектов VB.
Function sigmoid(x As Double) As Double
Return 1 / (1 + Math.Exp(-x))
End Function
Пожалуйста, смотрите Приоритет оператора в Visual Basic и Опция Строгое Вкл.