神经网络模型:感知器
2017-05-09 23:33
148 查看
感知器是神经网络中的概念,是一个接受数个输入,经过内部计算后得到输出的模型,其模拟的是自然界的神经细胞:接受输入信号的刺激,达到一定阈值后细胞体表现为激发,否则为抑制。
python代码演示该模型:
这里简便起见以0为阈值。
单层感知器可以实现简单逻辑的判断,但要求数据是线性可分的。对线性可分这个条件要求的原因在于其计算输出的方法:output=∑wi∗input(i) 。
要实现对线性不可分数据的分类,需要使用多层感知器。
可以看出,多层感知器是对单层感知器的扩展,输入层到隐藏层就是多个单层感知器的组合,隐藏层各个节点的输出又作为输入,组合为输出层的输出。
注1:代码中暂时未考虑权值的分配,权值的分配需要训练算法。
注2:在代码中以列表形式将输入存入对象中,多层感知器中这样做是低效的,会有大量的输入数据冗余。
参考资料:
http://blog.csdn.net/stan1989/article/details/8565499
http://blog.csdn.net/xiaowei_cqu/article/details/9004331
单层感知器
单层感知器最为简单,只有输入层和输出层,其计算规则为:激发值为输入与权值的点积,若激发值大于某阈值则输出1以代表激发,否则输出-1代表抑制。python代码演示该模型:
class slp(object): def __init__(self,num): self.w = [0.0]*num self.input = [0.0]*num self.output = 0 def input(self,ilist): if len(ilist) == len(self.input): self.input = ilist else: print 'length error' def calcu_result(self): iszie = len(self.input) res = sum([self.w[i]*self.input[i] for i in range(isize)]) if res > 0: self.output = 1 else: self.output = -1
这里简便起见以0为阈值。
单层感知器可以实现简单逻辑的判断,但要求数据是线性可分的。对线性可分这个条件要求的原因在于其计算输出的方法:output=∑wi∗input(i) 。
要实现对线性不可分数据的分类,需要使用多层感知器。
多层感知器
多层感知器与单层感知器相比,多了一层隐藏层,隐藏层对于输入和输出都是透明的。def mlp(object): def __init__(self,num): self.in_floor = [slp(num)]*num self.hide_floor = [slp(num)]*num self.w = [0.0]*num self.output = 0 def input(self,ilist): if len(ilist) == len(self.in_floor): for item in self.in_floor: item.input(ilist) else: print 'length error' def calcu_result(self): in_for_hide = [] for item in self.in_floor: item.calcu_result() in_for_hide.append(item.output) for item in self.hide_floor: item.input(in_for_hide) item.calcu_result() iszie = len(self.hide_floor) res = sum([self.w[i]*self.hide_floor[i].output for i in range(isize)]) if res > 0: self.output = 1 else: self.output = -1
可以看出,多层感知器是对单层感知器的扩展,输入层到隐藏层就是多个单层感知器的组合,隐藏层各个节点的输出又作为输入,组合为输出层的输出。
注1:代码中暂时未考虑权值的分配,权值的分配需要训练算法。
注2:在代码中以列表形式将输入存入对象中,多层感知器中这样做是低效的,会有大量的输入数据冗余。
参考资料:
http://blog.csdn.net/stan1989/article/details/8565499
http://blog.csdn.net/xiaowei_cqu/article/details/9004331
相关文章推荐
- 基于感知器模型的线性神经网络
- Python实现感知器模型、两层神经网络
- 基于感知器模型的线性神经网络
- Python 实现感知器模型、两层神经网络
- 神经网络1.3-感知器收敛定理
- 常用神经网络模型及其应用评述
- 反向传播BP模型(属于神经网络)
- 一、【word2vec学习路线】神经网络语言模型
- 感知器和神经网络
- 【深度】机器学习进化史:从线性模型到神经网络
- 基于神经网络的统计语言模型-----第一章 引言
- 25径向基函数神经网络模型与学习算法.ppt
- 使用nntool神经网络工具箱建立单层感知器
- MATLAB神经网络编程(一)——感知器
- 牛津大学神经网络语言模型 OxLM 安装及使用
- 神经网络模型分类
- [置顶] NB多项式事件模型、神经网络、SVM之函数/几何间隔——斯坦福ML公开课笔记6
- 神经网络基础和感知器
- 感知器学习算法----神经网络
- 建模算法(六)——神经网络模型