Java Softmax激活实现

Java Softmax激活实现,java,neural-network,softmax,Java,Neural Network,Softmax,我目前正在用Java开发自己的神经网络实现。我已经实现了一些常见的激活功能,比如Sigmoid或ReLU,但我不知道如何实现Softmax 我想要一个像这样的方法 private double softmax(double input) { double output = ???; return output; } 有没有关于实现外观的想法?我还需要学习算法的softmax导数。没有得到一个输入值。它将当前NN层的所有值的向量作为输入(通过“值”,我指的是前一层的输出被内核矩阵

我目前正在用Java开发自己的神经网络实现。我已经实现了一些常见的激活功能,比如Sigmoid或ReLU,但我不知道如何实现Softmax

我想要一个像这样的方法

private double softmax(double input) {
    double output = ???;
    return output;
}
有没有关于实现外观的想法?我还需要学习算法的softmax导数。

没有得到一个输入值。它将当前NN层的所有值的向量作为输入(通过“值”,我指的是前一层的输出被内核矩阵点积并添加到偏差中),并输出一个概率分布,其中所有值都属于
[0,1]
范围

因此,例如,如果您的NN层有5个单元/神经元,softmax函数将5个值作为输入值,并使用以下公式将它们规格化为概率分布,其中所有5个输出值都在
[0,1]
之间:

其中关于我们的示例:K=5和Z1,Z2,…,Z5是输入向量

下面是实现softmax的示例Java代码:

private double softmax(double input, double[] neuronValues) {
    double total = Arrays.stream(neuronValues).map(Math::exp).sum();
    return Math.exp(input) / total;
}
无法获取单个输入值。它将当前NN层的所有值的向量作为输入(通过“值”,我指的是前一层的输出被内核矩阵点积并添加到偏差中),并输出一个概率分布,其中所有值都属于
[0,1]
范围

因此,例如,如果您的NN层有5个单元/神经元,softmax函数将5个值作为输入值,并使用以下公式将它们规格化为概率分布,其中所有5个输出值都在
[0,1]
之间:

其中关于我们的示例:K=5和Z1,Z2,…,Z5是输入向量

下面是实现softmax的示例Java代码:

private double softmax(double input, double[] neuronValues) {
    double total = Arrays.stream(neuronValues).map(Math::exp).sum();
    return Math.exp(input) / total;
}

谢谢,在我看到你的答案之前,我在实现它时使用了类似的方法。谢谢,在我看到你的答案之前,我在实现它时使用了类似的方法。