其他分享
首页 > 其他分享> > Chapter3_神经网络

Chapter3_神经网络

作者:互联网

神经网络

输入层(第0层)->中间层(隐藏层)->输出层(最后一层)

隐藏层的激活函数

阶跃函数

以阈值为界,一旦输入超过阈值,就切换输出

#阶跃函数的实现
import numpy as np
def step_function(x):
    y = x > 0
    return y.astype(np.int)
step_function(np.array([-1.0,1.0,2.0]))
array([0, 1, 1])
#绘制阶跃函数的图形
import matplotlib.pylab as plt
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函数

\[ h(x) = \frac{1}{1+exp(-x)} \]

#sigmoid函数的实现
def sigmoid(x):
    return 1/(1+np.exp(-x))
x = np.array([-1.0,1.0,2.0])
sigmoid(x)
array([0.26894142, 0.73105858, 0.88079708])
#绘制sigmoid函数的图像
x = np.arange(-5.0,5.0,0.1)
y1 = sigmoid(x)
plt.plot(x,y1)
plt.ylim(-0.1,1.1)
plt.show()

ReLU函数

Rectified Linear Unit函数在输入大于0时,直接输出该值;在输入小于等于0时,输出0
\[ h(x)=\begin{cases} x,& \text{$x>0$}\\ 0,& \text{$x\leq 0$} \end{cases} \]

#ReLU函数的实现
def relu(x):
    return np.maximum(0,x)

#绘制ReLU函数的图像
x = np.arange(-5.0,5.0,0.1)
y = relu(x)
plt.plot(x,y)
plt.ylim(-1.0,5.0)
plt.show()

输出层的激活函数

一般而言,回归问题用恒等函数,分类问题用softmax函数

#softmax函数的实现
def softmax(a):
    exp_a = np.exp(a)
    sum_exp_a = np.sum(exp_a)
    y = exp_a / sum_exp_a
    
    return y

softmax函数的注意事项
softmax函数在实现中要进行指数函数的运算,此时指数函数的值很容易变得非常大.超大值之间进行除法运算,会出现"不确定"的情况
改进
\[ y_k = \frac{exp(a)k)}{\sum_{i=1}^nexp(a_i)}=\frac{exp(a_k+C)}{\sum_{i=1}^nexp(a_i+C)} \]

def softmax(a):
    c = np.max(a)
    exp_a = np.exp(a-c)
    sum_exp_a = np.sum(exp_a)
    y  =exp_a / sum_exp_a
    
    return y

标签:plt,函数,sum,Chapter3,神经网络,softmax,exp,np
来源: https://www.cnblogs.com/suqinghang/p/12263024.html