python 中的 sigmoid,可以采用标量、向量或矩阵
sigmoid in python that can take scalar, vector or matrix
以下代码是用Octave编程语言编写的
g =1./(1+e.^-(z)
它计算一个 sigmoid 函数,可以采用标量、向量或矩阵。例如
如果我将上面的内容放入函数 sigmoid(z) 中,其中 z=0,结果将是:
result=sigmoid(0)
结果将是标量 ( 0.5)
如果传递一个向量 z= [ 0.2, 0.4, 0.1],它会输出一个向量作为结果:-
result=sigmoid(z)
结果是一个向量:
0.54983 0.59869 0.52498
如果 z 是一个矩阵,如
z=[ 0.2 0.4; 0.5 0.7; 0.9 .004]
result = sigmoid(z)
结果是=
0.54983 0.59869
0.62246 0.66819
0.71095 0.50100
现在如何在 Python 中实现类似的方法?。我试过下面的代码,
g=1./ (1 + math.exp(-z))
但它只适用于标量。不适用于矢量和矩阵。我究竟做错了什么。
对不起,我之前的问题不是很清楚。我正在重新编辑它。
numpy 模块包含在许多 Python 发行版中并且易于添加到其他发行版中,具有数组功能。以下是如何使用 numpy 在 Python 中执行您想要的操作。请注意,在numpy中定义数组与在Octave中有点不同,但sigmoid表达式几乎完全相同。
from numpy import array, exp
z = array([ 0.2, 0.4, 0.1])
print('z = \n', z)
g = 1 / (1 + exp(-z))
print('g =\n', g)
print()
z = array([[0.2, 0.4], [0.5, 0.7], [0.9, .004]])
print('z = \n', z)
g = 1 / (1 + exp(-z))
print('g =\n', g)
该代码(IPython 中的运行)的结果是:
z =
[ 0.2 0.4 0.1]
g =
[ 0.549834 0.59868766 0.52497919]
z =
[[ 0.2 0.4 ]
[ 0.5 0.7 ]
[ 0.9 0.004]]
g =
[[ 0.549834 0.59868766]
[ 0.62245933 0.66818777]
[ 0.7109495 0.501 ]]
或者,您可以使用 vectorized Sigmoid function expit
scipy:
from scipy.special import expit
from numpy import array
z = array([ 0.2, 0.4, 0.1])
g = expit(z)
以下代码是用Octave编程语言编写的
g =1./(1+e.^-(z)
它计算一个 sigmoid 函数,可以采用标量、向量或矩阵。例如 如果我将上面的内容放入函数 sigmoid(z) 中,其中 z=0,结果将是:
result=sigmoid(0)
结果将是标量 ( 0.5) 如果传递一个向量 z= [ 0.2, 0.4, 0.1],它会输出一个向量作为结果:-
result=sigmoid(z)
结果是一个向量:
0.54983 0.59869 0.52498
如果 z 是一个矩阵,如
z=[ 0.2 0.4; 0.5 0.7; 0.9 .004]
result = sigmoid(z)
结果是=
0.54983 0.59869
0.62246 0.66819
0.71095 0.50100
现在如何在 Python 中实现类似的方法?。我试过下面的代码,
g=1./ (1 + math.exp(-z))
但它只适用于标量。不适用于矢量和矩阵。我究竟做错了什么。 对不起,我之前的问题不是很清楚。我正在重新编辑它。
numpy 模块包含在许多 Python 发行版中并且易于添加到其他发行版中,具有数组功能。以下是如何使用 numpy 在 Python 中执行您想要的操作。请注意,在numpy中定义数组与在Octave中有点不同,但sigmoid表达式几乎完全相同。
from numpy import array, exp
z = array([ 0.2, 0.4, 0.1])
print('z = \n', z)
g = 1 / (1 + exp(-z))
print('g =\n', g)
print()
z = array([[0.2, 0.4], [0.5, 0.7], [0.9, .004]])
print('z = \n', z)
g = 1 / (1 + exp(-z))
print('g =\n', g)
该代码(IPython 中的运行)的结果是:
z =
[ 0.2 0.4 0.1]
g =
[ 0.549834 0.59868766 0.52497919]
z =
[[ 0.2 0.4 ]
[ 0.5 0.7 ]
[ 0.9 0.004]]
g =
[[ 0.549834 0.59868766]
[ 0.62245933 0.66818777]
[ 0.7109495 0.501 ]]
或者,您可以使用 vectorized Sigmoid function expit
scipy:
from scipy.special import expit
from numpy import array
z = array([ 0.2, 0.4, 0.1])
g = expit(z)