Нейроконструктор

Публикация № 1233974

Разработка - Системная интеграция - Интеграция

конфигурация нейронные сети Tensorflow Keras

Изучайте нейронные сети и экспериментируйте вместе с расширением конфигурации "Нейроконструктор". Навыки программирования не требуются.

Знакомство с Нейроконструктором.
Нейроконструктор – это конфигурация для учебы и экспериментов. С его помощью Вы сможете в легкой форме постичь азы работы с нейронными сетями. И это будет не теория, а, можно сказать, лабораторные работы. Навыков программирования не требуется.  Нейроконструктор представляет собой расширение конфигурации для платформы 8.3, т.е., при желании, его даже можно встраивать в свою ИБ.

Как работает нейроконструктор.
Нейроконструктор – не самодостаточное приложение, а комплекс программных средств. По большей части - это графический интерфейс пользователя.  Для того, чтобы все заработало должен быть установлен ряд программных продуктов. С установкой ПО, необходимого для полноценной работы нейроконструктора, вы можете ознакомиться в специальном видеоуроке (или более свежая версия) на моем канале. Это несложная задача для ИТ-шника или сисадмина. Дополнительное программное обеспечение, которое мы условно будем называть бэкендом, включает интерпретатор языка Питон и его расширение Tensorflow с надстройкой Keras, а также (опционально) компилятор языка Си с поддержкой вычислений при помощи графического процессора nVidia. Отсутствие графического процессора nVidia не критично, т.к. обучение нейронных сетей допустимо с использованием ЦП. При этом значительно упрощается установка, но сильно падает скорость вычислений.

Давайте теперь определимся с устройством Нейроконструктора.
Конфигурация Нейроконструктор включает в себя, в основном, набор справочников и перечислений, соответствующих понятиям Keras, а также программных текстов для преобразования объектов конфигурации Нейроконструктор в объекты Keras и наоборот. Надстройка Keras входит в состав Tensorflow и является высокоуровневой абстракцией для облегчения работы с нейронными сетями.
Схема работы Нейроконструктора показана на рисунке 1. Конфигурация с расширением «Нейроконструктор» (1) формирует код для интерпретатора Питон (2) и запускает его. Программа на Питоне загружает надстройку Keras (3), которая, в свою очередь преобразует объекты Keras в объекты Tensorflow и вызывает последнюю для выполнения расчетов. Tensorflow, при наличии видеокарты nVidia и установленном дополнительном программном обеспечении формирует код на языке Си++ и вызывает компилятор Си++ (4). Нейроконструктор ожидает окончания выполнения программы на Питоне, после чего обрабатывает результаты.
При отсутствии графического процессора пункт 4 исключается.

 
Рисунок 1. 1) 1С:Предприятие 8.3 с расширением «Нейроконструктор»; 2) Интерпретатор Питон; 3) Tensorflow+Keras; 4) C++ с поддержкой CUDA.

Описание конфигурации
Кратко схему работу в Нейроконструкторе можно описать четырьмя действиями:

  • Подготовка данных;
  • Создание модели нейронной сети;
  • Обучение;
  • Проверка работы.

Подготовка данных.
Данные на вход нейронной сети подаются при помощи текстовых или двоичных файлов.  Последние хранятся в специальном формате Numpy (числовой Питон) расширения языка Питон и предназначены для работы с массивами. Создавать файлы в формате Numpy, а также производить некоторые операции над ними позволяет обработка «Преобразование данных» в меню «Сервис».  Преобразованию текстовых таблиц в формат Numpy служит обработка «Конструктор табличных данных».

Создание модели нейронной сети
Прежде чем начать обучение нейронной сети, необходимо создать её конфигурацию или модель. Модель нейронной сети – это понятие из надстройки Keras. Она содержит параметры слоев нейронной сети и их композицию (связи между собой) и хранится в файлах формата JSON (JavaScript Object Notation), поддержка которого, в том числе, присутствует в 1С:Предприятие. Для создания модели нейронной сети предназначен документ «Компоновка модели». Схема создания модели показана на рисунке 2. Пользователь заполняет табличную часть «Слои» из соответствующего справочника, который заранее подготовлен разработчиком и соответствует номенклатуре слоев Keras. Затем производится композиция слоев и выполняется компоновка, результатом которой является текст в формате JSON, который помещается в справочник «Модели».
 
Рисунок 2. Схема компоновки модели.

