【问题标题】:Softmax Activation ImplementationSoftmax 激活实现
【发布时间】:2020-01-21 12:43:37
【问题描述】:

我目前正在用 Java 编写自己的神经网络实现。我已经实现了一些常用的激活函数,例如 Sigmoid 或 ReLU,但我不知道如何实现 Softmax。

我想要一个类似的方法

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

有什么想法可以实现吗?我还需要为我的学习算法提供 softmax 的导数。

【问题讨论】:

    标签: java neural-network softmax


    【解决方案1】:

    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;
    }
    

    【讨论】:

    • 谢谢,在我看到你的回答之前,我在实现它时使用了类似的方法。
    猜你喜欢
    • 2012-04-11
    • 2021-03-23
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 2018-10-24
    • 2021-03-06
    • 1970-01-01
    相关资源
    最近更新 更多