Python实现感知器模型、两层神经网络
作者:O天涯海阁O 发布时间:2021-11-14 07:34:19
标签:Python,感知器,神经网络
本文实例为大家分享了Python实现感知器模型、两层神经网络,供大家参考,具体内容如下
python 3.4 因为使用了 numpy
这里我们首先实现一个感知器模型来实现下面的对应关系
[[0,0,1], ——- 0
[0,1,1], ——- 1
[1,0,1], ——- 0
[1,1,1]] ——- 1
从上面的数据可以看出:输入是三通道,输出是单通道。
这里的激活函数我们使用 sigmoid 函数 f(x)=1/(1+exp(-x))
其导数推导如下所示:
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
来源:http://blog.csdn.net/zhangjunhit/article/details/53487109
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 看到了很多关于如何读出图片的长度的高度的方法,其实都不实用,大多都是通过图片的大小来判断的,图片的种类众多,通过大小来判断难免要制造很多的代
- 同事在准备新老系统的切换,清空一个表的时候往往发现这个表的主键被另一个表用做外键,而系统里有太多层次的引用.所以清起来相当麻烦用下面这个脚本
- asp代码 如下:读取注册表信息使用了对象WScript.Shell<%Dim strPath strP
- 打开php.ini,首先找到file_uploads = on ;是否允许通过HTTP上传文件的开关。默认为ON即是开upload_tmp_
- “没 Javascript 就会死”的页面通常都会加入 noscript 标签用于提示用户开启脚本支持。 然而在 IE8 下,如果在 nos
- 是的,我们知道:我们可以为border设置它的width,这个border的宽度可以是5px,可是10px,可以是20px,可以是随意数值。
- 在Google Chrome浏览器出来之前,我一直使用FireFox,因为FireFox的插件非常丰富,更因为FireFox有强大的Fire
- 正则表达式(Regular Expression,在代码中常简写为regex、regexp或RE)是计算机科学的一个概念。正则表达式使用单个
- index_selectanchor_w = self.FloatTensor(self.scaled_anchors).index_sel
- 此文刊登在《程序员》2009年5月期:SQL全名是结构化查询语言(Structured Query Language),一直是后台开发者用来
- 省市级联这东西基本是网注一份,而且基本是全是js写的,js写唯一坏处就是JS无效时不可用,我所说的js无效包括不支持js,js加载未完成或者
- aspImage是ServerObjects站点上非常好的一个组件,它可以使我们利用Asp实现很多对于图形的处理功能,他的功能强大,如果你需
- 用途:将UTF-8编码汉字转换为GB2312码,兼容英文和数字版权:虽说是原创,其实也参考了別人的部分算法asp源代码:<% 
- 文件内容:excel内容:代码:import xlrdimport jsonimport operatordef read_xlsx(fil
- 1. Python的数据类型上一遍博文已经详细地介绍了Python的数据类型,详见链接Python的变量命名及数据类型。在这里总结一下Pyt
- 昨天,系统管理员告诉我,我们一个内部应用数据库所在的磁盘空间不足了。我注意到数据库事件日志文件XXX_Data.ldf文件已经增长到了3GB
- print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号 ,#!/usr/bin/python # -*- coding: UT
- 通过将身份认证令牌直接传给 API 服务器,可以避免使用 kubectl 代理,像这样:使用 grep/cut 方式:# 查看所有的集群,因
- 如下所示:<?php$dir = dirname(__FILE__);$open_dir = opendir($dir);echo &
- 我们经常用到的PHP取整函数,主要是:ceil,floor,round,intval。ceil -- 进一法取整说明float ceil (