如何用python计算_如何用Python计算Softmax?

Softmax函数,或称归一化指数函数,它能将一个含任意实数的K维向量z“压缩”到另一个K维实向量\(\sigma{(z)}\)中,使得每一个元素的范围都在(0,1)之间,并且所有元素的和为1。该函数的形式通常按下面的式子给出:

\[\sigma{(z)_j}=\frac{e^{z_j}}{\sum_{k=1}^{K} e^{z_k}} \quad for \, j = 1, ..., K

\]

输入向量 [1,2,3,4,1,2,3]对应的Softmax函数的值为[0.024,0.064,0.175,0.475,0.024,0.064,0.175]。输出向量中拥有最大权重的项对应着输入向量中的最大值“4”。

这也显示了这个函数通常的意义:对向量进行归一化,凸显其中最大的值并抑制远低于最大值的其他分量。

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

import math

z = [1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0]

z_exp = [math.exp(i) for i in z]

print(z_exp) # Result: [2.72, 7.39, 20.09, 54.6, 2.72, 7.39, 20.09]

sum_z_exp = sum(z_exp)

print(sum_z_exp) # Result: 114.98

softmax = [round(i / sum_z_exp, 3) for i in z_exp]

print(softmax) # Result: [0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]

[2.718281828459045, 7.38905609893065, 20.085536923187668, 54.598150033144236, 2.718281828459045, 7.38905609893065, 20.085536923187668]

114.98389973429897

[0.024, 0.064, 0.175, 0.475, 0.024, 0.064, 0.175]

Python使用numpy计算的示例代码:

import numpy as np

z = np.array([1.0, 2.0, 3.0, 4.0, 1.0, 2.0, 3.0])

print(np.exp(z)/sum(np.exp(z)))

[0.02364054 0.06426166 0.1746813 0.474833 0.02364054 0.06426166

0.1746813 ]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值