我必须使用Matlab实现单层感知器。
我面临的问题是,当我运行程序时,它为每个输入提供输出(它显示结果4次),但我想回到矩阵的第一个索引,之后到达第四,我无法找到我如何回到矩阵的第一个索引。
我希望训练我的程序,以便通过在每个循环中迭代矩阵来产生与b
中相同的结果。
这是我目前的代码:
a = [ 1 1
1 -1
-1 1
-1 -1 ];
b = [1
-1
-1
-1];
disp(a);
disp(b);
x = a(:,1);
disp(x);
y = a(:,2);
disp(y)
learningrate = 0.1;
maxiteration = 10;
weight(1)=0.1;
weight(2)=0.1;
weight(3)=0.1;
count = length(x);
for p = 1:count
s = (x(p) * weight(1))+ (y(p) * weight(2))+ weight(3);
if s >= 0
result = 1;
if result ~= b(p)
weight(1) = weight(1)+learningrate*(b(p)-result)*x(p);
weight(2) = weight(2)+learningrate*(b(p)-result)*y(p);
weight(3) = weight(3)+learningrate*(b(p)-result);
disp(result);
disp(x(p));
disp(y(p));
disp(weight(1));
disp(weight(2));
disp(weight(3));
end
else
if s <= 0
result = -1;
disp(result);
if result ~= b(p)
weight(1)=weight(1)+learningrate*(b(p)-result)*x(p);
weight(2)=weight(2)+learningrate*(b(p)-result)*y(p);
weight(3)=weight(3)+learningrate*(b(p)-result);
disp(x(p));
disp(y(p));
disp(weight(1));
disp(weight(2));
disp(weight(3));
end
end
end
end
答案 0 :(得分:1)
@Amro已经发布了一篇关于用MATLAB实现单层感知器的详细answer。他的帖子不仅在“获取一些代码”方面很有价值,而且在于如何解决技术问题。它首先显示感知器的图形表示,显示信号流,问题描述。并继续在代码中提出优秀的评论,作为解决方案的一部分。
使用有意义的名称替换代码中的变量a
和b
可能会产生很大的不同。