2016-08-13 78 views
0

任何人都可以在vb.net中編寫簡單的sigmoid函數嗎?我試過了,我不認爲它有效。如果任何人可以提出任何改進和/或修復,我會非常高興。謝謝!vb中的sigmoid函數

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

回答

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 

請參閱Operator Precedence in Visual BasicOption Strict On