python实现感知器


Posted in Python onDecember 19, 2017

上篇博客转载了关于感知器的用法,遂这篇做个大概总结,并实现一个简单的感知器,也为了加深自己的理解。

感知器是最简单的神经网络,只有一层。感知器是模拟生物神经元行为的机器。感知器的模型如下:

python实现感知器

给定一个n维的输入 ,其中w和b是参数,w为权重,每一个输入对应一个权值,b为偏置项,需要从数据中训练得到。

激活函数 感知器的激活函数可以有很多选择,比如我们可以选择下面这个阶跃函数f来作为激活函数:

python实现感知器

输出为:

python实现感知器

事实上感知器可以拟合任何线性函数,任何线性分类或线性回归的问题都可以用感知器来解决。但是感知器不能实现异或运算,当然所有的线性分类器都不可能实现异或操作。

所谓异或操作:

python实现感知器

二维分布图为:

python实现感知器

对于上图,我们找不到一条直线可以将0,1类分开。对于and操作,感知器可以实现,我们可以找到一条直线把其分为两部分。。

对于and操作:

python实现感知器

对应的二维分布图为:

python实现感知器

感知器的训练 

首先将权重w和 偏置b随机初始化为一个很小的数,然后在训练中不断更新w和b的值。

1.将权重初始化为 0 或一个很小的随机数
2.对于每个训练样本 x(i) 执行下列步骤: 

   计算输出值 y^.

   更新权重

python实现感知器

其中python实现感知器

下面用感知器实现and操作,具体代码如下:

# -*- coding: utf-8 -*- 
# python 3.4 
import numpy as np 
from random import choice 
from sklearn import cross_validation 
from sklearn.linear_model import LogisticRegression 
''''' 
1.将权重初始化为 0 或一个很小的随机数 
2.对于每个训练样本 x(i) 执行下列步骤: 
 计算输出值 y^. 
 更新权重 
''' 
def load_data(): 
 input_data=[[1,1], [0,0], [1,0], [0,1]] 
 labels=[1,0,0,0] 
 return input_data,labels 
 
  
def train_pre(input_data,y,iteration,rate): 
 #=========================== 
 ''''' 
 参数: 
 input_data:输入数据 
 y:标签列表 
 iteration:训练轮数 
 rate:学习率 
  
 ''' 
 #============================ 
 unit_step = lambda x: 0 if x < 0 else 1 
 w=np.random.rand(len(input_data[0]))#随机生成[0,1)之间,作为初始化w 
 bias=0.0#偏置 
  
  
 for i in range(iteration): 
  samples= zip(input_data,y) 
  for (input_i,label) in samples:#对每一组样本 
   #计算f(w*xi+b),此时x有两个 
   result=input_i*w+bias 
   result=float(sum(result)) 
   y_pred=float(unit_step(result))#计算输出值 y^ 
   w=w+rate*(label-y_pred)*np.array(input_i)#更新权重 
 
   bias=rate*(label-y_pred)#更新bias 
 return w,bias   
 
  
def predict(input_i,w,b): 
 unit_step = lambda x: 0 if x < 0 else 1#定义激活函数 
 result=result=result=input_i*w+b 
 result=sum(result) 
 y_pred=float(unit_step(result)) 
 print(y_pred) 
  
if __name__=='__main__': 
 input_data,y=load_data() 
 w,b=train_pre(input_data,y,20,0.01) 
 predict([1,1],w,b)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 文件和输入输出小结
Oct 09 Python
分数霸榜! python助你微信跳一跳拿高分
Jan 08 Python
Python处理菜单消息操作示例【基于win32ui模块】
May 09 Python
Python语言快速上手学习方法
Dec 14 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
Feb 18 Python
python里dict变成list实例方法
Jun 26 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
解决tensorflow读取本地MNITS_data失败的原因
Jun 22 Python
如何创建一个Flask项目并进行简单配置
Nov 18 Python
python 爬取小说并下载的示例
Dec 07 Python
Python实现随机爬山算法
Jan 29 Python
利用Python多线程实现图片下载器
Mar 25 Python
python绘制简单折线图代码示例
Dec 19 #Python
matplotlib设置legend图例代码示例
Dec 19 #Python
matplotlib中legend位置调整解析
Dec 19 #Python
python实现感知器算法详解
Dec 19 #Python
python绘制条形图方法代码详解
Dec 19 #Python
Python实现两款计算器功能示例
Dec 19 #Python
Python构建网页爬虫原理分析
Dec 19 #Python
You might like
提升PHP执行速度全攻略
2006/10/09 PHP
dedecms后台验证码总提示错误的解决方法
2007/03/21 PHP
php array_merge下进行数组合并的代码
2008/07/22 PHP
php 随机记录mysql rand()造成CPU 100%的解决办法
2010/05/18 PHP
php用户登录之cookie信息安全分析
2016/05/13 PHP
简单实现php上传文件功能
2017/09/21 PHP
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
使用delegate方法为一个tr标签加一个链接
2014/06/27 Javascript
jQuery源码解读之hasClass()方法分析
2015/02/20 Javascript
jquery及js实现动态加载js文件的方法
2016/01/21 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
2017/03/07 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
js实现图片区域可点击大小随意改变(适用移动端)代码实例
2019/09/11 Javascript
前端开发基础javaScript的六大作用
2020/08/06 Javascript
多种类型jQuery网页验证码插件代码实例
2021/01/09 jQuery
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
如何在Python函数执行前后增加额外的行为
2016/10/20 Python
使用virtualenv创建Python环境及PyQT5环境配置的方法
2019/09/10 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
2020/02/13 Python
Django查询优化及ajax编码格式原理解析
2020/03/25 Python
python 的topk算法实例
2020/04/02 Python
python中如何写类
2020/06/29 Python
Python实现数字的格式化输出
2020/08/01 Python
Staples加拿大官方网站:办公用品一站式采购
2016/09/25 全球购物
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
药学专业大学生个人的自我评价
2013/11/04 职场文书
大学生求职自我评价
2014/01/16 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
李强感恩观后感
2015/06/17 职场文书
初中政治教学工作总结
2015/08/13 职场文书
八年级作文之友谊
2019/12/02 职场文书
golang生成vcf通讯录格式文件详情
2022/03/25 Golang