这个功能在做什么(softmax)

时间:2016-01-02 05:55:48

标签: c# neural-network softmax

这是什么" 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;
    }

1 个答案:

答案 0 :(得分:0)

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

在神经网络中,通常有激活功能接收输入组并决定哪些将根据最大值触发功能(在输入中)。

同样适用于您的情况。

似乎有两组输入(每个“set”称为“layer”,因此有两层)代号为“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;