【智能控制实验】MATLAB环境下单层感知器神经网络实现逻辑“与”运算设计

MATLAB环境下单层感知器神经网络实现逻辑“与”运算设计

一、实验要求:

重点是掌握感知器神经网络的学习算法原理和代码设计方法,应用MATLAB编写感知器神经网络实现逻辑与运算;应用神经网络工具箱设计感知器神经网络实现逻辑与方法。

已知:

训练样本: x1=0011 x2=0101 期望输出:d=0001

激发函数f为阶跃函数,MATLAB使用hardlim 作为阶跃函数。

二、实验内容

2.1 学习算法

img

2.2 应用MATLAB编写感知器神经网络实现逻辑与运算
2.2.1 代码:
%样本
x1 = [0 0 1 1];
x2 = [0 1 0 1];
%目标值
d = [0 0 0 1];
%权值
w1 = 0;
%权值
w2 = 0;
%阈值
w0 = 0;
%η
a = 0.5;
t = 0;
while 1
   t = t + 1;
   %计算实际输出
   y = zeros(1,4);
   for i = 1:4
​     u = [x1(i);x2(i)];
​     w = [w1 w2];
​     s = w*u - w0;
​     if s >= 0
​      y(1,i) = 1;
​     else
​      y(1,i) = 0;
​     end
   end
   %判断是否满足要求
   if all(y==d)
​     disp('模型训练成功')
​     w1,w2,w0,y
​     %画图
​     %画出决策界面
​     f = @(x,y)w1*x+w2*y-w0
​     ezplot(f)
​     axis([-1,2,-1,2])
​     hold on 
​     plot(x1(1,:),x2(1,:),'*')
​     break
   else
​     disp(['第',num2str(t),'轮','模型训练失败,继续训练'])
   end
   %修正权值
   w1 = w1 + a*(d-y)*x1';
   w2 = w2 + a*(d-y)*x2';
   w0 = w0 +a*(d-y)*[-1 -1 -1 -1]';
end
2.3 应用神经网络工具箱设计感知器神经网络实现逻辑与方法
2.3.1 代码:
%训练集
P = [0 0 1 1;0 1 0 1];
x1 = [0 0 1 1];
x2 = [0 1 0 1];
%目标值
T = [0 0 0 1];
%生成感知器
net = newp([0 1;0 1],1);
%net.iw{1};%网络的权值
%net.b{1};%网络的阈值
net.trainParam.epochs=15;
net = train(net,P,T);
w1 = w(1)
w2 = w(2)
w0 = net.b{1}
f = @(x,y)w1*x+w2*y+w0;
ezplot(f);
hold on ;
plot(x1(1,:),x2(1,:),'*');
net.iw{1,1};
%axis([-1,2,-1,2]);

三、运行结果及分析

3.1 应用MATLAB编写感知器神经网络实现逻辑与运算

运行结果:

>> Perceptron

第1轮模型训练失败,继续训练

第2轮模型训练失败,继续训练

第3轮模型训练失败,继续训练

第4轮模型训练失败,继续训练

第5轮模型训练失败,继续训练

模型训练成功

w1 = 0.5000

w2 = 0.5000

w0 = 1

y = 0 0 0 1

img
3.2 应用神经网络工具箱设计感知器神经网络实现逻辑与方法。

运行结果:

w1 = 2

w2 = 1

w0 = -3

img
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值