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中os操作文件及文件路径实例汇总
Jan 15 Python
python在windows下实现ping操作并接收返回信息的方法
Mar 20 Python
Python的for和break循环结构中使用else语句的技巧
May 24 Python
Python自动生产表情包
Mar 17 Python
python多进程提取处理大量文本的关键词方法
Jun 05 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
Jan 04 Python
详解Python装饰器
Mar 25 Python
Python实现将HTML转成PDF的方法分析
May 04 Python
python TF-IDF算法实现文本关键词提取
May 29 Python
python打造爬虫代理池过程解析
Aug 15 Python
python Socket网络编程实现C/S模式和P2P
Jun 22 Python
Python+MySQL随机试卷及答案生成程序的示例代码
Feb 01 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
php mssql 日期出现中文字符的解决方法
2009/03/10 PHP
解析php DOMElement 操作xml 文档的实现代码
2013/05/10 PHP
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
Jquery右下角抖动、浮动 实例代码(兼容ie6、FF)
2013/08/15 Javascript
js键盘上下左右键怎么触发function(实例讲解)
2013/12/14 Javascript
jquery选择器之基本过滤选择器详解
2014/01/27 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
推荐10 个很棒的 jQuery 特效代码
2015/10/04 Javascript
JS实现黑色风格的网页TAB选项卡效果代码
2015/10/09 Javascript
全面解析Bootstrap表单样式的使用
2016/09/09 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
浅谈js for循环输出i为同一值的问题
2017/03/01 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
jQuery轻量级表单模型验证插件
2018/10/15 jQuery
移动端滑动切换组件封装 vue-swiper-router实例详解
2018/11/25 Javascript
原生JS实现列表内容自动向上滚动效果
2019/05/22 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
2021/01/30 Vue.js
在Python下进行UDP网络编程的教程
2015/04/29 Python
Python 中的lambda函数介绍
2018/10/10 Python
Python的UTC时间转换讲解
2019/02/26 Python
Python初学者常见错误详解
2019/07/02 Python
Python任务自动化工具tox使用教程
2020/03/17 Python
如何理解Python中包的引入
2020/05/29 Python
python中pivot()函数基础知识点
2021/01/03 Python
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
Linux如何压缩可执行文件
2014/03/27 面试题
《雕塑之美》教学反思
2014/04/24 职场文书
关于安全演讲稿
2014/05/09 职场文书
工地材料员岗位职责
2015/04/11 职场文书
2015年度残疾人工作总结
2015/05/14 职场文书
2016年“我们的节日·重阳节”主题活动总结
2016/04/01 职场文书
浅谈pytorch中stack和cat的及to_tensor的坑
2021/05/20 Python
Python实现byte转integer
2021/06/03 Python