哪个激活功能用于0到9

时间:2017-04-03 20:42:43

标签: neural-network

我正在尝试实现识别神经网络的图片, 我正面临一个问题...

当我使用sigmoid函数时,我得到了很好的结果,但它们介于0和1之间。我需要得到0到9之间的结果,

当我使用线性激活函数时,数字会在早期变得非常大,导致javascript中出现InfinityNaN

当我使用SoftPlus时,数字变得很小,导致NaN ...我应该使用什么激活功能?

2 个答案:

答案 0 :(得分:0)

您必须在[0,9]范围内对输出进行标准化(假设连续输出),以便在[0,1]范围内获得标准化输出,然后使用sigmoid激活。

如果您想要从0到9(整数)的离散输出,那么这是一个分类问题,您应该使用softmax激活。

答案 1 :(得分:0)

我看到你正在使用Javascript。我已经建立了一个高度可定制的javascript神经网络库。看看here。它有不同的内置激活函数列出here,但它们很容易修改!

所以逻辑函数写成这样:

  LOGISTIC : function(x, derivate) {
    if (!derivate)
      return 1 / (1 + Math.exp(-x));
    var fx = Activation.LOGISTIC(x);
    return fx * (1 - fx);
  },

因此,如果您希望输出介于0和9之间,则可以创建自定义后勤激活功能:

  CUSTOM_LOGISTIC : function(x, derivate) {
    if (!derivate)
      return 1 / (1 + Math.exp(-x)) * 9;
    var fx = Activation.CUSTOM_LOGISTIC(x);
    return fx * (1 - fx);
  },

并将此激活功能分配给您的输出神经元/节点。