提示:来源于 中国大学慕课 西北工业大学 肖华勇老师的数学建模课程
`提示:来源于 中国大学慕课 西北工业大学 肖华勇老师的数学建模课程
来源于: 中国大学慕课 西北工业大学 肖华勇老师的数学建模课程
多层前向神经网络(MLP)是神经网络中的一种,它由一些基本的神经元即节点组成,如上图。除输入层外,每一节点的输入为前一层所有节点输出值得和。每一节点的激励输出值由节点输入、激励函数及偏置量决定。
net = newff([xm,xM],[h1,h2,h3,........,hk],[f1,f2,f3,......,fk])
其中 xm 和 xM 分别为列向量,存储各样本数据的最小值和最大值;
[h1,h2,h3,…,hk] 是一个行向量,输入各层节点数;
[f1,f2,f3,…,fk] 输入变量为字符串,代表该层的传输函数。
常用得传输函数有:
提示:还可设定参数:Net.trainParam.epochs = 1000 (设定迭代次数);
Net.trainFcn = ‘traingm’ (设定带动量的梯度下降算法);
[net,tr,Y1,E1] = train(net,X,Y)
X 为 nM 矩阵,n 为输入变量的个数, M 为样本数;
Y 为 mM 矩阵,m 为输出变量的个数, M 为样本数;
net 为返回后的神经网络对象;
tr 为训练跟踪数据;
tr.perf 为各步目标函数值;
Y1 为网络的最后输出;
E1 为训练误差向量。
Y2 = sim(net,X1)
X1 为输入数据矩阵,各列为样本数据;
Y2 为对应输出值;
产生函数在 [0,10] 上间隔为0.5的数据,利用神经网络学习。并推广到 [0,10] 上间隔为0.1上个点函数值。分别作图分析。
x = 0:0.5:10;
y = 0.2*exp(-0.2*x)+0.5*exp(-0.15*x).*sin(1.25*x);
plot(x,y) % 绘制原始数据图
net = newff([0,10],[6,1],{'tansig','tansig'}); % 网络初始化
net = train(net,x,y); % 网络训练
x1 = 0:0.1:10;
y1 = sim(net,x1); % 数据泛化
plot(x,y,'*',x1,y1,'r'); % 做对比图
clc
clear all
x = [1.24 1.36 1.38 1.38 1.38 1.40 1.48 1.54 1.56 1.14 1.18 1.20 1.26 1.28 1.30;
1.72 1.74 1.64 1.82 1.90 1.70 1.82 1.82 2.08 1.78 1.96 1.86 2.00 2.00 1.96];
y = [1 1 1 1 1 1 1 1 1 0 0 0 0 0 0;
0 0 0 0 0 0 0 0 0 1 1 1 1 1 1];
xmin = min(x');
xmax = max(x');
net.trainParam.epochs = 2500; % 设定迭代步数
net = newff([xmin',xmax'],[5,2],{'logsig','logsig'}); % 网络初始化
net = train(net,x,y); % 网络训练
x1 = [1.24 1.28 1.40
1.80 1.84 2.04];
y1 = sim(net,x1); % 数据泛化
plot(x(1,1:9),x(2,1:9),'*',x(1,10:15),x(2,10:15),'o',x1(1,:),x1(2,:),'p') % 做数据图
grid on