Александр Кириченко - Нейросетевое программирование. Инструментарий нейрокомпьютинга
- Название:Нейросетевое программирование. Инструментарий нейрокомпьютинга
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:9785005163271
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Александр Кириченко - Нейросетевое программирование. Инструментарий нейрокомпьютинга краткое содержание
Нейросетевое программирование. Инструментарий нейрокомпьютинга - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
// Здесь указано, что ожидается 4 урока
/*В данном примере предусмотрено 4 урока:
– training lesson (исходный обучающий урок) – исходные файлы mbn & training lesson. mbl
– validate lesson (исходный контролирующий урок) – исходный файл validate lesson. mbl
– активация выходных нейронов (реакция сети на тренировочные данные 1 к уроку №3) – вывод в файл TrainResult. csv
– результаты урока 2 на данные validate lesson (2 к уроку №3) – вывод в файл ValidateResult. csv
их адреса высвечиваются на экране после входа в Lesson Editor —> Lesson Files —> Урок №1. В скрипт – программе это записывается в виде крманды:
*/
SelectLesson (1); //начинается с меню Lesson Editor:

Рис.6 Загрузка урока 1
//
//Выполняется загрузка необходимых для работы данных, настройка учителя и обучение:
LoadLesson («Decoder4To16_Training. mbl»); // Загрузите обучающий урок
//Чтобы полностью просмотреть сеть (последней командой она была закрыта редактором уроков), уберите с экрана редактор урока, чтобы полностью стала видна сеть.
ShowLessonEditor (false);
//Установите учителя, который будет использоваться. Используйте имя учителя, который вы хотите установить в качестве активного.
SelectTeacher («RPROP»); // Используйте учителя с именем «RPROP»
//Настройте учителя (Adjust the teacher) – настройку можно произвести через окно //Teacher Manager:

Рис.7 Настройка учителя
//
//Или с помощью команл:
TeacherSetting (LEARNRATE, 0.1); // Скорость обучения
TeacherSetting (TARGET_ERR, 0.3); // Установка допустимой целевой ошибки
TeacherSetting (LESSON_REPS, 1); // Повторение урока за шаг обучения
TeacherSetting (PATTERN_REPS, 1); // Повторение паттернов за шаг обучения
//Определите метод выбора шаблона:
TeacherSetting (PATTERN_SELECT, RAND_ORDER);
SetTeachSpeed (0); // Установка максимальной скорости обучения
//и так далее
//Запустите просмотрщик ошибок
ShowErrorViewer (true);
//и уберите его с экрана
ResetErrorViewer ();
//Начните обучение и дождитесь остановки после достижения целевой ошибки
StartTeaching ();
SleepExec (); // Ожидание окончания обучения
//Снова скрыть средство просмотра ошибок
ShowErrorViewer (false);
//Сбросить счетчик шагов (уроков)
ResetThinkSteps ();
//Теперь подготовьте урок №3, чтобы записать результаты работы сети при выполнении урока №1.
//Сохраните значения активации выходных нейронов
SetRecordingType (RT_ACT);
//Включите запись данных на занятие №3
StartRecording (3);
//Скрыть редактор урока
ShowLessonEditor (false);
//Установка времени для записи целого урока во внутреннюю память MemBrainSetThinkSpeed (500); //500 мс между этапами обдумывания для анимации
//Запись реакции сети на тренировочные данные к уроку №3
ThinkLesson (); // Выполните каждый шаблон урока №1 (и запишите на №3)
SleepExec (); // Ожидание окончания выполнения урока
//Отключение записи после окончания урока (500 мс)
StopRecording ();
SelectLesson (2); // Загрузка урока №2 с данными для проверки
LoadLesson («Decoder4To16_Validate. mbl»);
//Этот урок только для ввода. Не нужны никакие выходные данные,
EnableLessonOutData (false);
//Запишите значения активации выходных нейронов
SetRecordingType (RT_ACT);
//Включить запись данных на урок №4
StartRecording (4);
ShowLessonEditor (false); // Скрыть редактор урока
ThinkLesson (); // Выполните каждый шаблон урока №2 (и запишите на №4)
SleepExec (); // Ожидание окончания обучения («Think on Lesson)
StopRecording (); // Отключить запись
//Теперь экспортируйте уроки №3 и 4 в CSV
SelectLesson (3);
ExportLessonRaw («Decoder4To16_TrainResult. csv»);
SelectLesson (4);
ExportLessonRaw («Decoder4To16_ValidateResult. csv»);
/*Раскомментируйте следующую строку, если вы хотите, чтобы MemBrain завершал работу после выполнения скрипта*/
// ExitMemBrain ();
/*Описанная здесь последовательность команд может быть представлена в виде скриптового файла с расширением. as – файла ("MemBrainScript1.as».
Для запуска скрипта в основном меню пакета набрать Scripting -> Execute Script:

Рис.8 Запуск скрипта
*/
В открывшемся окне выделить название скрипта:

Рис.9 Имя скрипта
После выполнения скрипта полученные результаты выведены на экран в том порядке, как они были указаны в скрипте:

Рис.10 Результат выполнения скрипта
Результатов много. Для их анализа необходимо рассмотреть содержание полученных файлов.
После загрузки сети первым вводился файл Decoder4To16_Training. mbl. Содержимое этого файла можно вывести из MemBrain в файл с расширением csv для дальнейшего просмотра на экране или для вывода на принтер. Номер выводимого из MemBrain файла нужно набрать клавишами Currently Edited (Training) Lesson. После этого активировать Raw CSV Files -> Export Current Lesson (Raw CSV…). В окне Export Lesson As (Raw CSV) … набрать имя создаваемого сsv файла и щёлкнуть по клавише «сохранить».
Необходимая для работы скрипта информация содержится в файлах:
Decoder4To16_Training. mbl
Decoder4To16_TrainResult. csv
Decoder4To16_Validate. mbl
Decoder4To16_ValidateResult. csv
Файлы с расширением mbl содержат двоичный код вводимых данных. Их ввод осуществляется через Lesson Editor:

Рис.11 Загрузка mbl-файла
Lesson Editor -> Lesson Files -> Load Current Lesson.
Скриптовый файл может не содержать пояснений – самое важное – это команды. Редкие пояснения даются в виде комментариев.
Для примера: скрипт таймера SecondsTimer.as
/* – — – — – — – — – — – — – — – — – — – — – — – — —
Этот пример демонстрирует, как функция сценария Now () может использоваться для поддержки произвольного числа таймеров с разрешением 1 с.
Чтобы использовать таймеры в вашем собственном скрипте, просто включите этот файл в ваш скрипт, используя директиву #include.
Затем создайте экземпляр класса «SecondsTimer’ для каждого необходимого вам таймера. Обратите внимание, что функции таймера содержат отладочный код, который печатает сообщения в окне трассировки MemBrain.
Вы можете удалить соответствующий код, если не хотите, чтобы какие-либо сообщения печатались функциями таймера.
– — – — – — – — – — – — – — – — – — – — – — – — – —
*/
/* Глобальная переменная для подсчета экземпляров класса. Используется только для генерации отладочных сообщений.
AngelScript пока не поддерживает статические члены класса. Вот почему это должна быть глобальная переменная.
*/
uint gSecondsTimerInstanceCount = 0;
class SecondsTimer
Читать дальшеИнтервал:
Закладка: