【问题标题】:What is this function doing (softmax) [closed]这个函数在做什么(softmax)[关闭]
【发布时间】:2016-01-02 05:55:48
【问题描述】:

这个函数中的“ih”和“ho”是什么。是 softmax 激活函数,我无法理解字符串检查的原因。

public double sim(double x, string layer)
    {
      // Determine max
      double max = double.MinValue;
      if (layer == "ih")
        max = (ihSum0 > ihSum1) ? ihSum0 : ihSum1;
      else if (layer == "ho")
        max = (hoSum0 > hoSum1) ? hoSum0 : hoSum1;

      // Compute scale
      double scale = 0.0;
      if (layer == "ih")
        scale = Math.Exp(ihSum0 - max) + Math.Exp(ihSum1 - max);
      else if (layer == "ho")
        scale = Math.Exp(hoSum0 - max ) + Math.Exp(hoSum1 - max);

      return Math.Exp(x - max) / scale;
    }

【问题讨论】:

    标签: c# neural-network softmax


    【解决方案1】:

    这个功能并不难理解。您可能需要花一些时间来了解该函数如何实现神经网络激活函数的行为。

    在神经网络中,您通常具有激活函数,它接收输入集并根据最大值(在输入中)决定哪个会触发该函数。

    同样适用于您的情况。

    似乎有两组输入(每个“组”称为“层”,因此有两个层)代号为“ih”和“ho”。每个集合还有两个元素,称为Sum0Sum1,因此可以组合四个输入: 1.ihSum0ihSum1(用于ih层) 2.hoSum0hoSum1(用于ho层)

    无论ihholayer 在您的上下文中是什么意思,您都会更好地理解。但是该函数只是检查要使用哪个输入集(或“层”)(即“ih”或“ho”)来确定两个变量(maxscale)。

    if (layer == "ih")
        max = (ihSum0 > ihSum1) ? ihSum0 : ihSum1;
    else if (layer == "ho")
        max = (hoSum0 > hoSum1) ? hoSum0 : hoSum1;
    

    最终(与x 一起)将用于确定函数的最终输出。

    return Math.Exp(x - max) / scale;
    

    【讨论】:

    • 对我来说,ih 似乎可以代表input->hiddenho 代表hidden->output
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多