深度学习入门(基于python的理论与实现)-07神经网络
·
图3-1中的网络一共由3层神经元构成,但实质上只有2层神经 元有权重,因此将其称为“2层网络”。
中间层也称隐藏层。


引入h(x)
y =h(b+w1x1+w2x2)

h(x)会将输入信号的总和转换为输出信号,这种函数称为激活函数。激活函数作用在于决定如何来激活输入信号的总和。
a =b+w1x1+w2x2
y =h(a)
a:输入信号和偏置的总和,然后用h()将a转换为y输出。

阶跃函数:一旦输出超过阈值,就切换输出,感知机使用
代码实现:
import numpy as np
import matplotlib.pyplot as plt
def step_function(x):
return np.array(x>0,dtype=np.bool)
x=np.arange(-3.0,3.0,0.1)
y=step_function(x)
plt.plot(x,y)
plt.ylim(-0.1,1.1) #指定y轴范围
plt.show()
激活函数:
神经网络中常使用的激活函数就是sigmoid函数:

exp(−x)表示e^−x的意思。e是纳皮尔常数2.7182...。
代码实现
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(x):
return 1/(1+np.exp(-x))
x = np.arange(-5.0,5.0,0.1)
y = sigmoid(x)
plt.plot(x,y)
plt.ylim(-0.1,1.1)
plt.show()

sigmoid函数是一条平滑的曲线,它的平滑性对神经网络学习具有重要意义。
import numpy as np
import matplotlib.pyplot as plt
def sigmoid(x):
return 1/(1+np.exp(-x))
def step_function(x):
return np.array(x>0,dtype=np.bool)
x = np.arange(-5.0,5.0,0.1)
y = sigmoid(x)
plt.plot(x,y)
y=step_function(x)
plt.plot(x,y)
plt.ylim(-0.1,1.1)
plt.show()

由此可以看出阶跃函数只能返回0或1,sigmoid可以返回0.731...0.880等实数,所以神经网络中流动的是连续的实数值信号。
阶跃函数和sigmoid函数共同点:1.当输入信号为重要信息时, 阶跃函数和sigmoid函数都会输出较大的值;当输入信号为不重要的信息时, 两者都输出较小的值。2.不管输入信号有多小,或者有多 大,输出信号的值都在0到1之间。3.两者均为非线性函数。
神经网络的激活函数必须使用非线性函数。即激活函数不能使用线性函数。
更多推荐




所有评论(0)