神经网络模型:感知器

感知器是神经网络中的概念,是一个接受数个输入,经过内部计算后得到输出的模型,其模拟的是自然界的神经细胞:接受输入信号的刺激,达到一定阈值后细胞体表现为激发,否则为抑制。

单层感知器

单层感知器最为简单,只有输入层和输出层,其计算规则为:激发值为输入与权值的点积,若激发值大于某阈值则输出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=wiinput(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

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值