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实现通过哈希算法检测图片重复的教程
Apr 02 Python
python正常时间和unix时间戳相互转换的方法
Apr 23 Python
Python中特殊函数集锦
Jul 27 Python
Python实现信用卡系统(支持购物、转账、存取钱)
Jun 24 Python
Python实现Linux中的du命令
Jun 12 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
Python中flatten( )函数及函数用法详解
Nov 02 Python
Python文件常见操作实例分析【读写、遍历】
Dec 10 Python
对python借助百度云API对评论进行观点抽取的方法详解
Feb 21 Python
Ranorex通过Python将报告发送到邮箱的方法
Jan 12 Python
Python 实现判断图片格式并转换,将转换的图像存到生成的文件夹中
Jan 13 Python
教你如何使用Python开发一个钉钉群应答机器人
Jun 21 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检测图片木马多进制编程实践
2013/04/11 PHP
php通过字符串调用函数示例
2014/03/02 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
PHP简单获取随机数的常用方法小结
2017/06/07 PHP
JavaScript中的History历史对象
2008/01/16 Javascript
jsTree 基于JQuery的排序节点 Bug
2011/07/26 Javascript
YUI Compressor压缩JavaScript原理及微优化
2013/01/07 Javascript
删除select中所有option选项jquery代码
2013/08/12 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
jQuery实现的导航动画效果(附demo源码)
2016/04/01 Javascript
angularjs 源码解析之injector
2016/08/22 Javascript
JavaScript实现解析INI文件内容的方法
2016/11/17 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
关于echarts在节点显示动态数据及添加提示文本所遇到的问题
2018/04/20 Javascript
vue实现学生录入系统之添加删除功能
2018/07/11 Javascript
JS利用prototype给类添加方法操作详解
2019/06/21 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
基于python的汉字转GBK码实现代码
2012/02/19 Python
深入分析python数据挖掘 Json结构分析
2018/04/21 Python
Python解决八皇后问题示例
2018/04/22 Python
python3实现字符串的全排列的方法(无重复字符)
2018/07/07 Python
对numpy中数组转置的求解以及向量内积计算方法
2018/10/31 Python
Python Cookie 读取和保存方法
2018/12/28 Python
python从入门到精通 windows安装python图文教程
2019/05/18 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
计算机工程学院个人求职信
2013/10/05 职场文书
法学专业自我鉴定
2014/02/05 职场文书
六个一活动实施方案
2014/03/21 职场文书
庆元旦演讲稿
2014/09/15 职场文书
2014年公务员退休工资改革方案
2014/10/01 职场文书
2014年项目工作总结
2014/11/24 职场文书
年会邀请函的格式及范文五篇
2019/11/02 职场文书
vscode内网访问服务器的方法
2022/06/28 Servers