计算智能与智能系统课程实验神经网络数值实验

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《计算智能与智能系统》

课程实验

实验题目:神经网络数值实验

实验一、利用感知器进行分类

输入代码:

%画输入向量的图像

P = [-0.5 -0.5 +0.3 -0.1 -4; -0.5 +0.5 -0.5 +1.0 5];

T = [1 1 0 0 1];

plotpv(P,T); % plotpv函数利用感知器的输入向量和目标向量来画输入向量的图像

%建立神经网络

net = newp([-40 1;-1 50],1);

hold on

%添加神经元的初始化值到分类图

linehandle = plotpc(net.IW{1},net.b{1}); % plotpc函数用来画分类线

%训练神经网络

E = 1; % E为误差

% 决定在训练过程中重复次数

while (sse(E)) % sse函数是用来判定误差E的函数

[net,Y,E] = adapt(net,P,T); % 利用输入样本调节神经网net

linehandle = plotpc(net.IW{1},net.b{1},linehandle);% 画出调整以后的分类线

drawnow; % 延迟一段时间

end

%模拟sim

p = [0.7; 1.2];

a = sim(net,p);

% 利用模拟函数sim计算出新输入p的神经网络的输出

plotpv(p,a);

circle = findobj(gca,'type', 'line');

set(circle,'Color','red');

hold on;

plotpv(P,T);

plotpc(net.IW{1},net.b{1});

hold off;

axis([-2 2 -2 2]);

输出:

实验二、BP神经网络

(1)输入代码:

%画出非线性函数图像

k = 1;

p = [-1:.05:1];

t = sin(k*pi*p);

plot(p,t,'-')

title('要逼近的非线性函数');

xlabel('时间');

ylabel('非线性函数');

%未训练网络输出

n = 10;

net = newff(minmax(p), [n,1], {'tansig''purelin'}, 'trainlm'); % 对于该初始网络,可以应用sim()函数观察网络输出

y1 = sim(net,p);

% 同时绘制网络输出曲线,并与原函数相比较

figure;

plot(p,t,'-',p,y1,'--')

title('未训练网络的输出结果');

xlabel('时间');

ylabel('仿真输出--原函数-');

%进行网络训练

net = train(net,p,t);

%进行网络测试

y2 = sim(net,p);

figure;

plot(p,t,'-',p,y1,'--',p,y2,'-.')

title('训练后网络的输出结果');

xlabel('时间');

ylabel('仿真输出');

输出:

结果分析:从上图可知,没有经过训练的网络,其输出结果模拟效果比较差,经过训练的BP 神经网络的模拟效果较好。

(2)改变非线性函数的K值

输入代码:

k = 5;

p = [-1:.05:1];

t = sin(k*pi*p);

plot(p,t,'-')

title('要逼近的非线性函数');

xlabel('时间');

ylabel('非线性函数');

n = 10;

net = newff(minmax(p), [n,1], {'tansig''purelin'}, 'trainlm');

% 对于该初始网络,可以应用sim()函数观察网络输出

y1 = sim(net,p);

% 同时绘制网络输出曲线,并与原函数相比较

figure;

plot(p,t,'-',p,y1,'--')

title('未训练网络的输出结果');

xlabel('时间');

ylabel('仿真输出--原函数-');

net = train(net,p,t);

y2 = sim(net,p);

figure;

plot(p,t,'-',p,y1,'--',p,y2,'-.')

title('训练后网络的输出结果');

xlabel('时间');

ylabel('仿真输出');

输出:

结果分析:k值只改变了非线性函数的频率,

但不影响网络的训练效果。

(3)隐层神经元数目的影响

k = 5;

p = [-1:.05:1];

t = sin(k*pi*p);

plot(p,t,'-')

title('要逼近的非线性函数');

xlabel('时间');

ylabel('非线性函数');

n = 50;

net = newff(minmax(p), [n,1], {'tansig''purelin'}, 'trainlm');

% 对于该初始网络,可以应用sim()函数观察网络输出

y1 = sim(net,p);

% 同时绘制网络输出曲线,并与原函数相比较

figure;

plot(p,t,'-',p,y1,'--')

title('未训练网络的输出结果');

xlabel('时间');

ylabel('仿真输出--原函数-');

相关文档
最新文档