python astype函数_神经网络中常见激活函数的python表达

99d584a99ff81802fc1ab215723080fa.png

在神经网络最后的输出层,通常会使用激活函数将最后一层神经元得到的数据再进行计算,最终得到一个输出的结果,这里称该函数为激活函数,比对输出表达式为,当最后一层输出元得到的数据大于0,则输出1,小于0则输出0,这种称为阶跃函数,常见的激活函数有阶跃函数,sigmoid,ReLU,tanh函数

阶跃函数

阶跃函数的意义为,当输入数据大于某个值时输出值A,小于等于某个值时为B,表现为在某个值时输出突然变化,数学表达为

4dbfb41927baec590459dfaca0e43de6.png

该图表示,当输入小于等于0时,输出0,大于0时输出1,使用python的函数表达为

5fa970b625066f8c1bebd72cc96ae45e.png

函数比较简单,但是通常情况下,我们输入的数一般不会只是简单的一个数,一般是一个向量,将上面的函数使用numpy模块进行一下改造。

55be8f2a9fd8184af8c4543b21d2c6b5.png

上面脚本的输出为[1 1 0 0]

y=x>0 利用numpy的广播功能,将numpy数组依次和0进行对比,当大于0的时候返回True,否则返回False,再将True和False转换为int的0和1

>>> import numpy as np>>> x = np.array([1.0,2.0,0,-2.3])>>> y = x>0>>> yarray([ True, True, False, False])>>> y.astype(np.int)array([1, 1, 0, 0])

如果使用matplotlib对上面的函数进行图形化展示,如下

3dd4d066c3263f9740bcc178e658808f.png

得到的图形如下

d6c4ea224f12852e84c5c1e77e7502ef.png

sigmoid函数

阶跃函数在行为上表现的过于激进,更多的情况下我们希望在神经网络中得到一种更为平滑的输出,由其在分类问题中,比如我们一共可能有5种输出结果,我们希望在最后的激活函数中得到这5种结果的概率,取概率最大的那种可能结果,这时我们就不希望用到上面这种过于激进的函数,我们可以使用sigmoid函数。

sigmoid函数的数学表达式为

d0b307e3abbdb866ec87f2b6d2033ba9.png

sigmoid表达式

其中exp(−x)表示 的意思。e是纳皮尔常数2.7182...

python 的函数表达为

50ab7992ae34fc605ba0d1f2df7c5f3d.png

输出为[0.11920292 0.73105858 0.88079708]

sigmoid的函数图形为

21a3166ddec9045342fb5d0c94049cfe.png

sigmoid图形

将sigmoid函数与阶跃函数放在一起

85f2478864ab73c3b92a7de5b76d9f50.png
5376e6121fd2d265218064c86e59976f.png

sigmoid与阶跃图形对比

可以看出sigmoid函数比阶跃函数要平滑。

tanh函数

tanh的数学表达式为

5454d17e5ba450ffc4ddd18864d1d25e.png

表现为输入从-10到10之间,输出会从-1到1之间平滑变化,大于10的输出1,小于-10的输出-1,

python函数表达为

b8c0f9ec3404a7e62491d8ac87743243.png

上面输出为

[-1. -1. -0.99999997 -0.96402758 0. 0.96402758 0.99505475 1. 1. ]

tanh的图形为

7502d22e68e0f47193480865f8767b2a.png

ReLU函数

ReLU函数在输入大于0 时,直接输出该值;在输入小于等于0 时,输出0,数学表达式为

f72764a8c58605a974872c3349139dd3.png

sigmoid与阶跃图形对比

ReLU的python表达式为

ce421dfe96f0845b3e2474d1497d9022.png

输出为[0. 1. 2.]

ReLU的图形为

56c5560af16acce724db79222f5d6c59.png

上面四个激活函数的图形放到一起为

eeac4615b1a62985d896bd552d970cfc.png

参考资料 《深度学习入门:基于Python的理论与实现》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值