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字符串匹配算法KMP实例
Jul 18 Python
Python实现统计代码行的方法分析
Jul 12 Python
python 读取.csv文件数据到数组(矩阵)的实例讲解
Jun 14 Python
详解Python二维数组与三维数组切片的方法
Jul 18 Python
python Django中models进行模糊查询的示例
Jul 18 Python
python3实现用turtle模块画一棵随机樱花树
Nov 21 Python
logging level级别介绍
Feb 21 Python
实例代码讲解Python 线程池
Aug 24 Python
Python如何执行系统命令
Sep 23 Python
Python下载的11种姿势(小结)
Nov 18 Python
python通过opencv调用摄像头操作实例分析
Jun 07 Python
Python内置包对JSON文件数据进行编码和解码
Apr 12 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
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
js使用心得分享
2015/01/13 Javascript
ExtJs动态生成treepanel的Json格式
2015/07/19 Javascript
解析javascript瀑布流原理实现图片滚动加载
2016/03/10 Javascript
微信小程序 Storage API实例详解
2016/10/02 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
总结几道关于Node.js的面试问题
2017/01/11 Javascript
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
利用angular、react和vue实现相同的面试题组件
2018/02/19 Javascript
vue debug 二种方法
2018/09/16 Javascript
jQuery选择器选中最后一个元素,倒数第二个元素操作示例
2018/12/10 jQuery
React组件设计模式之组合组件应用实例分析
2020/04/29 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
vue 解决兄弟组件、跨组件深层次的通信操作
2020/07/27 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
[01:08]DOTA2次级职业联赛 - Shield战队宣传片
2014/12/01 DOTA
[01:00:49]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第二场 1月31日
2021/03/11 DOTA
解读Python中degrees()方法的使用
2015/05/18 Python
Python使用迭代器打印螺旋矩阵的思路及代码示例
2016/07/02 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
2019/08/21 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
2020/01/15 Python
python实现简单遗传算法
2020/09/18 Python
英国领先的狗和宠物美容专家:Christies Direct
2017/04/03 全球购物
NYX Professional Makeup官方网站:专业彩妆和美容产品
2019/10/29 全球购物
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
日本亚马逊官方网站:Amazon.co.jp
2020/04/14 全球购物
市委常委会班子党的群众路线教育实践活动整改方案
2014/10/25 职场文书
内乡县衙导游词
2015/02/05 职场文书
SQL Server2019安装的详细步骤实战记录(亲测可用)
2022/06/10 SQL Server
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL
如何使用注解方式实现 Redis 分布式锁
2022/07/23 Redis