0

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

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

1 回答 1

2

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

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

可能不需要使用 Single 而不是 Double。

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

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

请参阅Visual Basic 中的运算符优先级Option Strict On

于 2016-08-13T12:45:55.160 回答