急求高手解答!!我想请教一个MATLAB(2013a)问题,关于Neural Net Fitting(神经网络拟合)工具。
3、SO另外r=sim(net,p);这句也有问题,应该是r=sim(net,pn);才对Mnet.trainParam.mc=0.95;%动量因子网络你的inputs和targets的数据的名字怎么都叫data 呀,你是不是在选择了inputs之后又进行了什么作。其实没有什么行列要求的,只要你的输入和输出的行相等(此时选中matrix row)或者列相等(此时选中matrix column )就行了.至于权重什么的那些这个工具箱会自动帮你搞定的,你只要在下一步选择隐藏层的神经元个数再train就行了
神经网络拟合 神经网络拟合函数
神经网络拟合 神经网络拟合函数
神经网络拟合 神经网络拟合函数
哪种做法容易引起过拟合问题
如何有效训练多隐层神经网络?哪种学习神经网络可以上<神经网络之家>nnet做法容易引起过拟合问题如下:
线性拟合一般采用的方法是基于最小二乘法拟合函数、基于pyplot拟合函数、基于神经网络拟合函数。
线性拟合是曲线拟合的一种形式。设x和y都是被观测的量,且y是x的函数:y=f(x;b),曲线拟合就是通过x,y的观测值来寻求参数b的估计值,及寻求的理论曲线y=f(x;b)。当函数y=f(x;b)为关于b的i线性函数时,称这种曲线拟合为线性拟合。
曲线拟合要解决的问题是寻求与的背景规律相适应解析表达式;使它在某种意义下的逼近或拟合称为拟合模型;为待定参数,当仅在中线性的出现时,称模型为线性的,否则为非线性的。
函数对传统BP算法本质上是一组样本的输入/输出问题转化为一个非线性优化问题,并通过使用一种学习方法来解决重量问题迭代的负梯度下降法,但其收敛速度慢和容易陷入局部极小,为此提出了一种新的算法,即高斯消去。模型的适应性起着测试的作用,故又称为测试函数。另一种途径是:在模型中纳入个数和种类足够多的测试函数,借助于数理统计方法中的相关性分析和显著性检验,对所包含的测试函数逐个或依次进行筛选以建立较适合的模型(见回归分析)。
matlab 2013 BP神经网络 拟合函数
67]作为输入,同理得到t=7时候的R值。没有将矩阵r映射回归一化处理前的范围。可用tmnmx函数将神经网络的输出结果映射回归一化pr=[0,1;0,1];前的数据范围。
修改后的代码:BP神经网络拟合函数程序中总是出现??? Error using ==> mapminmax Too many output arguments.求大神指点
net=newff(minmax(x1),[L-1,a,n],{'tansig','tansig','purelin'},'tansig');mapminmax不是这样用的,你这个是premnmx的用法。
两种修改方法:
直接将mapminmax更改为premnmx即可。
或者就使用mapminmax函数,该函数的用法为
[Y,PS] = mapminmax(X)
[Y,PS] = mapminmax(X,FP)
Y = mapminmax('apply',X,PS)
X = mapminmax('rrse',Y,PS) matlab中的归一化处理有四种方法
1. premnmx、tmnmx、tramnmx
关于用premnmx语句进行归一化:
premnmx语句的语法格式是:[Pn,minp,maxp,Tn,mint,maxt]=premnmx(P,T)
我们在训练网络时如果所用的是经过归一化的样本数据,那么以后使用网络时所用的新数人工神经网络(人工神经网络,人工神经网络)系统是20世纪40年代的出现,这是由许多神经元调节连接权值连接而成,具有大规模并行处理,分布式信息存储,良好的自我组织自学能力强等特点,在信息处理,模式识别,智能控制与系统建模等领域得到越来越广泛的应用。特别是,误反向传播算法(误反向传播训练,简称BP网络)可以逼近任意连续函数,具有很强的非线性映射能力,网络的中间层,处理单元和网络层的数量学习系数等参数可根据具体情况而定,非常灵活地设定,因此它在许多应用领域中起重要作用。近年来,神经网络,解决了收敛速度慢,不能保证收敛到全局最小点时,网络的中间层,它是用来选择的学习和记忆,以及网络不稳定的单位数没有理论指导和等缺陷,提出了一些改进的算法。我们1传统的BP算法概述据也应该和样本数据接受相同的预处理,这就要用到tramnmx。
其中P和Pn分别为变换前、后的输入数据,maxp和minp分别为premnmx函数找到的值和最小值。
2. prestd、tstd、trastd
(by happy)
4.在版的matlab里面共有两个归一化函数:mapminmax()和mapstd(),其中个函数是归一化到[-1 1]范围,后一个的原理我也不太懂,但归一后的数据较规整,比个好用.
各自的归一化格式如下:
[pn,ps]=mapminmax(P)或=mapstd(P) %P是输入向量
[tn, ts]=mapminmax(t)或=mapstd(t) %t 具体用那种方法就和你的具体问题有关了是目标向量
在训练完后,对测试样本归一化格式为:
仿真后反归一化格式则为:
Matlab高手请留步。对一组数据(任意)进行拟合用两种方法:最小二乘法(既定函数)和神经网络(BP)进行曲
net.trainParam.epo[Pn]=tramnmx(P,minp,maxp)chs=10000;%训练次数BP神经网络,先导入数据,file——importdata
data为NL矩阵,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);%数据归一化
%a是隐含层数,自己算,公式为a=根号下(0.43n(L-n)+0.12(L-n)^2+2.54L+0.77(L-n)+0.86)
net.trainParam.show=50;%系统每50步显示一次训练误的变化曲线
net.trainParam.lr=0.01;%学习率
net.trainParam.goal=0.01;%训练要求精度
[net,tr]=train(net,x1,y1);%训练网络
Y=sim(net,x1);%对BP神经网络仿真
X=(1:100);%横坐标自己定,这里产生1到100的数
mse(e);%其中P,T分别为原始输入和输出数据,minp和maxp分别为P中的最小值和值。mint和maxt分别为T的最小值和值。求均方
matlab 神经网络
对于给定的离散数据需恰当地选取一般模型中函数的类别和具体形式,这是拟合效果的基础。若已知的实际背景规律,即因变量对自变量的依赖关系已有表达式形式确定的经验公式,则直接取相应的经验公式为拟合模型。反之,可通过对模型中基函数的不同选取,分别进行相应的拟合并择其效果佳者。BP神经网络做分类预测的程序,每次训练建立的神经结构不同,所以运行的结果不同。
3. 自己编程从原理上来说,神经网络是可以预测未来的点的。
实际上,经过训练之后,神经网络就拟合了输入和输出数据之间的函数关系。只要训练的足够好,那么这个拟合的关系就会足够准确,从而能够预测在其他的输入情况下,会有什么样的输出。
如果要预测t=[6
7]两点的R值,先以t=[1
13
15]作为输出,训练网络。训练完成之plot(X,Y,'-',X,y1,'.');%画图后,用t=[2
34
56]作为输入,这样会得到一个输出。不出意外的话,输出的数组应该是[13
15
X],这里的X就是预测t=6时的R值。然后以t=[3
根据我的神经网络预测,t=6时,R=15,t=7时,R=15。我不知道这个结果是否正确,因为神经网络通常需要大量的数据来训练,而这里给的数据似乎太少,可能不足以拟合出正确的函数。
BP神经网络基于MATLAB拟合正弦曲线
pr(1:16,1)=0; %输入矢量的取值范围矩阵说明:BP(反向传播)网络在1986年的一个科学家小组由鲁梅哈特和McCelland为首的由前训练的多层前馈网络提出了一种误反向传播算法,是目前应用最广泛的神经网络模型之一。 BP神经网络可以学习和存储大量输入 - 输出模式映射关系,如果没有事先表明描述的映射关系的数学方程。它的学习规则是使用最速下降法,反向传播通过网络来不断调整权值和阈值,以使网络的平方误最小总和。 BP神经网络的拓扑结构包括输入层(输入),隐藏层(隐藏层)和输出层(输出层) - 抽象:BP神经网络算法的基础上提出了现有的BP神经网络算法是通过一组权重任意地选择,考虑到目标输出直接作为代数和线性方程来创建线性方程,解出未知右边,有局部最小值和收敛速度慢的问题没有传统方法,并且更容易理解。
结构自适应网络 。:固定的权重;高斯消元法; BP算法
BP算法是一种监督的学习算法,其主要思想是:输入学习样本,采用反向传播算法对网络权和反复调整训练的偏见,从而使期望的输出向量和向量尽可能靠近训练网络时是完整的比指定的误,输出层和较少的平方误,节省了网络的权值和偏。具体步骤如下:
(1)初始化,随机连接权重给予各[W],[V]和阈值θi,室温。
(2)由给定的投入产出模型计算隐含层和输出层,每个单元的输出
BJ = F(■w45ijai-θ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,直到网络反复训练,以满足设置的要求输出错误结束训练。
什么是过拟合现象?
下面介绍tramnmx函数:关于过拟合的说法确的是(ABC)
A.模型过于复杂容易造成过拟合B.模型训练次数过多容易造成过拟合C.训练数据太小容易造成过拟合D.增加测试数据集能够避免过拟合。
什么是过拟合?如何避免过拟合问题?
过拟合 :所选模型的复杂度比真模型更高;学习时选择的模型所包含Dropout: 正则是通过在代价函数后面加上正则项来防止模型过拟合的。而在神经网络中,有一种方法是通过修改神经网络本身结构来实现的,其名为Dropout。的参数过多,对已经数据预测得很好,但是对未知数据预测得的现象。
过拟合一般特点 :高方,低偏。
导致过拟合原因: 训练数据不够,模型进行过度训练(overtraining)等。
如何避免过拟合:
Early stopping (适当的stopping criterion): Early stopping便是一种迭代次数截断的方法来防止过拟合的方法,即在模型对训练数据集迭代收敛之前停止迭代来防止过拟合。
数据集扩增 : 数据机扩增即需要得到更多的符合要求的数据,即和已有的数据是同分布的,或者近似同分布的。一般方法有:从数据源头采集更多数据,原有数据并加上随机噪声,重采样,根据当前数据集估计数据分布参数,使用该分布产生更多数据等。
正则化方法: 一般有L1正则与L2正则pnt=mapminmax('apply',pt,ps)或=mapstd('apply',pt,ps)等
matlab 神经网络 非线性拟合过程中出错 Input data size does not match net.inputs{1}.size.
premnmx函数用于将网络的输入数据或输出数据进行归一化,归一化后的数据将分布在[-1,1]区间内。请帮忙点个赞
楼主的代码主要错在下面这段
%---------------如果你有n个变量,pr就是一个n行2列的矩阵,第i行代表第i个输入变量的范围(range),----------------------------------------------------------%
bpnet=newff(pr,[12 1],{'tansig'out=mapminmax('rrse',An,ts)或=mapstd('rrse',An,ts);其中An为sim函数的输出。, 'tansig'},'traingdx', 'learngdm');
%--------------------------------------------------%
按楼主的写法,有16个输入变量了.
楼主的输入变量应该是两个,所以应该写成:
%-------------------------------------------------------------------------%
bpnet=newff(pr,[12 1],{'tansig', 'tansig'},'traingdx', 'learngdm');
%--------------------------------------------------%
为什么matlab的BP神经网络曲线拟合的时候没问题,预测的时候误这么大
45]作为输入,R=[12这是神经网络特性导致的,与matlab没关系。
14一方面,如果你的网络层选的神经元的个数和层数模型的选择:不合适,就会导致这种结果;
另一方面,如果你的训练样本选择的不合适,或者数据表达的太快,也会导致这种问题。
前一个方面根据经验,后一个可以做成神经元的参数可调的。