Python实现感知器模型、两层神经网络


Posted in Python onDecember 19, 2017

本文实例为大家分享了Python实现感知器模型、两层神经网络,供大家参考,具体内容如下

python 3.4 因为使用了 numpy

这里我们首先实现一个感知器模型来实现下面的对应关系

[[0,0,1], ——- 0
[0,1,1], ——- 1
[1,0,1], ——- 0
[1,1,1]] ——- 1

从上面的数据可以看出:输入是三通道,输出是单通道。

Python实现感知器模型、两层神经网络

这里的激活函数我们使用 sigmoid 函数 f(x)=1/(1+exp(-x))

其导数推导如下所示:

Python实现感知器模型、两层神经网络

L0=W*X;
z=f(L0);
error=y-z;
delta =error * f'(L0) * X;
W=W+delta;

python 代码如下:

import numpy as np

#sigmoid function

def nonlin(x, deriv = False):
  if(deriv==True):
    return x*(1-x)
  return 1/(1+np.exp(-x))


# input dataset

X=np.array([[0,0,1],
      [0,1,1],
      [1,0,1],
      [1,1,1]])

# output dataset

y=np.array([[0,1,0,1]]).T

#seed( ) 用于指定随机数生成时所用算法开始的整数值,
#如果使用相同的seed( )值,则每次生成的随即数都相同,
#如果不设置这个值,则系统根据时间来自己选择这个值,
#此时每次生成的随机数因时间差异而不同。
np.random.seed(1)  

# init weight value with mean 0

syn0 = 2*np.random.random((3,1))-1   

for iter in range(1000):
  # forward propagation
  L0=X
  L1=nonlin(np.dot(L0,syn0))

  # error
  L1_error=y-L1

  L1_delta = L1_error*nonlin(L1,True)

  # updata weight
  syn0+=np.dot(L0.T,L1_delta)

print("Output After Training:")
print(L1)

从输出结果可以看出基本实现了对应关系。

下面再用两层网络来实现上面的任务,这里加了一个隐层,隐层包含4个神经元。

import numpy as np

def nonlin(x, deriv = False):
  if(deriv == True):
    return x*(1-x)
  else:
    return 1/(1+np.exp(-x))

#input dataset
X = np.array([[0,0,1],
       [0,1,1],
       [1,0,1],
       [1,1,1]])

#output dataset
y = np.array([[0,1,1,0]]).T

#the first-hidden layer weight value
syn0 = 2*np.random.random((3,4)) - 1 

#the hidden-output layer weight value
syn1 = 2*np.random.random((4,1)) - 1 

for j in range(60000):
  l0 = X      
  #the first layer,and the input layer 
  l1 = nonlin(np.dot(l0,syn0)) 
  #the second layer,and the hidden layer
  l2 = nonlin(np.dot(l1,syn1)) 
  #the third layer,and the output layer


  l2_error = y-l2    
  #the hidden-output layer error

  if(j%10000) == 0:
    print "Error:"+str(np.mean(l2_error))

  l2_delta = l2_error*nonlin(l2,deriv = True)

  l1_error = l2_delta.dot(syn1.T)   
  #the first-hidden layer error

  l1_delta = l1_error*nonlin(l1,deriv = True)

  syn1 += l1.T.dot(l2_delta)
  syn0 += l0.T.dot(l1_delta)

print "outout after Training:"
print l2

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

Python 相关文章推荐
删除目录下相同文件的python代码(逐级优化)
May 25 Python
Python实现竖排打印传单手机号码易撕条
Mar 16 Python
Python对字符串实现去重操作的方法示例
Aug 11 Python
Python numpy 提取矩阵的某一行或某一列的实例
Apr 03 Python
pandas中apply和transform方法的性能比较及区别介绍
Oct 30 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 Python
Python使用POP3和SMTP协议收发邮件的示例代码
Apr 16 Python
基于torch.where和布尔索引的速度比较
Jan 02 Python
python爬虫实现获取下一页代码
Mar 13 Python
利用django model save方法对未更改的字段依然进行了保存
Mar 28 Python
Python脚本如何在bilibili中查找弹幕发送者
Jun 04 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
Aug 05 Python
python实现感知器
Dec 19 #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
You might like
PHP面向对象的使用教程 简单数据库连接
2006/11/25 PHP
php2html php生成静态页函数
2008/12/08 PHP
PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
2014/03/17 PHP
php+mysql大量用户登录解决方案分析
2014/12/29 PHP
详解WordPress中提醒安装插件以及隐藏插件的功能实现
2015/12/25 PHP
PHP正则表达式入门教程(推荐)
2016/05/18 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
jQuery的实现原理的模拟代码 -3 事件处理
2010/08/03 Javascript
js中eval()函数和trim()去掉字符串左右空格应用
2013/02/02 Javascript
JS的get和set使用示例
2014/02/20 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
VUE DOM加载后执行自定义事件的方法
2018/09/07 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
[01:28:31]《加油DOTA》真人秀 第五期
2014/09/01 DOTA
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
[01:46]2018完美盛典章节片——坚守
2018/12/17 DOTA
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
windows中安装Python3.8.0的实现方法
2019/11/19 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
无惧面试,带你搞懂python 装饰器
2020/08/17 Python
Linux的文件类型
2016/07/05 面试题
工程开工庆典邀请函
2014/02/01 职场文书
公司总经理任命书
2014/06/05 职场文书
师范生免费教育协议书范本
2014/10/09 职场文书
工作证明格式范文
2015/06/15 职场文书
人民的好儿女观后感
2015/06/18 职场文书
2016年“5.12”国际护士节活动总结
2016/04/06 职场文书
python 三边测量定位的实现代码
2021/04/22 Python