阶跃函数求微分,阶跃函数化简

  阶跃函数求微分,阶跃函数化简

  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() #显示输出图形如下:

阶跃函数求微分,阶跃函数化简