阶跃函数求微分,阶跃函数化简
Python阶跃函数,sigmoid函数,ReLU函数神经网络阶跃函数实现sigmoid函数实现ReLU函数实现
神经网络
神经网络有三层,左边是输入层,中间层,右边是输出层。其中,中间层也叫隐藏层,第0层是输入层,第1层是中间层,第2层是输出层。
传感机接收两个输入信号x1和x2,输出Y,其数学公式为:
y={ 0 b w1x 1 w2x 2=0 1 b w1x 1 w2x 20y=\ begin { cases } 0 \ text { b w1x 1 w2x 2=0 } \ \ 1 \ text { b w1x 1 w2x 2 0 } \ end { cases } y={ 01 b w1x 1 w2x 2=0 b w1x 1 w2x 20
b是偏置,控制神经元激活的难易程度,w1和w2是每个信号的权重,用来控制信号的重要性。
上述公式也可以简化为一个函数:
y=h(b w1x1 w2x2)
h(x)={ 0 x=0 1x 0h(x)=\ begin { cases } 0 \ text { x=0 } \ \ 1 \ text { x 0 } \ end { cases } h(x)={ 01x=0x 0
当输入超过0时,函数h(x)将输出1,当输入不超过0时,输出0。
阶跃函数实现阶跃函数:以一定的阈值为界,一旦超过阈值就会切换输出。感知器中采用阶跃函数作为激活函数,进入神经网络就是将激活函数从阶跃函数变为其他函数。当输入超过0时输出1,当输入不超过0时输出0。
函数中的参数x只能接受实数,不能接受数组。为了方便起见,我们使用numpy数组来实现它。NumPy数组的不等式运算后会生成一个布尔数组,其中大于0的元素为真,小于等于0的元素为假。如果数组x=np.array[-1.0,-0.5,1.2,2],y=x0后,输出的y数组将是[False,False,True,True]。但是我们输出函数图的时候需要int类型的函数,所以需要把Boolean类型的数组转换成int类型的数组,用y.astype(np.int)来完成。
# step函数导入numpy as NP导入matplotlib.py lab as PLT #绘制图形#设置字体,使之成为可能bool输入中文PLT . rcparams[ font . sans-serif ]=[ ST song ]def step fun(x):#定义函数返回np.array(x 0) #此时数组x=np.arange(-10.0,10.0,0.1) # x轴取-10.0到10.0, Unit 0.1y=stepfun(x) #函数调用print(y) # print out bool数组y1=y.astype(np.int) #将数组y的元素从boolean转换为int print(y1) # print out int数组plt.plot(x,y1)plt.ylim(-0.5 1.5) # y轴数值范围plt.xlabel(x) # x轴plt.ylabel(y) # y轴plt.title(阶跃函数图)# Title plt.show().
sigmoid函数的实现sigmoid函数的实现可以通过将输出的数组函数转换成sigmoid函数来实现。使用激活函数sigmoid函数公式:
h(x)=1 1 e x p(x)h(x)=\ frac { 1 } { 1 exp(-x)} h(x)=1 exp(x)1
我们画图的时候,把阶跃函数和sigmoid函数一起画。
步骤:
(1)首先你需要定义一个接收参数x的stepfun函数和sigmoid函数,其中stepfun函数返回的数组是布尔型的,sigmoid函数返回的数组是浮点型的。
(2)然后给参数x赋值,这里取-10到10,其中单位区间设置为0.1;调用两个函数。
(3)由于stepfun函数的输出是Boolean类型的数组,所以需要将Boolean类型的数组转换成int类型的数组。
(4)最后输出结果并绘制图形。
# step函数和sigmoid函数实现导入numpy为NP导入matplotlib.py lab为PLT #绘制图形#设置字体,使输入中文PLT成为可能。RC params[ font . sans-serif ]=[ ST song ]# Define fun(step fun)def step fun(x):return NP . array(x 0)#此时返回bool类型的数组# Define function(Sigmoid function)def Sigmoid(x):# Sigmoid function,返回数组return1/(1NP。EXP (-x)) x=NP。Arange (-10.0,10.0,0.1) # x轴取-10.0到10.0,Unit 0.1y=stepfun(x) #函数调用step函数print(y) # print out bool类型数组y1=y.astype(np.int) #将数组y的元素从bool类型转换为int类型print(y1) # print out int类型数组f=sigmoid(x) #函数sigmoid函数print(f) # printout数组#绘图图形plt.plot(x,y1,color color= red ,linestyle=-,Label=sigmoid function) # label是标签plt.ylim(-0.5,1.5) # y轴数值范围plt.xlabel(x) # x轴plt.ylabel(y) # y轴plt.title(阶跃函数和sigmoid函数图形)# title PLT
ReLU函数的实现ReLU函数在输入大于0时直接输出这个值,在输入小于等于0时输出0。ReLU的函数公式为:
h(x)={ x x0 x=0h(x)=\ begin { cases } x \ text { x0 } \ \ 0 \ text { x=0 } \ end { cases } h(x)={ x0 x0 x=0
使用NumPy函数中的最大值函数,最大值函数会从输入值中选择一个较大的值输出。
# ReLU函数实现import numpy as NP import matplotlib . py lab as PLT # drawing graphics # setting font,使输入中文PLT . RC params[ font . sans-serif ]=[ ST song ]def ReLU fun(x):#定义函数return np.maximum(0,x) #返回一个数组(如果大于0,输出x,但小于等于0,输出0) x=np.arange (-10.0,)0.1) # x轴并且单位区间为0.1y=relufun(x) #函数调用print(y) # printout array #绘图graph plt.plot(x,y)plt.ylim(-1,12)# y轴plt.xlabel (x) # x轴plt.ylabel (y) # y轴plt.title(ReLU函数graph) # title plt.show() #显示输出图形如下:
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。