Искусственные нейронные сети. Каширина И.Л. - 50 стр.

UptoLike

Составители: 

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, пока выходы нейронов на текущей итерации не совпадут с
выходами на предыдущей или пока счётчик числа итераций не превысит не-