Сигмовидная функция в 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 и Опция Строгое Вкл.

Другие вопросы по тегам