vb 中的 sigmoid 函数

sigmoid function in vb

任何人都可以在 vb.net 中编写一个简单的 sigmoid 函数吗?我已经尝试过了,但我认为它行不通。如果有人可以提出任何改进 and/or 修复建议,我将非常高兴。谢谢!

        Function sigmoid(inputs As Single)
        Dim finish As New Decimal
        finish = 1 / 1 + 2.71828183 ^(-inputs)
        Return finish
        End Function

除法运算符的优先级高于加法运算符,因此您的函数正在计算 (1/1) + e^-x。您需要做的就是添加括号以强制计算为 1/(1+e^-x).

有一个内置的 e^x 函数。

可能没有必要使用 Single 而不是 Double。

您需要声明函数的 return 类型 - Double 可能比 Decimal 更适合您的用途。使用 Option Strict On 会告诉您前者;我强烈建议您使用它并将其设置为新 VB 项目的默认值。

Function sigmoid(x As Double) As Double
    Return 1 / (1 + Math.Exp(-x))
End Function

请参阅Operator Precedence in Visual Basic and Option Strict On