ВУЗ:
Составители:
63
Размер распознаваемого входного образа (bmp-файл) должен быть
100 × 100 точек (параметр SourceSize), а перед обработкой он приво-
дится к размеру 40 × 40 (параметр DestSize). Таким образом, количество
входов сети – 1600 (параметр n). Количество выходов m совпадает с коли-
чеством цифр и равняется 10. Вес отрицательной обратной связи
ε
второго
слоя был принят равным –0.05.
Описание типов, констант и переменных:
type InputNeiron =recopd // Тип — нейрон первого слоя
w: array[1..n] of real;
// Весовые коэффициенты входов
Output: real; // Выход
end;
Neiron= recopd // Тип — нейрон второго слоя
Output:real; // Выход
Sum: real // Взвешенная сумма входов
end;
const SourceSize=100; // Размер стороны исходного изображения
DestSize=40; // Размер стороны изображения для распознавания
N=DestSize*DestSize; // Сколько входов
m=10; // Сколько образов
e=-1/(M*2); // Вес синапсов второго слоя
var InputRow: array[1..m] of InputNeiron//Первый слой нейронов
SecondRow: array[1..m] of Neiron//Второй слой нейронов
I1,I2: TImage;//Эталонный и масштабированный образы
Outputs=array[1..m] of real; // Копия выходов предыдущего прохода
i,j,x,y,count,max, index:integer;
Алгоритм обучения сети Хэмминга, адаптированный для данной задачи,
выглядит следующим образом.
1. Выбирается i-й входной образ.
2. Изображение локализуется и приводится к нужному масштабу.
3. Образ поточечно подаётся на входы i-го нейрона. Если k-я точка
образа чёрная, то весу k-го входа присваивается значение 0.5, в противном
случае –0.5 .
4. Переход на шаг 1, пока не
будут исчерпаны все эталонные образы.
Программный код алгоритма обучения:
I1:=TImage.Greate(self);
I2:=TImage.Greate(self);
I2.Width:=DestSize;
I2.Height:=DestSize;
for i:=1 to m do
begin
I1.Picture.LoadFromFile(IntToStr(i-1)+’.bmp’);
vScale(I1,I2); // Читаем и масштабируем образ
end;
for x:=1 to DestSize do
for y:=1 to DestSize do // Перебираем поточечно
if(I2.Canvas.Pixels[x-1,y-1]=clBlack)then Inpu-
tRow[i].W[x*DestSize+y]=0.5;
else InputRow[i].W[x*DestSize+y]=-0.5;
Размер распознаваемого входного образа (bmp-файл) должен быть 100 × 100 точек (параметр SourceSize), а перед обработкой он приво- дится к размеру 40 × 40 (параметр DestSize). Таким образом, количество входов сети 1600 (параметр n). Количество выходов m совпадает с коли- чеством цифр и равняется 10. Вес отрицательной обратной связи ε второго слоя был принят равным 0.05. Описание типов, констант и переменных: type InputNeiron =recopd // Тип нейрон первого слоя w: array[1..n] of real; // Весовые коэффициенты входов Output: real; // Выход end; Neiron= recopd // Тип нейрон второго слоя Output:real; // Выход Sum: real // Взвешенная сумма входов end; const SourceSize=100; // Размер стороны исходного изображения DestSize=40; // Размер стороны изображения для распознавания N=DestSize*DestSize; // Сколько входов m=10; // Сколько образов e=-1/(M*2); // Вес синапсов второго слоя var InputRow: array[1..m] of InputNeiron//Первый слой нейронов SecondRow: array[1..m] of Neiron//Второй слой нейронов I1,I2: TImage;//Эталонный и масштабированный образы Outputs=array[1..m] of real; // Копия выходов предыдущего прохода i,j,x,y,count,max, index:integer; Алгоритм обучения сети Хэмминга, адаптированный для данной задачи, выглядит следующим образом. 1. Выбирается i-й входной образ. 2. Изображение локализуется и приводится к нужному масштабу. 3. Образ поточечно подаётся на входы i-го нейрона. Если k-я точка образа чёрная, то весу k-го входа присваивается значение 0.5, в противном случае 0.5 . 4. Переход на шаг 1, пока не будут исчерпаны все эталонные образы. Программный код алгоритма обучения: I1:=TImage.Greate(self); I2:=TImage.Greate(self); I2.Width:=DestSize; I2.Height:=DestSize; for i:=1 to m do begin I1.Picture.LoadFromFile(IntToStr(i-1)+.bmp); vScale(I1,I2); // Читаем и масштабируем образ end; for x:=1 to DestSize do for y:=1 to DestSize do // Перебираем поточечно if(I2.Canvas.Pixels[x-1,y-1]=clBlack)then Inpu- tRow[i].W[x*DestSize+y]=0.5; else InputRow[i].W[x*DestSize+y]=-0.5; 63
Страницы
- « первая
- ‹ предыдущая
- …
- 61
- 62
- 63
- 64
- 65
- …
- следующая ›
- последняя »