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的Django框架部署的一些建议
Apr 09 Python
python利用装饰器进行运算的实例分析
Aug 04 Python
基于python 字符编码的理解
Sep 02 Python
解决csv.writer写入文件有多余的空行问题
Jul 06 Python
Python get获取页面cookie代码实例
Sep 12 Python
selenium + python 获取table数据的示例讲解
Oct 13 Python
基于wxPython的GUI实现输入对话框(2)
Feb 27 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
python 实现保存最新的三份文件,其余的都删掉
Dec 22 Python
python实现学生信息管理系统源码
Feb 22 Python
Python实现Telnet自动连接检测密码的示例
Apr 16 Python
Python之基础函数案例详解
Aug 30 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 和 MySQL 开发的 8 个技巧
2007/01/02 PHP
关于js与php互相传值的介绍
2013/06/25 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
原生JS实现的放大镜效果实例代码
2016/10/15 Javascript
Vue.js组件tree实现无限级树形菜单
2016/12/02 Javascript
Bootstrap面板学习使用
2017/02/09 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
angularjs实现简单的购物车功能
2017/09/21 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
2018/10/23 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
Vue实现PC端靠边悬浮球的代码
2020/05/09 Javascript
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
Django实现表单验证
2018/09/08 Python
python找出完数的方法
2018/11/12 Python
Python图像的增强处理操作示例【基于ImageEnhance类】
2019/01/03 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
python3调用windows dos命令的例子
2019/08/14 Python
使用Python内置模块与函数进行不同进制的数的转换
2020/04/26 Python
浅谈python量化 双均线策略(金叉死叉)
2020/06/03 Python
Python实现像awk一样分割字符串
2020/09/15 Python
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
LACOSTE波兰官网:Polo衫、服装和鞋类
2020/09/29 全球购物
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
怎样自定义一个异常类
2016/09/27 面试题
会计毕业生求职简历的自我评价
2013/10/20 职场文书
大专毕业生自我鉴定
2013/11/21 职场文书
法律专业推荐信范文
2013/11/29 职场文书
小学数学教学经验交流材料
2014/05/22 职场文书
民事诉讼代理词
2015/05/25 职场文书
2016暑期社会实践新闻稿
2015/11/25 职场文书
公开致歉信
2019/06/24 职场文书
微信小程序APP的生命周期及页面的生命周期
2022/04/19 Javascript