Sigmoid
实现
def sigmoid(x):
return 1 / (1 + np.exp(-x))
图形
import numpy as np
import matplotlib.pylab as plt
x = np.arange(-5.0, 5.0, 0.1)
y = sigmoid(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1) # 指定y轴的范围
plt.show()
阶跃函数
实现
def step_function(x):
y = x > 0
return y.astype(np.int)
图形
阶跃函数以0为界,输出从0切换到1(或者从1切换到0),它的值呈阶梯式变化,所以称为阶跃函数。
import numpy as np
import matplotlib.pylab as plt
def step_function(x):
return np.array(x > 0, dtype=np.int)
x = np.arange(-5.0, 5.0, 0.1)
y = step_function(x)
plt.plot(x, y)
plt.ylim(-0.1, 1.1) # 指定y轴的范围
plt.show()
Sigmoid函数和阶跃函数的比较
不同
平滑性不同,阶跃函数只能返回0或1,而sigmoid可以返回连续实数。
共同
输入小时,输出接近0(为0);随着输入增大,输出向1靠近(变成1);
不管输入信号有多小,或者有多大,输出信号的值都在0到1之间;
均为非线性函数。
Relu
在输入大于0时,直接输出该值;在输入小于等于0时,输出0
实现
def relu(x):
return np.maximum(0, x)
参考书籍《深度学习入门:基于python的理论与实现》