【问题标题】:how to get back to the first index of matrices如何回到矩阵的第一个索引
【发布时间】:2011-05-09 10:16:52
【问题描述】:

我必须使用 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

【问题讨论】:

标签: matlab


【解决方案1】:

@Amro 发布了一篇详尽的answer,介绍了使用 MATLAB 实现单层感知器。他的帖子不仅在“获取一些代码”方面很有价值,而且在如何解决技术问题方面也很有价值。它以感知器的图形表示开始,显示信号流和问题描述。作为解决方案的一部分,继续在代码中使用出色的 cmets。

只需将代码中的变量 ab 替换为有意义的名称就可以产生很大的不同。

【讨论】:

    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 2019-03-15
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2021-12-14
    • 2016-11-17
    相关资源
    最近更新 更多