Перцептрон - 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 они заинтересованы, у меня есть a j в матрице наблюдения и a j в целевой матрице. Кроме того, откуда взялась буква "p" (у меня есть i, j, m и n, но нет p)? Любые мысли будут оценены.

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,:);

и вы можете продолжить оттуда.

Другие вопросы по тегам