【问题标题】:Perceptron - MatLab Serious Confusion感知器 - MatLab 严重混淆
【发布时间】:2017-02-04 08:36:53
【问题描述】:

这是我第一次尝试机器学习,我可以随心所欲地实现代码。我有 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)?任何想法将不胜感激。

【问题讨论】:

    标签: matlab neural-network perceptron


    【解决方案1】:

    “对于每个模式”是指输入。他们所说的只是运行那个循环,其中 Ij 是感知器的输入。

    要在 MATLAB 中编写此代码,这实际上取决于您的数据的方向。我会将您的输入存储为 mXn 矩阵,其中 m 是输入的数量,n 是每个输入的大小。

    假设我们的输入看起来像:

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

    首先用一列作为偏置输入的“增强”它:

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

    然后,您的 for 循环将是:

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

    你可以从那里继续。

    【讨论】:

    • 谢谢! Thant 绝对是一个开始,而且对于如何与 Matlab 交互也有更多的思考。它看起来非常直接,然后,它没有。再次感谢该行的英文翻译!
    猜你喜欢
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 2012-11-14
    • 2013-12-28
    • 2012-01-20
    • 1970-01-01
    • 2022-01-22
    • 2016-11-08
    相关资源
    最近更新 更多