如何为 sigmoid 函数删除 python 中的这些循环
how to remove these loops in python for sigmoid function
def sigmoid(a):
g = a
for i in range(a.shape[0]):
for j in range(a.shape[1]):
if a[i][j] >= 0:
z = np.exp(-a[i][j])
g[i][j] = 1 / (1 + z)
else:
z = np.exp(a[i][j])
g[i][j] = 1 / (1 + z)
return g
我该如何改进这段代码?这些循环花费了太多时间。
我尝试了以下代码
def sigmoid(a):
if a > 0:
z = np.exp(-a)
return 1/(1+z)
else:
z = np.exp(a)
return 1/(1+z)
但它不适用于二维数组甚至一维数组,在 if 语句中给出错误。
if a > 0: ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
abs(a)
给出了 numpy
数组中每个元素的绝对值,所以你可以简单地使用:
def sigmoid(a):
z = np.exp(-abs(a))
return 1/(1+z)
def sigmoid(a):
g = a
for i in range(a.shape[0]):
for j in range(a.shape[1]):
if a[i][j] >= 0:
z = np.exp(-a[i][j])
g[i][j] = 1 / (1 + z)
else:
z = np.exp(a[i][j])
g[i][j] = 1 / (1 + z)
return g
我该如何改进这段代码?这些循环花费了太多时间。 我尝试了以下代码
def sigmoid(a):
if a > 0:
z = np.exp(-a)
return 1/(1+z)
else:
z = np.exp(a)
return 1/(1+z)
但它不适用于二维数组甚至一维数组,在 if 语句中给出错误。
if a > 0: ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
abs(a)
给出了 numpy
数组中每个元素的绝对值,所以你可以简单地使用:
def sigmoid(a):
z = np.exp(-abs(a))
return 1/(1+z)