感知器- MatLab严重混淆



这是我第一次尝试机器学习,我可以实现我想要的任何代码。我有Matlab访问,我认为这将比Python更简单,我有实现PLA的伪代码。然而,代码的最后一部分绝对让我感到困惑,尽管它比我迄今为止在这里看到的代码更简单。它似乎要求使用未声明的变量。这是我有的。我会指出我卡住的数轴。

1) w <- (n + 1) X m (matrix of small random nums)
2) I <- I augmented with col. of 1s
3) for 1 = 1 to 1000
4)    delta_W = (N + 1) X m (matrix of zeros) // weight changes
5)    for each pattern 1 <= j <= p
6)        Oj = (Ij * w) > 0 // j's are subscript/vector matrix product w/ threshold
7)        Dj = = Tj - Oj // diff. between target and actual
8)        w = w + Ij(transpose)*Dj // the learning rule

第1行到第4行被编码。我的问题在第5行:"对于每个模式是什么意思"(即,如何在代码中表达它)。他们对哪个j感兴趣,我在观察矩阵中有一个j,在目标矩阵中也有一个j。还有,"p"是从哪里来的(我有I, j, m和n,但没有p)?任何想法都会很感激。

"for each pattern"是指输入。他们说的就是运行那个循环,其中Ij是感知器的输入。

在MATLAB中写这个,它真的取决于你的数据是如何导向的。我会将你的输入存储为mXn矩阵,其中m是输入的数量,n是每个输入的大小。

假设我们的输入如下:

input = [1 5 -1;
         2 3 2;
         4 5 6;
         ...    ]

首先用一列1作为偏置输入来"扩充"它:

[r c] = size(input);
input = [input ones(r,1)];

那么,你的for循环将简单地为:

for inputNumber = 1:r
    pattern = input(inputNumber,:);

你可以从那里继续

最新更新