Программа 26

Программа 26.3

1000 'ПОДПРОГРАММА ЗАГРУЗКИ X1[ ] С ИЗОБРАЖЕНИЕМ ИЗ БАЗЫ ДАННЫХ
1010 'Переменная входа программы: LETTER%
1020 'Переменные выхода программы: X1[1] — X1[100], X1[101] = 1, CORRECT
1030 '
1040 'Переменная LETTER% со значением от 1 до 260 указывает,
'какой образ из базы данных должен быть
1050 ' возвращён в X1[1]…X1[100]. Узел смещения X1[101] всегда имеет
'значение 1. Переменная
1060 'CORRECT, имеет значение 1, если возвращаемое изображение
'является гласной буквой, и 0 в противном случае
1070 '(Детали этой подпрограммы не важны и не приводятся здесь).
1900 RETURN

2000 'ПОДПРОГРАММА ВЫЧИСЛЕНИЯ ОШИБКИ С текущими ВЕСАМИ
2010 'Переменные входа программы : X1[ ], X2[ ], WI[ , ], WH[ ], CORRECT'
2020 'Переменная выхода программы: ELET'
2030 '
2040 ' 'НАЙТИ ЗНАЧЕНИЯ СКРЫТЫХ УЗЛОВ X2[ ] '
2050 FOR H% = 1 TO 10 'цикл по каждому скрытому узлу'
2060 ACC = 0 'очистить аккумулятор
2070 FOR I% = 1 TO 101 'взвесить и просуммировать каждый входной узел
2080 ACC = ACC + X1[I%] * WH[H%,I%]
2090 NEXT I%
2100 X2[H%] = 1 / (1 + EXP(-ACC) ) 'пропустить суммированное значение
'через сигмоид
2110 NEXT H%
2120 '
2130 ' 'НАЙТИ ВЫХОДНОЕ ЗНАЧЕНИЕ: X3
2140 ACC = 0 'очистить аккумулятор
2150 FOR H% = 1 TO 10 'взвесить и просуммировать каждый скрытый узел
2160 ACC = ACC + X2[H%] * WO[H%]
2170 NEXT H%
2180 X3 = 1 / (1 + EXP(-ACC) ) 'пропустить суммированное значение через сигмоид
2190 '
2200 ' НАЙТИ ОШИБКУ ДЛЯ ЭТОЙ БУКВЫ, ELET
2210 ELET = (CORRECT - X3) 'найти ошибку
2220 IF CORRECT = 1 THEN ELET = ELET*5 'задать дополнительный весовой
'коэффициент для цели
2230 '
2240 RETURN

3000 'ПОДПРОГРАММА НАХОЖДЕНИЯ НОВЫХ ВЕСОВ
3010 Переменные входа программы: X1[ ], X2[ ], X3, WI[ , ], WH[ ], ELET, MU
3020 'Переменные выхода программы: WI[ , ], WH[ ]
3030 '
3040 ' 'НАЙТИ НОВЫЕ ВЕСА ДЛЯ СКРЫТЫХ УЗЛОВ
3050 FOR H% = 1 TO 10
3060 FOR I% = 1 TO 101
3070 SLOPEO = X3 * (1 - X3)
3080 SLOPEH = X2(H%) * (1 - X2[H%])
3090 DX3DW = X1[I%] * SLOPEH * WO[H%] * SLOPEO
3100 WH[H%,I%] = WH[H%,I%] + DX3DW * ELET * MU
3110 NEXT I%
3120 NEXT H%
3130 '
3140 ' 'НАЙТИ НОВЫЕ ВЕСА ДЛЯ ВЫХОДНЫХ УЗЛОВ
3150 FOR H% = 1 TO 10
3160 SLOPEO = X3 * (1 - X3)
3170 DX3DW = X2[H%] * SLOPEO
3180 WO[H%] = WO[H%] + DX3DW * ELET * MU
3190 NEXT H%
3200 '
3210 RETURN