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。
任何人都可以在 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。