ВУЗ:
Составители:
50
ScaleX=(MaxX-MinX)/DestSize;
ScaleY=(MaxY-MinY)/DestSize;
for x:=0 to DestSize-1 do
for y:=0 to DestSize-1 do
I2.Canvas.Pixels[x,y] = I1.Canvas.Pixels[x*ScaleX+MinX,y*ScaleY+MinY];
end;
Общий алгоритм распознавания для сети Хэмминга состоит из четырёх частей:
подача распознаваемого образа на входы сети, передача данных с первого слоя на
второй , обработка данных вторым слоем , выбор распознанного образа . Алгоритм
работы первого этапа выглядит так.
1. Выбирается очередной нейрон .
2. Обнуляется его выход .
3. Изображение локализуется и приводится к нужному масштабу.
4. Локализованный образ поточечно подаётся на входы i-го нейрона . Если k-я
точка образа чёрная, то к значению выхода прибавляется значение веса k-го
входа , в противном случае это значение вычитается.
5. Значение выхода пропускается через функцию линейного порога .
6. Переход на шаг 1, пока не исчерпаны все нейроны первого слоя .
Код первого этапа процедуры распознавания:
for i: =1 to m do
begin
InputRow[i].Output:=0;
for x: =1 to DestSize do
for y: =1 to DestSize do // Подаём образ на нейроны первого слоя
if i2.Canvas.Pixels[x-1,y-1]=clBlack then
InputRow[i].Output:= InputRow[i].Output+InputRow[i].W[x*DestSize+y];
else InputRow[i].Output:= InputRow[i].Output-InputRow[i].W[x*DestSize+y];
if InputRow[i]. Output>=N/2 then
InputRow[i].Output:=N/2; // Выход - через функцию линейного порога
end
На втором этапе надо передать данные с выходов первого слоя на входы вто-
рого и в список результатов предыдущего прохода распознавания:
for i:=1 to m do
begin
SecondRow[i].Output= InputRow[i].Output;
Outputs[i]:=InputRow[i].Output;
SecondRow[i].Sum=0;
end
На третьем этапе начинает работу второй слой по следующей схеме.
1. Обнуляется счётчик итераций .
2. Запоминаются выходы нейронов в списке результатов предыдущего прохода .
3. Перебираются поочередно все нейроны .
4. Каждый нейрон принимает значения выходов всех нейронов , суммирует их,
предварительно умножив на коэффициент
ε
(кроме случая, когда нейрон прини -
мает своё же значение, которое остается без изменения).
5. Полученную сумму каждый нейрон посылает на свой выход .
6. Переход на шаг 2, пока выходы нейронов на текущей итерации не совпадут с
выходами на предыдущей или пока счётчик числа итераций не превысит не -
50 ScaleX=(MaxX-MinX)/DestSize; ScaleY=(MaxY-MinY)/DestSize; for x:=0 to DestSize-1 do for y:=0 to DestSize-1 do I2.Canvas.Pixels[x,y] = I1.Canvas.Pixels[x*ScaleX+MinX,y*ScaleY+MinY]; end; Общий алгоритм распознавания для сети Хэмминга состоит из четырёх частей: подача распознаваемого образа на входы сети, передача данных с первого слоя на второй, обработка данных вторым слоем, выбор распознанного образа. Алгоритм работы первого этапа выглядит так. 1. Выбирается очередной нейрон. 2. Обнуляется его выход. 3. Изображение локализуется и приводится к нужному масштабу. 4. Локализованный образ поточечно подаётся на входы i-го нейрона. Если k-я точка образа чёрная, то к значению выхода прибавляется значение веса k-го входа, в противном случае это значение вычитается. 5. Значение выхода пропускается через функцию линейного порога. 6. Переход на шаг 1, пока не исчерпаны все нейроны первого слоя. Код первого этапа процедуры распознавания: for i: =1 to m do begin InputRow[i].Output:=0; for x: =1 to DestSize do for y: =1 to DestSize do // Подаём образ на нейроны первого слоя if i2.Canvas.Pixels[x-1,y-1]=clBlack then InputRow[i].Output:= InputRow[i].Output+InputRow[i].W[x*DestSize+y]; else InputRow[i].Output:= InputRow[i].Output-InputRow[i].W[x*DestSize+y]; if InputRow[i]. Output>=N/2 then InputRow[i].Output:=N/2; // Выход - через функцию линейного порога end На втором этапе надо передать данные с выходов первого слоя на входы вто- рого и в список результатов предыдущего прохода распознавания: for i:=1 to m do begin SecondRow[i].Output= InputRow[i].Output; Outputs[i]:=InputRow[i].Output; SecondRow[i].Sum=0; end На третьем этапе начинает работу второй слой по следующей схеме. 1. Обнуляется счётчик итераций. 2. Запоминаются выходы нейронов в списке результатов предыдущего прохода. 3. Перебираются поочередно все нейроны. 4. Каждый нейрон принимает значения выходов всех нейронов, суммирует их, предварительно умножив на коэффициент ε (кроме случая, когда нейрон прини- мает своё же значение, которое остается без изменения). 5. Полученную сумму каждый нейрон посылает на свой выход. 6. Переход на шаг 2, пока выходы нейронов на текущей итерации не совпадут с выходами на предыдущей или пока счётчик числа итераций не превысит не-