AI学习笔记10~Softmax 函数:从原理到实现
简简单单的创意
2025年02月26日 22:27
收录于文集
共12篇

代码块
Python
自动换行
复制代码
def softmax(x):
    x = x[0]
    x_row_max = np.max(x,axis=-1)
    x_row_max = x_row_max.reshape(tuple(list(x.shape)[:-1]+[1]))
    x = x - x_row_max
    x_exp = np.exp(x)
    x_exp_row_sum = np.sum(x_exp,axis=-1).reshape(tuple(list(x.shape)[:-1]+[1]))
    softmax = x_exp / x_exp_row_sum

    return softmax
复制成功

大家好,我是[简简单单的创意],一名软件程序员,也是一名UP主。今天我们来聊聊深度学习中常用的 Softmax 函数,它是多分类问题中不可或缺的一部分。

1. 什么是 Softmax?

Softmax 是一种激活函数,用于将输入值转换为概率分布。它的输出值范围在  之间,且所有输出值的和为 1。Softmax 通常用于多分类问题的输出层。

2. Softmax 的公式

Softmax 的数学公式如下:

Softmax 的数学公式

其中:

  • xixi 是输入的第 ii 个值。

  • 分母是所有输入的指数和。

3. Softmax 的实现

下面是一个 Python 实现的 Softmax 函数:

代码块
Python
自动换行
复制代码
def softmax(x):
    x_row_max = np.max(x, axis=-1, keepdims=True)
    x = x - x_row_max  # 数值稳定性处理
    x_exp = np.exp(x)
    x_exp_row_sum = np.sum(x_exp, axis=-1, keepdims=True)
    softmax = x_exp / x_exp_row_sum
    return softmax
复制成功

4. 代码解析

  • 输入

    • x:输入数据,形状为 (batch_size, num_classes) 或 (num_classes,)

  • 输出

    • softmax:Softmax 转换后的概率分布。

  • 步骤

    1. 计算每行的最大值,并进行数值稳定性处理。

    2. 对输入进行指数运算。

    3. 计算指数值的和。

    4. 将每个指数值除以对应行的指数和,得到概率分布。

5. 数值稳定性

在 Softmax 的实现中,直接计算指数可能会导致数值溢出。因此,我们通常会对输入进行归一化处理(减去最大值),从而避免数值问题。

6. 总结

Softmax 是深度学习中非常重要的函数,尤其在多分类问题中。理解 Softmax 的原理和实现,对于掌握深度学习模型非常有帮助。

如果你对深度学习感兴趣,欢迎关注我的频道,我会继续分享更多关于机器学习和深度学习的内容。如果你有任何问题或建议,也欢迎在评论区留言,我们一起讨论!

结尾

感谢大家的观看,别忘了点赞、投币、收藏,我们下期再见!

希望这篇稿件对你有帮助!如果有任何修改或补充的需求,欢迎随时提出!