Порядок заполнения документа показан на рисунке 3. Откройте список документов «Компоновка модели» (3.1) и создайте новый документ. Присвойте имя новой модели (3.2). Заполните табличную часть «Слои»: нажмите добавить (3.3) и выберите тип слоя (3.4) из списка справочника «Слои» (3.5). Табличная часть параметров слоя заполняется автоматически в соответствии с выбранным слоем.

Рисунок 3. Компоновка модели - слои

Заполните необходимые параметры (3.6) в соответствии со спецификацией слоя, которую можно посмотреть в форме элемента справочника «Слои» (рис. 4).

Рисунок 4. Справочник "Слои"

По завершении добавления слоев (рис. 5) перейдите на закладку «Композиция» (5.1) и укажите порядок следования слоев. Добавьте строки в табличную часть "Композиция" (5.2) и заполните строки именами слоев(5.3). Нажмите кнопку «Скомпоновать модель» (5.4). Результатом компоновки будет элемент справочника «Модели», содержащий конфигурацию модели. Запишите новый элемент (5.5). В документ автоматически добавятся схема и сводка модели (5.6).

Рисунок 5. Компоновка модели - композиция

Закройте документ «Компоновка модели».

 

Обучение
Для обучения и тестирования нейронной сети служит документ «Обучение». Схема заполнения документа показана на рисунке 6. В документе указывается модель, для которой производится обучение, а также входные данные и параметры компиляции. Данные, как правило, берутся из вашей базы, но на начальном этапе обучения способ их подготовки не будет описан, т.к. для примеров будут использованы заранее подготовленные наборы данных из Keras. По нажатию кнопки «Обучить» будет вызван интерпретатор Питон, который выполнит обучение сети и вернет результат. 

 
Рисунок 6. Обучение нейронной сети.

Порядок заполнения документа показан на рисунке 7. Откройте список документов «Обучение» (7.1) и создайте новый документ.  Выберите модель из списка справочника (7.2). В табличную часть «Образцы» автоматически добавятся слои выбранной модели, на которые подаются входные данные. В табличной части «Цели» добавятся слои, на которые подаются метки классов для обучения (7.3). Далее необходимо указать файлы данных и заполнить параметры предварительного преобразования данных перед подачей на входные и выходные слои нейронной сети. Выберите один из 3 способов загрузки: массивы Numpy, текстовая таблица или обычный текст (7.4). Укажите путь к файлам данных (7.5). Для подготовки данных можно воспользоваться обработкой «Преобразование данных» из меню «Сервис» (7.6). Она позволяет создавать, просматривать и изменять двоичные файлы массивов Numpy (рис. 8). Заполните параметры преобразования входных данных образцов и целей (7.7).

Рисунок 7. Обучение - загрузка данных

Рисунок 8. Обработка "Преобразование данных"

Заполнение параметров показано на рисунке 9. Перейдите на закладку «Параметры» (9.1) и заполните обязательные поля.

  • параметры компиляции: Функция потерь, оптимизатор и показатель качества (9.2);
  • параметры обучения: Количество эпох, Размер пакета (9.3);
  • параметры сохранения и загрузки: Сохранять сеть после обучения (9.4).

Нажмите кнопку "Обучить" для запуска обучения (9.5).

Рисунок 9. Обучение - параметры

По завершении обучения будет открыта закладка «Диаграмма» (рисунок 10) на которой можно посмотреть графики результатов обучения, которые включают потери на этапах обучения, а также заданные в параметрах компиляции показатели качества. 

Рисунок 10. Обучение - диаграмма

Если во время обучения произойдет ошибка, то вместо закладки «Диаграмма» будет активирована закладка «Текст программы» (рисунок 11), и показаны сообщения об ошибках (11.1). В таблице действий справа будет выделено ближайшее действие, соответствующее строке с ошибкой (11.2).

Рисунок 11. Обучение - текст программы

 

Проверка работы
Обученная нейронная сеть сохраняется в специальном формате Hierarchical Data Format (Иерархический формат данных) на диске. После обучения можно проверить сеть на тестовых данных. Скопируйте документ, на котором проводилось обучение, укажите пути к файлам с контрольными данными на закладке "Загрузка данных" (рисунок 7). 

Проверка работы обученной сети показана на рисунке 12. Перейдите на закладку «Оценка и прогноз» (12.1).  Нажмите кнопку «Оценить» (12.2), чтобы посмотреть потери и показатели качества сети на контрольных данных. Результаты оценки отобразятся в таблице (12.3) и отображают значения потерь и показателей качества на одной эпохе. Чем меньше значение потери, тем лучше прогноз, данный сетью. Чтобы посмотреть, как сеть распознает новые для себя данные, нажмите кнопку «Прогноз» (12.4). В результате для каждого выходного слоя в таблице прогноза можно посмотреть к какому классу сеть отнесла входные данные (12.5).

