1,我用的是matlab R2008,一列代表一个样本。其他版本的不知道
2,matlab中神经网络工具箱就已经很方便了,调用函数和修改参数就可以用了。
3,net_1trainParamlr代表学习速率,net_1trainParammc则是动量系数。至于参数的确定,要看具体情况。
nettrainParamshow = 10,每十次显示一下误差变化情况
nettrainParamlr = 005学习速率
nettrainParamgoal = 1e-10误差要求
nettrainParamepochs = 50000最大训练次数
x是测试样本
y=sim(net,x)测试X的输出是否符合要求
clear all;
close all;
clc;
%p = [2056 2395 2600 2298 1634 1600 1837 1478 1900 2395 2600 2298 1634 1600 1873 1478 1900 1500 2600 2298 1634 1600 1873 1478 1900 1500 2046];
t = [1873 1478 1900 1500 2046 1556];
p = [ 2056 2395 2600 2298 1634 1600];
%--归一化输入输出-- 映射到[0,1]--%
pmax = max(p);
pmin = min(p);
P = (p-pmin)/(pmax-pmin);
tmax = max(t);
tmin = min(t);
T = (t-tmin)/(tmax-tmin);
net =newff(P,T,5,{'tansig','purelin'},'traingdx');
%--设置训练参数--%
nettrainParamshow =50;
nettrainParamlr = 005;
nettrainParamepochs = 1000;
nettrainParamgoal = 1e-3;
netdivideFcn= '';
[net,tr] = train(net,P,T);
A =sim(net,P);
a =A(tmax - tmin)+tmin;
x = 7:12;
figure
plot(x,t,'+');
hold on;
plot(x,a,'or');
hold off;
xlabel('month');
ylabel('')
legend('实际','预测')
1 人工神经元( Artificial Neuron )模型
人工神经元是神经网络的基本元素,其原理可以用下图表示:
图中x1~xn是从其他神经元传来的输入信号,wij表示表示从神经元j到神经元i的连接权值,θ表示一个阈值 ( threshold ),或称为偏置( bias )。则神经元i的输出与输入的关系表示为:
图中 yi表示神经元i的输出,函数f称为激活函数 ( Activation Function )或转移函数 ( Transfer Function ) ,net称为净激活(net activation)。若将阈值看成是神经元i的一个输入x0的权重wi0,则上面的式子可以简化为:
若用X表示输入向量,用W表示权重向量,即:
X = [ x0 , x1 , x2 , , xn ]
则神经元的输出可以表示为向量相乘的形式:
若神经元的净激活net为正,称该神经元处于激活状态或兴奋状态(fire),若净激活net为负,则称神经元处于抑制状态。
图1中的这种“阈值加权和”的神经元模型称为M-P模型 ( McCulloch-Pitts Model ),也称为神经网络的一个处理单元( PE, Processing Element )。
你应该用的是新版的matlab,但是你的newff却是按照旧版的格式来输入的,所以出错。
修改为net=newff(P1',T1',10,{'tansig','logsig'},'trainlm')。10为隐含层的神经元个数,输入层和输出层由输入样本和输出样本决定(新版matlab自动根据样本情况设定),tansig为隐含层到输出层的传输函数,logsig为输出层到输出的传输函数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)