神经网络激活功能

时间:2016-11-17 14:35:12

标签: java neural-network

我终于有时间建立我自己的ANN库,但是我在理解某些行为时遇到了一些困难。

以下是我编码的一些激活函数:

DoubleFunction<Double> sigmoid = x -> 1 / (1 + Math.exp(-x));
DoubleFunction<Double> sigmoidDer = x -> {
    double s = sigmoid.apply(x);
    return s * (1 - s);
};

DoubleFunction<Double> tanh = Math::tanh;
DoubleFunction<Double> tanhDer = x -> 1. - Math.pow(tanh.apply(x), 2);

DoubleFunction<Double> relu = x -> Math.max(0, x);
DoubleFunction<Double> reluDer = x -> {
    if (x < 0)
        return 0;
    return 1;
};

DoubleFunction<Double> softPlus = x -> Math.log(1 + Math.exp(x));

在我的代码中,我只是选择一对作为激活函数(+衍生物)。

我的所有功能都没有转化为解决方案(我试图让网络学习XOR运算符),但tanh函数及其衍生物。

注意:我正在为输出常数1的每一层使用偏置神经元。

我已经检查了this但显然我在这里缺少一些基本的东西。

有人关心开导我吗?

0 个答案:

没有答案