1. 学习由实际问题去建立神经网络模型的过程;
2. 应用matlab软件进行程序设计,熟练掌握神经网络相关方法。
3. 设计matlab程序来求解学习模型;
4. 通过实例开发,熟悉神经网络学习算法的设计。
5. 掌握神经网络方法的应用。
6. 训练综合应用神经网络方法去解决实际问题。
电脑
相应的开发软件matlab
实验一:
三.实验要求:
1. 计算题 :如图所示,神经元i有4个输入,分别为5,-10,6和-4,对应的权值分别为0.6、0.8、-1.5和-0.8,偏差为0.5。e = 2.71828
试求激活函数f()分别为下列函数时神经元i的输出yi 给出计算过程和计算结果。
解:v = 5*0.6+(-10)*0.8+6*(-1.5)+(-4)*(-0.8) + 0.5 = -10.3
(1) 线行函数f(v)=2v+1;
f(v) = 2*(-10.3) + 1 = -19.6;
(2)阈值函数
从上述得知v = -10.3; v<0;
因此yi = 0;
(3)分段函数
从上述得知:v<-1/2; 因此yi = 0;
(4)Sigmoid函数,a=1
由上面得知:v = -10.3, a = 1, e = 2.71828
yi = 1 / (1+e(10.3*1))= 0.0000336;
2. 橘子/香蕉模式识别问题。
向量输入是三维的,输入输出关系由下式描述. 当输出香蕉时,感知机输出为1;输出橘子时,感知机输出为-1。其中:阈值b=0,权值矩阵W=[-1,0,0],问题:当输入为:XA=[-1,0,-1]; ?XB=[-1, -1, -1],分别判别感知机的输出,哪个是香蕉?哪个是橘子?给出计算过程和计算结果。
解:当输入是XA = [-1,0,-1]时;
因为 W = [-1,0,0];
a = (-1*-1)+(0*0) + (-1*0) = 1;
所以输入时XA时,感知机输出的是香蕉。
当输入是XA = [-1,-1,-1];
a = (-1*-1) + (0*-1) + (0*-1);
所以输入时XB时,感知机输出的是香蕉。
3. 在0≤x≤4p区间内,用subplot(m,n,p)绘制曲线如下两条曲线:
提示:x=0:pi/100:4*pi
Y=sin5x y=cos5x
代码:
clear;
x = 0:pi/100:4*pi;
Y = sin(5*x);
y = cos(5*x);
subplot(2,1,1),plot(x,Y);subplot(2,1,2),plot(x,y)
运行结果:
4. 使用newff函数设计一个BP神经网络,神经网络有5个神经元组成的隐含层创建的。
1) P输入和T目标
P = [0 1 2 3 4 5 6 7 8 9 10];
T = [0 1 2 3 4 3 2 1 2 3 4];
2) 用sim函数对网络进行仿真
3) 在一个坐标系中,画出目标和网络的输出。给出实验结果截图。
5. 上题的结果并不理想,使用net.trainParam.epochs调整迭代次数,用train函数重新训练神经网络,用sim函数对网络进行仿真,在一个坐标系中,画出目标图和网络的输出。给出代码和结果运行截图。
net.trainParam.epochs = 10;
??????net = train(net,P,T);
1) 调整迭代次数为50
p = [0 1 2 3 4 5 6 7 8 9 10];
t = [0 1 2 3 4 3 2 1 2 3 4];
net = newff(p,t,5);
net.trainParam.epochs = 50;
net = train(net,p,t);
y = sim(net,p);
scatter(p,t);hold on;
plot(p,y);
2) 调整迭代次数为100
p = [0 1 2 3 4 5 6 7 8 9 10];
t = [0 1 2 3 4 3 2 1 2 3 4];
net = newff(p,t,5);
net.trainParam.epochs = 50;
net = train(net,p,t);
y = sim(net,p);
scatter(p,t);hold on;
plot(p,y);
3) 调整迭代次数为150
p = [0 1 2 3 4 5 6 7 8 9 10];
t = [0 1 2 3 4 3 2 1 2 3 4];
net = newff(p,t,5);
net.trainParam.epochs = 150;
net = train(net,p,t);
y = sim(net,p);
scatter(p,t);hold on;
plot(p,y);
实现代码如下:
p = [0 1 2 3 4 5 6 7 8 9 10];
t = [0 1 2 3 4 3 2 1 2 3 4];
net = newff(p,t,5);
net.trainParam.epochs = 1500;
net = train(net,p,t);
y = sim(net,p);
scatter(p,t);hold on;
plot(p,y);
最终发现迭代次数在1500左右最能模拟出比较贴切实际值的曲线。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。