softmax多分类激活函数

softmax 函数,也称归一化指数函数,不同于Relu、Tanh、Identity、sigmoid 激活函数它们的输入是一个单变量,而softmax 函数的输入是多个变量,常用于多分类神经网络输出,其公式为:

σ ( z ) j = e z j k = 1 K e z k          f o r    j = 1 , , K . \sigma(\mathbf{z})_j = \frac{e^{z_j}}{\sum_{k=1}^K e^{z_k}} \ \ \ \ \ \ \ \ for \ \ j = 1, …, K.

特点:
  • 每一个元素的范围都在 (0, 1) 之间
  • 所有元素的和为 1

描述说明:

输入向量 [1.0, 2.0, 5.0, 4.0, 2.0] 对应的Softmax函数的值为 [0.012, 0.034, 0.673, 0.248, 0.034]。通过 softmax 函数一作用,就映射成为 (0,1) 之间的值, 输出向量中拥有最大权重的项对应着输入向量中的最大值“4”。这也显示了这个函数通常的意义:对向量进行归一化,凸显其中最大的值并抑制远低于最大值的其他分量。所以在最后选取输出结点的时候,我们就可以选取概率最大(也就是值对应最大的)结点,作为我们的预测目标!

下面是使用Python进行函数计算的示例代码:

import math

# 输入多变量 K : 1.0, 2.0, 5.0, 4.0, 2.0
soft_input = [1.0, 2.0, 5.0, 4.0, 2.0]

# 计算每一个 e^{z_k} 的值
soft_exp = [math.exp(i) for i in soft_input]

# 计算 e^{z_k} 从 1 到 k 的值和
sum_soft_exp = sum(soft_exp)

# 每一个元素与和的概率比例, 最终计算的结果,保留三位小数,
softmax = [round(i / sum_soft_exp, 3) for i in soft_exp]

print(softmax)
# 输出结果: [0.012, 0.034, 0.673, 0.248, 0.034]

猜你喜欢

转载自blog.csdn.net/qq_35200479/article/details/84865994