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下的常用下载安装工具pip的安装方法
Nov 13 Python
python正则中最短匹配实现代码
Jan 16 Python
wxPython实现窗口用图片做背景
Apr 25 Python
Python2和Python3的共存和切换使用
Apr 12 Python
python图像和办公文档处理总结
May 28 Python
在linux下实现 python 监控usb设备信号
Jul 03 Python
python实现邮件发送功能
Aug 10 Python
pytorch 自定义数据集加载方法
Aug 18 Python
python如何通过闭包实现计算器的功能
Feb 22 Python
python根据完整路径获得盘名/路径名/文件名/文件扩展名的方法
Apr 22 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
Python面向对象之内置函数相关知识总结
Jun 24 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
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
php中文本数据翻页(留言本翻页)
2006/10/09 PHP
php disk_free_space 返回目录可用空间
2010/05/10 PHP
基于PHP对XML的操作详解
2013/06/07 PHP
利用PHP实现开心消消乐的算法示例
2017/10/12 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
input的focus方法使用
2010/03/13 Javascript
手把手教你自己写一个js表单验证框架的方法
2010/09/14 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
将json对象转换为字符串的方法
2014/02/20 Javascript
JS替换字符串中空格方法
2015/04/17 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
javascript获取select标签选中的值
2016/06/04 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
2017/04/06 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
微信小程序登录数据解密及状态维持实例详解
2019/05/06 Javascript
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
一则python3的简单爬虫代码
2014/05/26 Python
Python re模块介绍
2014/11/30 Python
Python数据结构与算法之使用队列解决小猫钓鱼问题
2017/12/14 Python
python测试mysql写入性能完整实例
2018/01/18 Python
python实现翻转棋游戏(othello)
2019/07/29 Python
彻底解决Python包下载慢问题
2020/11/15 Python
python爬虫利用selenium实现自动翻页爬取某鱼数据的思路详解
2020/12/22 Python
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
美国打印机墨水和碳粉购物网站:QuikShip Toner
2018/08/29 全球购物
药学专业个人自我评价
2013/11/11 职场文书
运动会通讯稿50字
2014/01/30 职场文书
40岁生日感言
2014/02/15 职场文书
销售团队激励口号
2014/06/06 职场文书
机电一体化专业求职信
2014/07/22 职场文书
安全守法证明
2015/06/23 职场文书
教师岗位说明书
2015/09/30 职场文书
Python自动化之批量处理工作簿和工作表
2021/06/03 Python