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的Flask框架中实现全文搜索功能
Apr 20 Python
Python标准库之Sys模块使用详解
May 23 Python
在Python中,不用while和for循环遍历列表的实例
Feb 20 Python
python实现微信机器人: 登录微信、消息接收、自动回复功能
Apr 29 Python
在Pandas中处理NaN值的方法
Jun 25 Python
python3射线法判断点是否在多边形内
Jun 28 Python
Python企业编码生成系统之主程序模块设计详解
Jul 26 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
Aug 09 Python
python3获取url文件大小示例代码
Sep 18 Python
Anconda环境下Vscode安装Python的方法详解
Mar 29 Python
推荐技术人员一款Python开源库(造数据神器)
Jul 08 Python
python 中的9个实用技巧,助你提高开发效率
Aug 30 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 单引号与双引号的区别
2009/11/24 PHP
php数组函数array_key_exists()小结
2015/12/10 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
2017/08/18 PHP
javascript 动态数据下的锚点错位问题解决方法
2008/12/24 Javascript
JavaScript 格式字符串的应用
2010/03/29 Javascript
Jquery ajax传递复杂参数给WebService的实现代码
2011/08/08 Javascript
Javascript基础 函数“重载” 详细介绍
2013/10/25 Javascript
Node.js实现Excel转JSON
2015/04/24 Javascript
javascript实现数组内值索引随机化及创建随机数组的方法
2015/08/10 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
jQuery增加和删除表格项目及实现表格项目排序的方法
2016/05/30 Javascript
seajs学习之模块的依赖加载及模块API的导出
2016/10/20 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
解决axios会发送两次请求,有个OPTIONS请求的问题
2018/10/25 Javascript
微信小程序实现多个按钮的颜色状态转换
2019/02/15 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
Python新手实现2048小游戏
2015/03/31 Python
python下setuptools的安装详解及No module named setuptools的解决方法
2017/07/06 Python
python-opencv在有噪音的情况下提取图像的轮廓实例
2017/08/30 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
Django多数据库的实现过程详解
2019/08/01 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
Python基于jieba, wordcloud库生成中文词云
2020/05/13 Python
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
大学在校生求职信范文
2013/11/21 职场文书
生物科学专业个人求职信范文
2013/12/07 职场文书
落实八项规定专题民主生活会对照检查材料
2014/09/15 职场文书
小学教师师德整改措施
2014/09/29 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书
python for循环赋值问题
2021/06/03 Python
Python四款GUI图形界面库介绍
2022/06/05 Python
字节飞书面试promise.all实现示例
2022/06/16 Javascript