sigmoid 函数图可以是线性的吗?
Can sigmoid function graph be linear?
我想我有一个 "dumb" 问题。
我有一个计算 sigmoid 函数的 python 代码:
def sigmoid(z):
return 1 / (1 + np.exp(-z))
我想看看给定数据的sigmoid函数是什么样的图,所以我把我的函数改成这样:
def sigmoid(z):
s = 1 / (1 + np.exp(-z))
plt.plot(s)
plt.title("Sigmoid")
plt.show()
return s
我得到的是:
数据取自https://www.kaggle.com/azzion/credit-card-fraud-detection-using-neural-network
所以问题是:sigmoid 函数是否可以与某些特定参数成线性关系,或者我做错了什么?
不,它不可能是线性的。我没有你的完整代码,但试试
x = np.linspace(-3, 3)
y = sigmoid(x)
plt.plot(x, y)
看形状
您看到的是您绘制 S 形曲线的范围的伪影。考虑以下三个绘图范围。正如您将看到的,第一个图看起来或多或少是线性的。此外,当您执行 plt.plot(s)
时,您正在绘制 仅 乙状结肠。所以当你这样做时,基本上你抛弃了 s
和 z
之间的所有关系。您应该将因变量和自变量都绘制为 ax.plot(z, s)
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(14, 3))
z1 = np.linspace(0, 1, 100)
z2 = np.linspace(-5, 5, 100)
z3 = np.linspace(-50, 50, 100)
def sigmoid(z, ax):
s = 1 / (1 + np.exp(-z))
ax.plot(z, s)
ax.set_title("Sigmoid")
return
for ax, z in zip(axes.flatten(), [z1, z2, z3]):
sigmoid(z, ax)
plt.tight_layout()
我想我有一个 "dumb" 问题。 我有一个计算 sigmoid 函数的 python 代码:
def sigmoid(z):
return 1 / (1 + np.exp(-z))
我想看看给定数据的sigmoid函数是什么样的图,所以我把我的函数改成这样:
def sigmoid(z):
s = 1 / (1 + np.exp(-z))
plt.plot(s)
plt.title("Sigmoid")
plt.show()
return s
我得到的是:
数据取自https://www.kaggle.com/azzion/credit-card-fraud-detection-using-neural-network
所以问题是:sigmoid 函数是否可以与某些特定参数成线性关系,或者我做错了什么?
不,它不可能是线性的。我没有你的完整代码,但试试
x = np.linspace(-3, 3)
y = sigmoid(x)
plt.plot(x, y)
看形状
您看到的是您绘制 S 形曲线的范围的伪影。考虑以下三个绘图范围。正如您将看到的,第一个图看起来或多或少是线性的。此外,当您执行 plt.plot(s)
时,您正在绘制 仅 乙状结肠。所以当你这样做时,基本上你抛弃了 s
和 z
之间的所有关系。您应该将因变量和自变量都绘制为 ax.plot(z, s)
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(14, 3))
z1 = np.linspace(0, 1, 100)
z2 = np.linspace(-5, 5, 100)
z3 = np.linspace(-50, 50, 100)
def sigmoid(z, ax):
s = 1 / (1 + np.exp(-z))
ax.plot(z, s)
ax.set_title("Sigmoid")
return
for ax, z in zip(axes.flatten(), [z1, z2, z3]):
sigmoid(z, ax)
plt.tight_layout()