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列表生成器的循环技巧分享
Mar 06 Python
python结合selenium获取XX省交通违章数据的实现思路及代码
Jun 26 Python
Python实现简单文本字符串处理的方法
Jan 22 Python
python Celery定时任务的示例
Mar 13 Python
PyQt5每天必学之进度条效果
Apr 19 Python
python使用PyQt5的简单方法
Feb 27 Python
Pycharm新建模板默认添加个人信息的实例
Jul 15 Python
TensorFlow索引与切片的实现方法
Nov 20 Python
python3中numpy函数tile的用法详解
Dec 04 Python
python误差棒图errorbar()函数实例解析
Feb 11 Python
Python如何使用正则表达式爬取京东商品信息
Jun 01 Python
利用python做数据拟合详情
Nov 17 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
实现树状结构的两种方法
2006/10/09 PHP
如何突破PHP程序员的技术瓶颈分析
2011/07/17 PHP
header跳转和include包含问题详解
2012/09/08 PHP
解析php中heredoc的使用方法
2013/06/17 PHP
解析php做推送服务端实现ios消息推送
2013/07/01 PHP
PHP中Session可能会引起并发问题
2015/06/26 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
jquery批量设置属性readonly和disabled的方法
2014/01/24 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
JavaScript实现SHA-1加密算法的方法
2015/03/11 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
React Native之TextInput组件解析示例
2017/08/22 Javascript
koa-router源码学习小结
2018/09/07 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
2018/09/07 Javascript
详解多页应用 Webpack4 配置优化与踩坑记录
2018/10/16 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
微信小程序数据统计和错误统计的实现方法
2019/06/26 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
python的id()函数介绍
2013/02/10 Python
Python判断变量是否已经定义的方法
2014/08/18 Python
Python读取环境变量的方法和自定义类分享
2014/11/22 Python
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
python中返回矩阵的行列方法
2018/04/04 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
遮罩层 + Iframe实现界面自动显示的示例代码
2020/04/26 HTML / CSS
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
中国双语服务优势的在线购票及活动平台:247tickets
2018/10/26 全球购物
仓库管理员岗位职责
2014/03/19 职场文书
产品质量承诺书范文
2014/03/27 职场文书
我们的节日春节活动方案
2014/08/22 职场文书
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
Python中json.load()和json.loads()有哪些区别
2021/06/07 Python