Перцептрон - 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,:);
и вы можете продолжить оттуда.