Softmax激活实施

问题描述 投票:1回答:1

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

我想有一个类似的方法

private double softmax(double input) {
    double output = ???;
    return output;
}

任何想法如何看待实现?我的学习算法也需要softmax的导数。

java neural-network softmax
1个回答
2
投票

Softmax不会获得单个输入值。它以当前NN层的所有值的向量作为输入(“值”是指前一层点的输出,该点是由内核矩阵乘积并添加到偏差中),并输出概率分布所有值都落在[0, 1]范围内。

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

enter image description here

在我们的示例中:K = 5和Z 1,Z 2,...,Z 5是输入向量。

这是实现softmax的示例Java代码:

private double softmax(double input, double[] neuronValues) {
    double total = Arrays.stream(neuronValues).map(Math::exp).sum();
    return Math.exp(input) / total;
}
© www.soinside.com 2019 - 2024. All rights reserved.