ВУЗ:
Составители:
48
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);
// ïîäñ÷èòûâàåì îòâåò ïåðcåïòðîíà äëÿ èìåþùåйñÿ ìàòðèöû âåñîâ
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.
Размер распознаваемого входного образа (bmp-файл) должен быть 100х100 то-
чек (параметр SourceSize), а перед обработкой он приводится к размеру 40x40
(параметр DestSize). Таким образом , количество входов сети — 1600 (параметр n).
Количество выходов m совпадает с количеством цифр и равняется 10. Вес отрица-
тельной обратной связи
ε
второго слоя был принят равным -0.05.
Описание типов , констант и переменных:
type InputNeiron =recopd // Тип — нейрон первого слоя
w: array[1..n] of real; // Весовые коэффициенты входов
Output: real; // Выход
end;
Neiron= recopd // Тип — нейрон второго слоя
Output:real; // Выход
48 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); // ïîäñ÷èòûâàåì îòâåò ïåðcåïòðîíà äëÿ èìåþùåйñÿ ìàòðèöû âåñîâ 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. Размер распознаваемого входного образа (bmp-файл) должен быть 100х100 то- чек (параметр SourceSize), а перед обработкой он приводится к размеру 40x40 (параметр DestSize). Таким образом, количество входов сети — 1600 (параметр n). Количество выходов m совпадает с количеством цифр и равняется 10. Вес отрица- тельной обратной связи ε второго слоя был принят равным -0.05. Описание типов, констант и переменных: type InputNeiron =recopd // Тип — нейрон первого слоя w: array[1..n] of real; // Весовые коэффициенты входов Output: real; // Выход end; Neiron= recopd // Тип — нейрон второго слоя Output:real; // Выход