Advertisement

Python3.8+环境下的Softmax分类模型构建

阅读量:

【python】实现softmax

  • softmax
  • 代码实现

softmax

softmax充当了一个多分类的概率函数,在将其输出转换为e^x后能够确保非负性;并对处理后的数值进行标准化处理从而具备了概率分布的形式。

其函数定义:

softmax(x_i)=\frac{e^x_i}{\sum_k e^x_k}

但是仔细观察上式,会发现存在两个问题:

  1. 随着x_i的值变得非常大(趋向于正无穷大),分子中的指数项将急剧增大
  2. x_i为负且绝对值较大时(即趋向于负无穷大),分母中的指数项总和将急剧减小至零

通常情况下来说,在进行数据预处理时可采用归一化处理的方法来实现对变量的标准化转换。具体而言,在这种归一化处理下,我们有\hat{x} = x - \max_{i}x_{i};从而得以消除因数值过大导致的计算上溢或数值下溢的问题。

代码实现

复制代码
    def softmax(x, axis=1):
    	# 计算每行的最大值
    	row_max = x.max(axis=axis)
    	# 每行的元素都要减去对应行的最大值,解决溢出问题
    	row_max = row_max.reshape(-1, 1)
    	hatx = x - row_max
    	# 计

全部评论 (0)

还没有任何评论哟~