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 functiondef nonlin(x, deriv = False):if(deriv==True):return x*(1-x)return 1/(1+np.exp(-x))# input datasetX=np.array([[0,0,1],[0,1,1],[1,0,1],[1,1,1]])# output datasety=np.array([[0,1,0,1]]).T#seed( ) 用于指定随机数生成时所用算法开始的整数值,
#如果使用相同的seed( )值,则每次生成的随即数都相同,
#如果不设置这个值,则系统根据时间来自己选择这个值,
#此时每次生成的随机数因时间差异而不同。
np.random.seed(1) # init weight value with mean 0syn0 = 2*np.random.random((3,1))-1 for iter in range(1000):# forward propagationL0=XL1=nonlin(np.dot(L0,syn0))# errorL1_error=y-L1L1_delta = L1_error*nonlin(L1,True)# updata weightsyn0+=np.dot(L0.T,L1_delta)print("Output After Training:")
print(L1)
从输出结果可以看出基本实现了对应关系。
下面再用两层网络来实现上面的任务,这里加了一个隐层,隐层包含4个神经元。
import numpy as npdef 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 layerl2 = nonlin(np.dot(l1,syn1)) #the third layer,and the output layerl2_error = y-l2 #the hidden-output layer errorif(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 errorl1_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 神经网络工具_神经网络15分钟入门!使用python从零开始写一个两层神经网络...
本篇是该系列的第三篇,建议在阅读本篇文章之前先看前两篇文章. 在本文中将使用python实现之前描述的两层神经网络,并完成所提出的"象限分类"的问题. 需要注意的是,虽然标题叫做神 ...
- 如何利用 C# 实现神经网络的感知器模型?
前几天我们介绍了 如何利用 C# 对神经网络模型进行抽象,在这篇图文中,我们抽象了单个神经元 Neuro,网络层 Layer,网络结构 Network,激活函数 IActivationFunction ...
- 多层神经元感知器模型_使用多层感知器模型对星系进行分类
多层神经元感知器模型 Cosmos is an intriguing space to observe and analyse, it is the stronghold for any scienc ...
- 计算智能——感知器模型
主要内容 1.感知器总述 2.感知器模型 3.感知器策略(建立损失函数) 4.感知器算法(梯度下降和随机梯度下降) 4.1梯度下降 4.2随机梯度下降 5.感知器MATLAB简单实现 5.1newp函 ...
- 模式识别(Pattern Recognition)学习笔记(十九)--多层感知器模型(MLP)
早前已经学习了感知器学习算法,主要通过对那些错分类的样本进行求和来表示对错分样本的惩罚,但明显的它是一个线性的判别函数:而且上节学到了感知器神经元(阈值逻辑单元),对于单个的感知器神经元来说,尽管它能 ...
- 用numpy、PyTorch自动求导、torch.nn库实现两层神经网络
用numpy.PyTorch自动求导.torch.nn库实现两层神经网络 1 用numpy实现两层神经网络 2 用PyTorch自动求导实现两层神经网络 2.1 手动求导 2.2 gradient自动 ...
- 课程一(Neural Networks and Deep Learning),第三周(Shallow neural networks)—— 1、两层神经网络的单样本向量化表示与多样本向量化表示...
如上图所示的两层神经网络, 单样本向量化: ...
- CS231n 两层神经网络反向传播实现
今天写了cs231n 作业1的两层神经网络的部分,听视频和看讲义的时候觉得挺简单的没在意,后来真正写的时候发现了问题,而且也领悟到了新的东西,反向传播代码实现的奥妙之处. 同时也把之前的loss函数梯 ...
- python bp神经网络 异或_两层神经网络输出异或
简单形象又有趣地讲解神经网络是什么 神经元 先来认识下真正的神经元. 图 1: 典型神经元的结构(来自维基百科 "树突" 词条) 神经元大致可以分为树突.突触.细胞体和轴突.树突为 ...
最新文章
- 暑期集训3:几何基础 练习题G: HDU - 1052
- 60篇论文入选,两度夺魁,“史上最难ECCV”商汤再攀高峰
- asp论坛回复功能怎么实现_在asp.netcore中使用中间件(middleware)实现api拦截及验证功能
- linux自动锁屏命令_如何冻结和锁定你的Linux系统?
- 信息报送不及时整改措施_工商年报如何报送?原来这才是正确打开方式
- snmp在企业网中的简单应用
- java代码的运行顺序_java中的代码块执行顺序
- hadoop 2.7.3伪分布式安装
- Java日期型集合排序
- 从安全和不安全两个角度,教你如何发布对象(含各种单例代码)
- InstallShield 下载安装
- Kconfig的两种用法
- 《诗六十首》一个会写诗的程序员
- BIP学习第一课,创建一个应用和实体并设计页面(图文)
- 通过python来实现“语象观察“自动化进阶版
- Request对象的一般用法
- 图形化编程语言的设计
- 中国科学院大学计算机学院夏令营,2019年中国科学院大学生数学夏令营招募通知...
- Linux 各种压缩、解压命令
- 装饰器设计模式代码套路-咖啡加奶
热门文章
- Nat. Mach. Intell. | 基于深度学习预测DNA甲基化位点
- CentOS 7.8下安装PyRosetta4
- 罹患各种癌晚期,无法救治
- python loop until_非常适合小白的 Asyncio 教程
- tomcat源码_从源码角度讲Tomcat在SpringBoot 中是如何启动的?
- 英伟达人工智能和处理器驱动的制药、生命科学合作
- 75分钟入门微生物组数据分析和结果解读—刘永鑫(合肥,2021年6月23日)
- Nature:全球表层土微生物组群落结构和功能
- npjsba-2018-用肠道微生物模型指导个性化膳食缓解局部性肠炎
- pandas使用fillna函数并设置bfill参数使用列中的后序值填充缺失值