神经网络的激活函数、并通过python实现激活函数
神经网络的激活函数、并通过python实现
- what is 激活函数
- 激活函数的python实现
- python实现阶跃函数
- python实现sigmoid函数
- python实现ReLU函数
- 激活函数的特点
what is 激活函数
感知机的网络结构如下:
左图中,偏置b没有被画出来,如果要表示出b,可以像右图那样做。
用数学式来表示感知机:
上面这个数学式子可以被改写:
我们表达的意义是:输入信号的总和被h(x)转换成输出y。
像h(x)函数一样,将输入信号的总和转换为输出信号,这种函数一般被称为激活函数。上面这个h(x)表示的激活函数称为阶跃函数。
表示激活函数计算过程的图如下:
激活函数的python实现
python实现阶跃函数
为了方便阶跃函数的参数取Numpy数组,用以下方式实现阶跃函数。
对numpy数组进行不等号运算后,数组的各个元素都会进行不等号运算,生成一个布尔型数组。
这个代码里数组中x大于0的元素转换成True,小于等于0的元素转换成False。由于阶跃函数要输出int类型的0或1,所以添加一个dtype=np.int32。
import numpy as np
import matplotlib.pylab as pltdef step_function(x):return np.array(x > 0, dtype=np.int32)if __name__ == '__main__':X = np.arange(-5.0, 5.0, 0.1) # 在-0.5到5.0范围内,以0.1为单位生成Numpy数组# [-5.0,-4.9,...,4.9,5.0]Y = step_function(X)plt.plot(X, Y)plt.ylim(-0.1, 1.1) # 指定图中绘制的y轴的范围plt.show()
python实现sigmoid函数
下面定义的函数的参数x是Numpy数组时,结果也能正确被计算。因为Numpy具有广播功能,如果标量和Numpy数组进行数值运算,那么这个标量将和Numpy数组中的各个元素进行运算。
import numpy as np
import matplotlib.pylab as pltdef sigmoid(x):return 1 / (1 + np.exp(-x))if __name__ == '__main__':X = np.arange(-5.0, 5.0, 0.1)Y = sigmoid(X)plt.plot(X, Y)plt.ylim(-0.1, 1.1)plt.show()
python实现ReLU函数
代码中使用Nmupy的maximum函数,该函数会从输入的数值中选择较大的值进行输出。
import numpy as np
import matplotlib.pylab as pltdef relu(x):return np.maximum(0, x)if __name__ == '__main__':x = np.arange(-5.0, 5.0, 0.1)y = relu(x)plt.plot(x, y)plt.ylim(-1.0, 5.5)plt.show()
激活函数的特点
上面的激活函数无论是阶跃、sigmoid还是ReLU,使用的都是非线性函数,如果使用线性函数,比如h(x)=ax作为激活函数,那么y(x) = h(h(h(x)))的运算对应3层神经网络,这个运算会进行y(x) = aaax的乘法运算,但是同样的处理可以由y(x)=bx(b=aaa)这一次乘法运算表示,也还是相当于一层神经网络。也就是说,使用线性函数的话,加深神经网络的层数就没有意义了。为了发挥叠加层的优势,激活函数必须使用非线性函数。
神经网络的激活函数、并通过python实现激活函数相关推荐
- 使用权值衰减算法解决神经网络过拟合问题、python实现
使用权值衰减算法解决神经网络过拟合问题.python实现 一.what is 过拟合 二.过拟合原因 三.权值衰减 四.实验验证 4.1制造过拟合现象 4.2使用权值衰减抑制过拟合 一.what is ...
- 第一章 神经网络如何工作(附Python神经网络编程.pdf)
Python神经网络编程.pdf 链接: https://pan.baidu.com/s/1RkNfeNgT3Qtt_sEqRhw5Bg 提取码: 98ma 第一章 神经网络如何工作 神经网络的思考模 ...
- 人工神经网络(ANN)及python实现
前言 初学人工智能不久,今天碰上了人工神经网(ANN),开始学的时候很懵,一大堆理论.公式.推导-作为一名小白,还是很痛苦的,不过经过摸索,大概了 解了什么是ANN,公式的推导以及一些其他问题,下面我 ...
- 利用卷积神经网络实现人脸识别(python+TensorFlow)
利用CNN卷积神经网络实现人脸识别(python+TensorFlow) 使用的人脸数据是耶鲁大学的一个人脸数据集Yale_64x64.mat,数据集已经上传Yale 64x64.mat 程序: '' ...
- 【机器学习】广义回归神经网络(GRNN)的python实现
[机器学习]广义回归神经网络(GRNN)的python实现 一.广义回归神经网络原理 1.1.GRNN与PNN的关系 2.2.GRNN的网络结构 二.广义回归神经网络的优点与不足 2.1.优点 2.2 ...
- 【机器学习】概率神经网络(PNN)的python实现
[机器学习]概率神经网络(PNN)的python实现 一.概率神经网络原理 1.1.贝叶斯决策 1.2.PNN的网络结构 二.概率神经网路的优点与不足 2.1.优点(参考资料[1]) 2.2.缺点 三 ...
- R语言使用自定义函数编写深度学习Scaled Exponential Linear Unit (SELU)激活函数、并可视化SELU激活函数
R语言使用自定义函数编写深度学习Scaled Exponential Linear Unit (SELU)激活函数.并可视化SELU激活函数 目录
- 常用激活函数activation function(Softmax、Sigmoid、Tanh、ReLU和Leaky ReLU) 附激活函数图像绘制python代码
激活函数是确定神经网络输出的数学方程式. 激活函数的作用:给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数. 1.附加到网络中的每个神经元,并根据每个神经元的输入来确定是否应激活. 2 ...
- 卷积神经网络CNNs 为什么要用relu作为激活函数?
relu激活函数的优势: (1)反向传播时,可以避免梯度消失. (2)Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生(以及一些人的生 ...
最新文章
- ajax怎样发变量,使用jQuery Ajax发送多个变量
- 阿里年会的马老师说:认真生活、快乐工作、保持理想
- 预定义的类型“Microsoft.CSharp.RuntimeBinder.Binder”未定义或未导入
- 如何解决visual studio2017 install 下载安装极慢的问题
- Linux下查杀病毒
- mysql数据类型查询命令_Linux命令:MySQL系列之三--mysql数据类型及SQL结构化查询语句使用...
- BZOJ 1087状态压缩DP
- 28/100. Shortest Unsorted Continuous Subarray
- php中的自定义函数与c语言有什么区别,php与c语言的不同点是什么?
- 开源目标检测算法用于交通标志检测全方位评估
- 声明式事务、Spring 中常用注解、Ajax
- Linux 命令(113)—— seq 命令
- Hibernate的CRUD
- 海康威视错误代码说明(四)(错误代码:47~62)
- sql 按名称首字母拼音排序
- 简述et代理换ip软件网络功能。
- 2021年危险化学品生产单位安全生产管理人员新版试题及危险化学品生产单位安全生产管理人员找解析
- 【latex】Latex文献报错 Something‘s wrong--perhaps a missing \item. \end{thebibliography}
- 表示自己从头开始的句子_表示一切从头开始的唯美句子38条
- 【JavaSE】接口
热门文章
- npm包管理器安装模块
- 利用ASP.NET MVC 的默认类型绑定器---将Jquery datatables中的数据强类型绑定到实体类中
- 线程池三种队列使用,SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue
- 自动图片轮播php源码,js实现自动图片轮播代码
- mysql配置两个猪数据库_Linux下安装启动多个Mysql
- fastai学习笔记——安装
- JAVA minaio模型_分布式系统之Java IO模型
- python中config命令_【Python】 配置解析ConfigParser 命令行参数解析optparser
- Win7电脑定时关机怎么设置
- 几款优秀的点播、RTSP/RTMP直播播放器介绍