Рисунок 12. Обучение - оценка и прогноз

 

Более подробно смотрите на моем канале на ютубе, где я постепенно буду выкладывать уроки по работе в Нейроконструкторе.

Скачать файлы

Наименование Файл Версия Размер
Нейроконструктор: для 8.3.14 (и выше)

.dt 4,55Mb
29.06.20
68
.dt 1.0.0 4,55Mb 68 Скачать бесплатно
Нейроконструктор: для 8.3.13

.dt 4,40Mb
08.05.20
22
.dt 1.0.0 4,40Mb 22 Скачать бесплатно

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Cmapnep 12 20.05.20 11:15 Сейчас в теме
Очень интересная разработка и отдельный плюс бы поставил за библиотеку слоев!
2. user1404129 73 20.05.20 20:25 Сейчас в теме
(1) Спасибо! Со слоями пока не все радужно. Все описания нужно перевести на русский язык (в понятиях конфигурации). Но сначала нужно доделать видеоуроки.
3. утюгчеловек 20 21.05.20 14:26 Сейчас в теме
Это большая работа, но не понятно зачем всё это тащить в 1С? Прохожий не станет в этом разбираться, а программисту проще использовать более привычные для этого домена родные питоновские или js-ные обвязки
kuza2000; +1 Ответить
4. user1404129 73 21.05.20 15:10 Сейчас в теме
(3) Ну вообще-то программист - не единственный, на кого нацелена данная конфигурация. В идеале, конечно, чтобы получился пользовательский продукт, а программист привлекается уже для доработок. Нужен ли этот инструмент программисту? Смотря какому. Если ты знаешь только Питон, согласитесь, этого недостаточно для построения нейронных сетей. Опять-же программист будет выполнять подобного рода задачи с применением нейронных сетей разве что в качестве увлечения, т.к. кто ему будет вообще ставить задачу использовать нейронные сети? Среди начальников достаточно образованных людей, не знакомых с программированием. Вот они, ознакомившись с технологией, и могут поставить задачу программисту. А как он будет реализовывать уже зависит от его конкретно профессионального уровня. Хоть на Си++, который намного круче и js и Питона, но сложнее.
5. утюгчеловек 20 21.05.20 16:36 Сейчас в теме
(4)
В идеале, конечно, чтобы получился пользовательский продукт


Дискуссионно. Пользовательский продукт не ограничивается нейронной сетью. А обучение сети не ограничивается построением кривой обучения. Возможность стакать керасовские слои (кстати только последовательно) это скорее недостаток, чем достоинство.

Это хорошо, что ты (если можно на ты) написал сложный мультипарадигмальный продукт, но есть ощущение что учетны не все и не главные сценарии работы.

ИМХО, конечно

