前言
在卷积神经网络中,其基本结构由:卷积层 + 激活函数 + 池化层 这三层组成,我在这里就不讲解卷积层和池化层,通过绘制各自激活函数图像查看各种激活函数的特征。
Sigmoid
最为常见的激活函数要数Sigmoid函数了,其基本公式如下可见,例图如下:
def Sigmoid(x): y = np.exp(x) / (np.exp(x) + 1) return y
Tanh
Tanh函数计算公式如下,例图如下。
def Tanh(x): y = (np.exp(x) - np.exp(-x)) / (np.exp(x) + np.exp(-x)) # y = np.tanh(x) return y
ReLU
函数计算公式如下,例图如下。
def ReLU(x): y = np.where(x < 0, 0, x) return y
LeakyReLU
函数计算公式如下,例图如下。
def LeakyReLU(x, a): # LeakyReLU的a参数不可训练,人为指定。 y = np.where(x < 0, a * x, x) return y
PReLU
函数计算公式如下,例图如下。
def PReLU(x, a): # PReLU的a参数可训练 y = np.where(x < 0, a * x, x) return y
ReLU6
函数计算公式如下,例图如下。
def ReLU6(x): y = np.minimum(np.maximum(x, 0), 6) return y
Swish
函数计算公式如下,例图如下。
def Swish(x, b): y = x * (np.exp(b * x) / (np.exp(b * x) + 1)) return y
Mish
函数计算公式如下,例图如下。
def Mish(x): # 这里的Mish已经经过e和ln的约运算 temp = 1 + np.exp(x) y = x * ((temp * temp - 1) / (temp * temp + 1)) return y
Grad_Swish 和Grad_Mish
函数计算公式如下,例图如下。
def Grad_Swish(x, b): y_grad = np.exp(b * x) / (1 + np.exp(b * x)) + x * (b * np.exp(b * x) / ((1 + np.exp(b * x)) * (1 + np.exp(b * x)))) return y_grad def Grad_Mish(x): temp = 1 + np.exp(x) y_grad = (temp * temp - 1) / (temp * temp + 1) + x * (4 * temp * (temp - 1)) / ( (temp * temp + 1) * (temp * temp + 1)) return y_grad








