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基础教程之序列详解
Aug 29 Python
Python微信库:itchat的用法详解
Aug 14 Python
NetworkX之Prim算法(实例讲解)
Dec 22 Python
Python 打印中文字符的三种方法
Aug 14 Python
在python中pandas的series合并方法
Nov 12 Python
Python 实现域名解析为ip的方法
Feb 14 Python
Python 保持登录状态进行接口测试的方法示例
Aug 06 Python
sklearn+python:线性回归案例
Feb 24 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
Mar 26 Python
python代数式括号有效性检验示例代码
Oct 04 Python
在pycharm中无法import所安装的库解决方案
May 31 Python
Python find()、rfind()方法及作用
Dec 24 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获取后台Job管理的实现代码
2011/06/10 PHP
精美漂亮的php分页类代码
2013/04/02 PHP
PHP 读取Postgresql中的数组
2013/04/14 PHP
PHP中strcmp()和strcasecmp()函数字符串比较用法分析
2016/01/07 PHP
php中序列化与反序列化详解
2017/02/13 PHP
jquery中的on方法使用介绍
2013/12/29 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
图文详解JavaScript的原型对象及原型链
2016/08/02 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
jQuery插件jqGrid动态获取列和列字段的方法
2017/03/03 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
node.js到底要不要加分号浅析
2018/07/11 Javascript
JS删除String里某个字符的方法
2021/01/06 Javascript
原生js实现抽奖小游戏
2019/06/27 Javascript
使用typescript构建Vue应用的实现
2019/08/26 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
Node在Controller层进行数据校验的过程详解
2020/08/28 Javascript
Python切换pip安装源的方法详解
2016/11/18 Python
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
Python字符串、整数、和浮点型数相互转换实例
2018/08/04 Python
在python中利用GDAL对tif文件进行读写的方法
2018/11/29 Python
Python Threading 线程/互斥锁/死锁/GIL锁
2019/07/21 Python
python图形开发GUI库pyqt5的详细使用方法及各控件的属性与方法
2020/02/14 Python
python中操作文件的模块的方法总结
2021/02/04 Python
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
在职人员函授期间自我评价分享
2013/11/08 职场文书
关于青春的演讲稿
2014/05/05 职场文书
党员承诺书范文
2014/05/19 职场文书
高中军训的心得体会
2014/09/01 职场文书
教师节标语大全
2014/10/07 职场文书
保外就医申请书范文
2015/08/06 职场文书
银行服务理念口号
2015/12/25 职场文书
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL