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 字典(Dictionary)操作详解
Mar 11 Python
Python 抓取动态网页内容方案详解
Dec 25 Python
python实现域名系统(DNS)正向查询的方法
Apr 19 Python
Python实现统计给定字符串中重复模式最高子串功能示例
May 16 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
Python反爬虫技术之防止IP地址被封杀的讲解
Jan 09 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
对Django项目中的ORM映射与模糊查询的使用详解
Jul 18 Python
python使用minimax算法实现五子棋
Jul 29 Python
python机器学习包mlxtend的安装和配置详解
Aug 21 Python
Python网络爬虫四大选择器用法原理总结
Jun 01 Python
用Python进行websocket接口测试
Oct 16 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
基于qmail的完整WEBMAIL解决方案安装详解
2006/10/09 PHP
如何对PHP程序中的常见漏洞进行攻击(下)
2006/10/09 PHP
php开启安全模式后禁用的函数集合
2011/06/26 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
文本框中,回车键触发事件的js代码[多浏览器兼容]
2010/06/07 Javascript
js下获得客户端操作系统的函数代码(1:vista,2:windows7,3:2000,4:xp,5:2003,6:2008)
2011/10/31 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
js处理表格对table进行修饰
2014/05/26 Javascript
Javascript实现禁止输入中文或英文的例子
2014/12/09 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
利用Angularjs和原生JS分别实现动态效果的输入框
2016/09/01 Javascript
详解Html a标签中href和onclick用法、区别、优先级别
2017/01/16 Javascript
jQuery用户头像裁剪插件cropbox.js使用详解
2017/06/07 jQuery
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
微信小程序实现蒙版弹窗效果
2018/11/01 Javascript
记一次用vue做的活动页的方法步骤
2019/04/11 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
vue实现倒计时获取验证码效果
2020/04/17 Javascript
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
python二分法实现实例
2013/11/21 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/26 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
python multiprocessing多进程变量共享与加锁的实现
2019/10/02 Python
python3 tkinter实现添加图片和文本
2019/11/26 Python
使用html2canvas实现浏览器截图的示例代码
2018/01/26 HTML / CSS
美国滑雪和滑雪板商店:Buckman
2018/03/03 全球购物
Urban Outfitters德国官网:美国跨国生活方式零售公司
2018/05/21 全球购物
.NET面试问题集
2015/12/08 面试题
新闻编辑自荐信
2013/11/03 职场文书
银行个人求职自荐信范文
2013/12/16 职场文书
洗发露广告词
2014/03/14 职场文书
大学社团计划书
2014/05/01 职场文书
学校献爱心活动总结
2014/07/08 职场文书
化工见习报告范文
2014/10/31 职场文书
2019数学教师下学期工作总结
2019/06/27 职场文书