Нейросетевые технологии. Каширина И.Л. - 62 стр.

UptoLike

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

62
procedure TMainForm.DGImgDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with (Sender as TDrawGrid).Canvas do
begin
if imgmatrix[ARow,ACol]=1 then Brush.Color:=clRed;
FillRect(rect);
end;
end;
Очистка изображения (стирается рисунок на сетке):
procedure TMainForm.BtnClearClick(Sender: TObject);
var i,j:integer;
begin
DGImg.Enabled:=false;
for i:=0 to n-1 do
for j:=0 to n-1 do imgmatrix[i,j]:=0;
DGImg.Enabled:=true;
Mainform.DGImg.Repaint;
end;
Распознавание изображения на сетке:
procedure TMainForm.BtnCheckClick(Sender: TObject);
var i,j:integer;
sum:real;//вход персептрона
rety,//полученный выход персептрона
test:shortint;//направление корректировки весов (+1 или -1)
begin
sum:=0;
//растягивание изображение на сетке до ее границ
Mainform.BtnScaleClick(Sender);
for i:=0 to n-1 do
for j:=0 to n-1 do
sum:=sum+imgmatrix[i,j]*weights[i,j];
if sum>0 then rety:=1 else rety:=0;
if rety=1 then
test:=Application.MessageBox(' ',' ',MB_ICONQUESTION or MB_YESNO) else
test:=Application.MessageBox(' ',' ',MB_ICONQUESTION or MB_YESNO);
if test=IDNO then
// обучаем персептрон в случае неправильного ответа
begin
if rety=0 then test:=1 else test:=-1;
for i:=0 to n-1 do
for j:=0 to n-1 do
//корректируем веса по формуле
weights[i,j]:=weights[i,j]+speed*test*imgmatrix[i,j];
//сохраняем измененные веса в файл
SaveWeights('./weights.wts');
end;
end;
Программная реализация сети Хэмминга
В качестве примера программной реализации сети Хэмминга рас-
смотрим решение упражнения 4 из
§ 7, то есть программу, распознающую
черно-белые изображения цифр от 0 до 9 (реализованную в среде Delphi).
Эталонные образы содержатся в файлах 0.bmp, 1.bmp,…,9.bmp.
procedure TMainForm.DGImgDrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
begin
  with (Sender as TDrawGrid).Canvas do
  begin
    if imgmatrix[ARow,ACol]=1 then Brush.Color:=clRed;
    FillRect(rect);
  end;
end;

Очистка изображения (стирается рисунок на сетке):
procedure TMainForm.BtnClearClick(Sender: TObject);
var i,j:integer;
begin
  DGImg.Enabled:=false;
  for i:=0 to n-1 do
    for j:=0 to n-1 do imgmatrix[i,j]:=0;
  DGImg.Enabled:=true;
  Mainform.DGImg.Repaint;
end;

Распознавание изображения на сетке:
procedure TMainForm.BtnCheckClick(Sender: TObject);
var i,j:integer;
  sum:real;//вход персептрона
  rety,//полученный выход персептрона
  test:shortint;//направление корректировки весов (+1 или -1)
begin
  sum:=0;
//растягивание изображение на сетке до ее границ
  Mainform.BtnScaleClick(Sender);
  for i:=0 to n-1 do
  for j:=0 to n-1 do
    sum:=sum+imgmatrix[i,j]*weights[i,j];
  if sum>0 then rety:=1 else rety:=0;
  if rety=1 then
  test:=Application.MessageBox(' ',' ',MB_ICONQUESTION or MB_YESNO) else
  test:=Application.MessageBox(' ',' ',MB_ICONQUESTION or MB_YESNO);
  if test=IDNO then
// обучаем персептрон в случае неправильного ответа
  begin
    if rety=0 then test:=1 else test:=-1;
    for i:=0 to n-1 do
    for j:=0 to n-1 do
//корректируем веса по формуле
       weights[i,j]:=weights[i,j]+speed*test*imgmatrix[i,j];
//сохраняем измененные веса в файл
    SaveWeights('./weights.wts');
  end;
end;
            Программная реализация сети Хэмминга
     В качестве примера программной реализации сети Хэмминга рас-
смотрим решение упражнения 4 из § 7, то есть программу, распознающую
черно-белые изображения цифр от 0 до 9 (реализованную в среде Delphi).
Эталонные образы содержатся в файлах 0.bmp, 1.bmp, ,9.bmp.
                                    62