BP神经网络基于MATLAB拟合正弦曲线

BP神经网络基于MATLAB拟合正弦曲线,第1张

说明:BP(反向传播)网络在1986年的一个科学家小组由鲁梅哈特和McCelland为首的由前训练的多层前馈网络提出了一种误差反向传播算法,是目前应用最广泛的神经网络模型之一。 BP神经网络可以学习和存储大量输入 - 输出模式映射关系,如果没有事先表明描述的映射关系的数学方程。它的学习规则是使用最速下降法,反向传播通过网络来不断调整权值和阈值,以使网络的平方误差最小总和。 BP神经网络的拓扑结构包括输入层(输入),隐藏层(隐藏层)和输出层(输出层) - 抽象:BP神经网络算法的基础上提出了现有的BP神经网络算法是通过一组权重任意地选择,考虑到目标输出直接作为代数和线性方程来创建线性方程,解出未知右边,有局部最小值和收敛速度慢的问题没有传统方法,并且更容易理解。

关键词:固定的权重高斯消元法BP算法

人工神经网络(人工神经网络,人工神经网络)系统是20世纪40年代的出现,这是由许多神经元调节连接权值连接而成,具有大规模并行处理,分布式信息存储,良好的自我组织自学能力强等特点,在信息处理,模式识别,智能控制与系统建模等领域得到越来越广泛的应用。特别是,误差反向传播算法(误差反向传播训练,简称BP网络)可以逼近任意连续函数,具有很强的非线性映射能力,网络的中间层,处理单元和网络层的数量学习系数等参数可根据具体情况而定,非常灵活地设定,因此它在许多应用领域中起重要作用。近年来,神经网络,解决了收敛速度慢,不能保证收敛到全局最小点时,网络的中间层,它是用来选择的学习和记忆,以及网络不稳定的单位数没有理论指导和等缺陷,提出了一些改进的算法。我们1传统的BP算法概述

BP算法是一种监督的学习算法,其主要思想是:输入学习样本,采用反向传播算法对网络权和反复调整训练的偏见,从而使期望的输出向量和向量尽可能靠近训练网络时是完整的比指定的误差,输出层和较少的平方误差,节省了网络的权值和偏差。具体步骤如下:

(1)初始化,随机连接权重给予各[W],[V]和阈值θi,室温。

(2)由给定的投入产出模型计算隐含层和输出层,每个单元的输出

BJ = F(■wijai-θJ)CT = F(■vjtbj-RT),其中

:BJ是第j个隐藏层神经元的实际输出克拉第t个输出层实际输出的神经元WIJ是输入层到隐层的连接权重VJT连接权重为隐藏层到输出层。

DTK =(YTK-CT)CT(1-克拉)EJK = [■dtvjt] BJ(1-BJ)

其中:DTK用于校正在输出层中的错误EJK更正错误隐藏层。比索(3)计算出新的连接权值和阈值,计算公式如下:?

VJT第(n + 1)= VJT(N)+切dtkbj WIJ第(n + 1)= WIJ(N)+卓ejkaik RT第(n + 1)= RT(N)+切DTKθJ第(n + 1)=θJ(n)的+卓EJK

式:卓,卓学系数(0 <切<1,0 <?卓<1)。

(4)选择下一个输入模式,返回到步骤2,直到网络反复训练,以满足设置的要求输出错误结束训练。

传统BP算法本质上是一组样本的输入/输出问题转化为一个非线性优化问题,并通过使用一种学习方法来解决重量问题迭代的负梯度下降法,但其收敛速度慢和容易陷入局部极小,为此提出了一种新的算法,即高斯消去。

BP神经网络,先导入数据,file——importdata

data为N*L矩阵,N为样本数,L为变量个数,第1~n列放因变量y,n~L列放自变量

clear all;%清空环境变量

clc;%清屏

y=data(:,1:n)%y为所有行,第1到第n列

x=data(:,n:L)%x为所有行,第n到L列

x1=mapminmax(x)%数据归一化

y1=mapminmax(y)%数据归一化

net=newff(minmax(x1),[L-1,a,n],{'tansig','tansig','purelin'},'tansig')

%a是隐含层节点数,自己算,公式为a=根号下(0.43n*(L-n)+0.12*(L-n)^2+2.54*L+0.77*(L-n)+0.86)

net.trainParam.show=50%系统每50步显示一次训练误差的变化曲线

net.trainParam.lr=0.01%学习率

net.trainParam.mc=0.95%动量因子

net.trainParam.epochs=10000%最大训练次数

net.trainParam.goal=0.01%训练要求精度

[net,tr]=train(net,x1,y1)%训练网络

Y=sim(net,x1)%对BP神经网络仿真

X=(1:100)%横坐标自己定,这里产生1到100的数

plot(X,Y,'-',X,y1,'.')%画图

e=y1-Y%拟合结果和真实结果误差

mse(e)%求均方差

用plot(x,y,'ro-')看了下你的数据,线性关系很差。

若用BP网络来拟合的话,可以按照如下步骤 *** 作,其中很多参数你自己可以去尝试改变:

>x=0:25

>y=[0 0 0 4.0 49.2 146.6 278.2 466.9 716.4 1030.9 1364.7 1500 1500 1500 1500 1500

1500 1500 1500 1500 1500 1500 1500 1500 1500 1500]

>net = newff([0 25],[50 1],{'tansig','purelin'},'trainlm')

>net = train(net,y,x)

查看优化结果

>sim(net,x)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11963701.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存