【问题标题】:how to create a module for segmoid function on VB?如何在 VB 上为 segmoid 函数创建模块?
【发布时间】:2016-05-16 21:06:16
【问题描述】:

我试过了

 Module module1
    <System.Runtime.CompilerServices.Extension()> _
Public Function sigmoid(ByRef x As Integer, ByVal y As Integer) As Integer
        y = 1 / (1 + Math.Exp(-x))
        Return y
        Return Nothing
    End Function
End Module

当我想调用它时,我会使用

 y3 = (x1 * w13 + x2 * w23 - seta3).sigmoid

我只想将 x 设为 (x1 * w13 + x2 * w23 - seta3) 并得到它的y值 它与神经网络有关 但我总是出错..怎么了??

【问题讨论】:

    标签: vb.net extension-methods


    【解决方案1】:

    我看到了一些我会为 Sigmoid 函数改变的东西:

    Public Module module1
        <System.Runtime.CompilerServices.Extension()> _
        Public Function Sigmoid(ByRef x As Integer) As Double
            Return 1 / (1 + Math.Exp(-x))
        End Function
    
        <System.Runtime.CompilerServices.Extension()> _
        Public Function Sigmoid(ByRef x As Double) As Double
            Return 1 / (1 + Math.Exp(-x))
        End Function
    End Module
    
    1. 当模块为Public 时,扩展方法往往效果更好。否则,您可能无法在需要时看到可用的方法。
    2. Return Nothing 没有任何意义,因为它直接跟在另一个 return 语句之后。
    3. 函数的 y 输入从未使用过,所以不要要求它。
    4. 返回类型需要Double,而不是Integer。第一项带有1 的除法表达式不太可能产生一个可行的整数。
    5. 现在你可以这样称呼它:

      y3 = (x1 * w13 + x2 * w23 - seta3).Sigmoid()
      

      请注意,在 VB.Net 中,最佳做法是在调用函数时始终使用 () 表示法。这不是必需的,但仍然是一个好习惯。这是对旧的 VB6/VBA/VBScript 代码的改变,在某些情况下使用括号会产生不良的副作用。

    【讨论】:

    • +1 表示没有对“格式不正确”的问题投反对票,并试图理解该问题。这几天很少见 :)
    • @Joel Coehoorn ,感谢您为我解释我感谢您的时间和精力
    • @Makketronix 我不明白你的意思:)
    • @AlKobtan,Joel 在尝试理解您的意思方面做得很好。通常你会发布你得到的错误。该评论主要是针对他的 :)
    • @Makketronix,他所做的真的很少见 :)
    猜你喜欢
    • 2013-11-21
    • 2021-08-11
    • 2012-07-20
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 2017-11-21
    • 1970-01-01
    相关资源
    最近更新 更多