Рис.26 Индикация зажигаемого нейрона
Пример: Нейросетевой преобразователь последовательного кода в параллельный
В книге «Конструирование искусственных нейронных ансамблей (ИНА).pdf» [38] был представлен преобразователь последовательного кода в параллельный, состоявший из трёх групп нейронов: входных, выходных и нейронов задержки. В состав преобразователя был включён нейрон In1, который практически не использовался. Назначение и принцип действия этиго нейрона было обещано рассмотреть при описании скриптов пакета MemBrain.
Основное назначение этого нейрона (In1): управление работой нейроконструкции.
Для демонстрации управляющих функций нейрона восстанавливаем в основном окне MemBrain преобразователь последовательного кода в параллельный с помощью программы «СдРег. mbn» [10]:
Рис.27 Схема преобразователя последовательного кода в параллельный
Анализ созданной нейросети показывает:
Рис.28 Характеристики нейросети
всего нейронов 15. Из них: 2 входных, 7 выходных, 6 скрытых нейронов (1 DLY 2 1 DLY 7) в 6 скрытых слоях (H1 H6).
Для демонстрации работы преобразователя кодов было предусмотрено два файла.
В первом файле (SdvReg0.csv) нейрон In1 всегда равен 0. По In2 поступают последовательные сигналы, накапливающиеся в параллельные группы по 7 сигналов.
Рис.29 Основной файл для проверки преобразователя кодов
Используем этот файл для обучения:
Рис.30 Ход обучения преобразователя кодов
Ошибка обучения имеет достаточно малую величину и показывает, что нейросеть постепенно приблизилась к правильному результату (это видно по голубой линии. на Pattern Error Viewer):
Рис.31 Процесс обучения нейросети
После 6 точки голубая линия совпадает с Target. По клавише Export Graph выводится исполненный пример после обучения:
Рис.32 Максимальное количество колонок
Здесь содержится предупреждение о структуре выводимой информации.
Содержимое файла «SdvReg00.csv», полученного по клавише Export Graph:
Рис.33 Правильный результат после обучения.
Файл SdvReg2.csv имеет другое строение:
Нейрон In1 может исполнять разные функции: он может сигнализировать момент окончания превращения последовательного кода в параллельный и включать перепись сформированного параллельного кода с выходных нейронов в ячейку памяти для накопления. Если In1 отмечает момент, когда закончено формирование одной строки параллельного кода, то по сигналу In1=1 полученный код нужно считать с выходных нейронов нейросети. При исполнении такого действия нужно будет сформировать и вывести только одно число 1111000 (см. рисунок 34).
Но может быть In1=1 и сигналом, запускающим сохранение в памяти в виде csv-кода исполняемого (текущего) фрагмента обучающей выборки MemBrain. Тогда выводиться должно будет не одно число, а ряд чисел, составляющих текущую обучающую последовательность. Разница в программах, которые будут работать по зажиганию нейрона In1.
In2 фиксирует символы поступающего последовательного кода.
Для демонстрации процесса зажигания управляющего нейрона подготовлен новый файл: 090720.csv:
Рис.34 Файл, вызывающий зажигание нейрона In1
После загрузки этого файла выведем на экран одновременно часть нейросети с нейроном In1 и часть редактора уроков Lesson Editor, содержащую нейрон In1. До тех пор, пока In1 = 0, нейрон не зажигается (это видно по выходному порту этого нейрона. Одновременно в редакторе уроков видно, что нейрон In1=0):
Рис.35 Нейрон In1 не зажжён
Как только In1 стал 1, нейрон зажёгся и начал работать
Рис.36 Нейрон In1 зажёгся
В нашем случае по команде из программы «230620.as» выводится весь последний пример, а не одна строка. Нейрон In1 = 1 будем использовать как команду считать в csv-файл содержимое выполненного примера. Считывание это должно производиться по команде ExportLessonRaw раздела LessonEditor, которая записана в скрипте «230620.as».
Программа «230620.as» :
void main ()
{
SelectLesson (3);
ExportLessonRaw(C:\ProgramData\MemBrain\230620-3.as»);