使用数学库的 Softmax 激活函数
Softmax activation function using math library
我正尝试在 python 中为我的反向传播和梯度下降程序开发一个 softmax 函数。在我得到输出层的输出(2 个输出)后,我调用了 softmax 函数,输出是一个类似向量的 [0.844521, 0.147048]
,我当前实现的 softmax 函数是这样的:
import math
vector = [0.844521, 0.147048]
def soft_max(x):
e = math.exp(x)
return e / e.sum()
print(soft_max(vector))
然而,当我 运行 它时,我得到以下错误
TypeError: must be real number, not list
注意:
我只想使用数学库而不使用其他
函数math.exp
只能作用于标量,不能作用于整个数组。如果你只想使用 math
而不是你需要按元素实现它:
import math
def soft_max(x):
exponents = []
for element in x:
exponents.append(math.exp(element))
summ = sum(exponents)
for i in range(len(exponents)):
exponents[i] = exponents[i] / summ
return exponents
if __name__=="__main__":
arr = [0.844521, 0.147048]
output = soft_max(arr)
print(output)
不过我还是要强调,使用numpy
会更容易解决问题:
import numpy as np
def soft_max(x):
e = np.exp(x)
return e / np.sum(e)
if __name__=="__main__":
arr = [0.844521, 0.147048]
output = soft_max(arr)
print(output)
我正尝试在 python 中为我的反向传播和梯度下降程序开发一个 softmax 函数。在我得到输出层的输出(2 个输出)后,我调用了 softmax 函数,输出是一个类似向量的 [0.844521, 0.147048]
,我当前实现的 softmax 函数是这样的:
import math
vector = [0.844521, 0.147048]
def soft_max(x):
e = math.exp(x)
return e / e.sum()
print(soft_max(vector))
然而,当我 运行 它时,我得到以下错误
TypeError: must be real number, not list
注意: 我只想使用数学库而不使用其他
函数math.exp
只能作用于标量,不能作用于整个数组。如果你只想使用 math
而不是你需要按元素实现它:
import math
def soft_max(x):
exponents = []
for element in x:
exponents.append(math.exp(element))
summ = sum(exponents)
for i in range(len(exponents)):
exponents[i] = exponents[i] / summ
return exponents
if __name__=="__main__":
arr = [0.844521, 0.147048]
output = soft_max(arr)
print(output)
不过我还是要强调,使用numpy
会更容易解决问题:
import numpy as np
def soft_max(x):
e = np.exp(x)
return e / np.sum(e)
if __name__=="__main__":
arr = [0.844521, 0.147048]
output = soft_max(arr)
print(output)