小编Ahm*_*taş的帖子

我怎样才能在反向传播中获取softmax输出的导数

因此,我对 ML 很陌生,并尝试创建一个简单的“库”,以便我可以了解有关神经网络的更多信息。

我的问题:根据我的理解,我必须根据每层的激活函数求导数,这样我就可以计算它们的增量并调整它们的权重等......

对于 ReLU、sigmoid、tanh,用 Java 实现它们非常简单(顺便说一句,这是我使用的语言)

但要从输出到输入,我必须从(显然)具有 softmax 激活函数的输出开始。

那么我是否也必须采用输出层的导数,或者它只适用于所有其他层?

如果我确实必须获得导数,我怎样才能在Java中实现导数呢?谢谢。

我已经阅读了很多关于 Softmax 算法导数的解释的页面,但它们对我来说真的很复杂,正如我所说,我刚刚开始学习 ML,我不想使用现成的库,所以在这里我是。

这是我存储激活函数的类。

public class ActivationFunction {

    public static double tanh(double val) {
        return Math.tanh(val);
    }

    public static double sigmoid(double val) {
        return 1 / 1 + Math.exp(-val);
    }

    public static double relu(double val) {
        return Math.max(val, 0);
    }

    public static double leaky_relu(double val) {
        double result = 0;
        if (val > 0) result = val;
        else result = val * 0.01;
        return result;
    } …
Run Code Online (Sandbox Code Playgroud)

java machine-learning derivative backpropagation softmax

3
推荐指数
1
解决办法
5297
查看次数