本文已参与「新人创作礼」活动,一起开启掘金创作之路。
激活函数: 激活函数(Activation Function)是一种添加到人工神经网络中的函数,旨在帮助网络学习数据中的复杂模式。类似于人类大脑中基于神经元的模型,激活函数最终决定了要发射给下一个神经元的内容。
常见的激活函数有sigmoid、tanh、ReLU、阶跃函数等等
1)sigmoid函数
公式:
代码:
def sigmoid(x):
return 1/(1+np.exp(-x))
2)tanh函数
公式:
代码:
def tanh(x):
return (np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))
3)relu函数
公式:
代码:
def relu(x):
return np.maximum(0, x)
4)LeakyReLU函数
公式:
代码:
def leaky_relu(x):
alpha = 0.1
return np.array([alpha * xi if xi <= 0 else xi for xi in x])
5)softmax函数
公式:
代码:
def softmax(x):
x = x - np.max(x)
return np.array([np.exp(xi)/np.sum(np.exp(x)) for xi in x])
6)swish函数
公式:
代码:
def swish(x):
return x / (1 + np.exp(-x))
全部代码:
from matplotlib import pyplot as plt
import numpy as np
def sigmoid(x):
return 1/(1+np.exp(-x))
def tanh(x):
return (np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))
def relu(x):
return np.maximum(0, x)
def leaky_relu(x):
alpha = 0.1
return np.array([alpha * xi if xi <= 0 else xi for xi in x])
def softmax(x):
x = x - np.max(x)
return np.array([np.exp(xi)/np.sum(np.exp(x)) for xi in x])
def swish(x):
return x / (1 + np.exp(-x))
space_title_plot = -0.7
x = np.arange(-10, 10, 1)
y = sigmoid(x)
plt.subplot(3, 2, 1)
plt.plot(x, y)
plt.title('(a) sigmoid', y=space_title_plot)
plt.grid()
y2 = tanh(x)
plt.subplot(3, 2, 2)
plt.plot(x, y2)
plt.title('(b) tanh', y=space_title_plot)
plt.grid()
y3 = relu(x)
plt.subplot(3, 2, 3)
plt.plot(x, y3)
plt.title('(c) relu', y=space_title_plot)
plt.grid()
y4 = leaky_relu(x)
plt.subplot(3, 2, 4)
plt.plot(x, y4)
plt.title('(d) leakyRelu', y=space_title_plot)
plt.grid()
y5 = softmax(x)
plt.subplot(3, 2, 5)
plt.plot(x, y5)
plt.title('(e) softmax', y=space_title_plot)
plt.grid()
plt.subplot(3, 2, 6)
y6 = swish(x)
plt.plot(x, y6)
plt.title('(f) swish', y=space_title_plot)
plt.grid()
plt.subplots_adjust(left=None, bottom=None, right=None, top=None,wspace=None, hspace=0.8)
plt.show()
运行截图: