Технология создания скрипта

Большое значение для нейроконструктора имеет возможность автоматизировать процесс конструирования. В MemBrain для этого предусмотрена возможность использования скриптового языка. Скриптовый язык позволяет записывать в виде текста (стилизованных английских предложений) последовательность команд нейропакета. Эти же команды можно вводить вручную, используя главное меню пакета.

Например, при подготовке нейропакета к работе необходимо произвести его настройку, которая состоит из нескольких часто повторяющихся команд (рассмотрим содержимое файла «Decoder4To16_.as»):

// Отрегулируйте меню вид (view)

ViewSetting (BLACK_BG, true);

ViewSetting (SHOW_GRID, false);

ViewSetting (UPDATE_TEACH, true);

ViewSetting (UPDATE_THINK, true);

ViewSetting (SHOW_FIRE, false);

ViewSetting (SHOW_ACT_SPIKES, false);

ViewSetting (SHOW_LINKS, true);

/*Такая настройка предусматривает вывод на экран всех чертежей на чёрном фоне. Замена в первой строке true на false позволяет значительно повысить восприимчивость графики.

Во второй строке запрещается использовать в чертежах сетку.

В третьй и четвёртой строках разрешается использовать коррекцию в процессе обучения и исполнения нейросетей.

Следующие две строки запрещают использование таких конструкций, как FIRE и SPIKES.

Последняя строка разрешает высвечивать связи на чертежах. Результат такой настройки можно посмотреть в меню View:

*/


Рис.1 Настройки в меню View


//Открыть на экране нейросеть позволяет команда:

OpenNet («Decoder4To16.mbn»);

//в команде указывается название файла, в котором была сохранена нейросеть.


Рис.2 Нейросеть из файла «Decoder4To16.mbn»


//После того, как сеть будет прорисована на экране, необходимо произвести

//рандомизацию всех весов ссылок и порогов активации:

RandomizeNet (); // Или на графике:


Рис.3 Клавиша рандомизации нейросети


//

//Следующие команды продолжают подготовку нейропакета:

ResetThinkSteps (); // Сброс счетчика шагов (уроков), или в окне:


Рис.4 Сброс счетчика шагов (уроков)


//

SetLessonCount (1); // Установить количество уроков (1)

SetLessonCount (4); // в результате чего появится:


Рис.5 Установка «Number of Lessons»


// Здесь указано, что ожидается 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.

Скриптовый файл может не содержать пояснений – самое важное – это команды. Редкие пояснения даются в виде комментариев.

СкороКнижный режим