Мне кажется более полезным создать интерфейс для трекинга экспериментов, раз уж на то пошло. Но и то хз.
6. user1404129 73 21.05.20 18:58 Сейчас в теме
(5) Может и не ограничивается, все зависит от задач. В принципе, не проблема написать универсальную обработку, автоматизирующую процессы обучения или прогноза. Просто на это понадобится некоторое время. Композиция слоев основана не на модели sequential, а на модели functional api. Возможно она не настолько гибкая как Вам хотелось-бы, но позволяет решать широкий круг задач. Почему композиция слоев является недостатком? По-моему вполне себе наглядный инструмент для новичков. Конечно, лучше было бы сделать что-то типа графической схемы, но, к сожалению, подобных инструментов в 1С я не нашел, а сама графическая схема не предоставляет такой возможности.
Сценарии работы можно посмотреть в видеоуроках. Может ли конфигурация заменить язык Питон? Ну если бы обработки могли бы заменить программистов, то последних и не было бы. Сценарии всегда можно прописать, тем более что это даже не версия 1.0, а пока только 0.95.
7. user1404129 73 21.05.20 19:59 Сейчас в теме
(5) По поводу сценариев соглашусь. Нужно было дать возможность выбирать способ предварительной обработки выходных данных, а не жестко привязывать. Наверное, это лучше будет переделать.
8. dsdred 1437 26.05.20 08:59 Сейчас в теме
Спасибо автору.
Интересная вещица.
9. user1404129 73 26.05.20 12:46 Сейчас в теме
(8) Пожалуйста! Жду отзывов и предложений.
10. dance000 09.06.20 16:12 Сейчас в теме
А можете подсказать примерную предметную область для использования этого продукта?
Что в конечном итоге я смогу получить скармливая данные нейросети? Примерные продажи в разрезе товаров, или остатки на складах?
14. user1404129 73 09.06.20 16:48 Сейчас в теме
(10) Предметную область ещё надо делать. Примерные продажи можно сделать с использованием рекуррентых сетей. Только дружелюбный интерфейс для этого нужно сделать. А это большие временные затраты на разработку. Я ещё даже первую версию не выпустил и видео уроки не закончил.
11. acanta 09.06.20 16:18 Сейчас в теме
Имхо, это может позволить изменить круг общения. Обычно, программист 1с понимает это как "предметную область", но предметная область это сфера знаний, а круг общения это список реальных людей, способных ответить на ваши вопросы в нужный для вас момент времени (включая социологические опросы).
12. dance000 09.06.20 16:19 Сейчас в теме
(11) Тоесть поделка ради поделки?
13. acanta 09.06.20 16:22 Сейчас в теме
(12) диплом в вузе можно сделать и использовать в дальнейшем, а можно купить на сайте готовых курсовых и дипломных работ.
Есть еще несколько вариантов получения и использования дипломных/курсовых работ, которые отечественной науке пока не известны.
Инфостарт это один из таких новых способов.
15. user1404129 73 09.06.20 17:18 Сейчас в теме
(11) В данном виде конфигурация хорошо подходит для изучения технологии. В будущем возможно появление отдельных обработок для специализированных задач.
16. hakerxp 2285 17.06.20 15:12 Сейчас в теме
Добрый день, автор! Сам недавно начал уделять время Keras + Python + Tensorflow.
В принципе, в 1С нет смысла все это делать, если знаешь Python. А без него в этом деле - никуда. Тем более системы машинного обучения и нейронных сетей требует от людей больше, чем просто уметь программировать в 1С. Следовательно, все равно нужно знание другого языка программирования и много-много времени на тестирование. А в 1С передать данные можно через COM с помощью специальных пакетов.

Да, времени потратил много, но, как по мне лучше написать программу на Python, подключиться к 1С или к СУБД и вытянуть нужные данные, обработать и назад вернуть. Будет и быстрее и правильнее - 1С пока не может тягаться по скорости и удобству с Numpy, Pandas и Matplotlib. .
17. user1404129 73 17.06.20 19:16 Сейчас в теме
(16) Добрый день! Удачи Вам в изучении технологии. Получается только у тех, кто что-то делает. Ждем воплощения Ваших творческих способностей в сфере ИИ. А пока можете начать с видеоуроков, они сделаны по книге "Глубокое обучение на Питон".
18. user1404129 73 18.06.20 00:02 Сейчас в теме
(16) Кстати, примером обмена с Питоном через COM не поделитесь?
Оставьте свое сообщение

См. также

Файл тестов для xUnitFor1C: тестирование проведения документов

Тестирование и исправление Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

Тестирование проведения документов. Проверяется, что: а) документ проводится; б) движения документа после перепроведения не изменились.

30.06.2020    2122    0    q_i    16    

Загрузка, редактирование и установка цветовых схем (раскраски кода) в Конфигуратор и EDT

Работа с интерфейсом Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

В современных IDE и текстовых редакторах есть удобная работа с цветовыми схемами: их можно загружать из файлов, выбирать из списка и сразу устанавливать в оболочку. К сожалению, в Конфигураторе и EDT цвета кода можно настроить только вручную. Этой разработкой хочу исправить эту проблему.

14.05.2020    4700    43    CyberCerber    29    

Универсальные инструменты 1С

Универсальные обработки Прочие инструменты разработчика Консоль запросов v8 1cv8.cf Бесплатно (free)

Свободно распространяемый набор универсальных обработок и отчетов в виде расширения для разработки и поддержки, которое работает во ВСЕХ видах клиентских приложений и во всех операционных системах, которые поддерживает платформа 1С:Предприятие, кроме мобильных. Консоль запросов - консоль отчетов - консоль кода - редактор объектов базы данных - удаление помеченных объектов - поиск и удаление дублей - редактор констант - консоль заданий - групповая обработка справочников и документов - динамический список - поиск ссылок на объект - регистрация изменений для обмена данными - структура хранения базы - консоль HTTP запросов-консоль вебсервисов- консоль сравнения данных- информация о лицензиях- загрузка из табличного документа-файловый менеджер-все функции- навигатор по конфигурации-конструктор регулярных выражений-Выгрузка загрузка XML с фильтрами

21.01.2020    23316    295    cprit    95