Фреймворк для C++
Фреймворк для C++ предназначен для упрощения процессов создания импульсных нейронных сетей и их обучения. Полученные в результате нейронные сети могут исполняться на центральном процессоре, нейроморфном процессоре Алтай-2 или его программном эмуляторе.
Фреймворк для C++ представляет собой независимые блоки, которые обеспечивают управление бэкендами, преобразуют представление нейронной сети в разные форматы и выбирают оптимальную нейронную сеть для запуска. Во фреймворке для C++ реализованы функции, не относящиеся непосредственно к обучению и исполнению импульсных нейронных сетей.
С помощью фреймворка для C++ Kaspersky Neuromorphic Platform вы можете выполнять следующие задачи:
- Загружать структуру нейронной сети из внешних форматов.
- Динамически загружать различные бэкенды.
- Вводить и выводить данные нейронных сетей.
- Контролировать выполнение обучения и исполнения импульсных нейронных сетей.
- Реализовывать специальные алгоритмы.
Фреймворк для C++ реализован в пространстве имен framework. Таблица ниже содержит описание компонентов фреймворка для C++.
Компоненты фреймворка для C++
Компонент
|
Описание |
|
|---|---|---|
Пространство имен, которое содержит пространственные координаты нейрона. |
||
Пространство имен, которое предоставляет функциональность для обработки данных и обучения моделей классификации, а также для обработки изображений для задач классификации. |
||
Пространство имен, которое предоставляет функциональность для оценки качества работы модели классификации и записи результатов в удобном формате. |
||
|
Пространство имен, которое содержит пространства имен |
|
|
Пространство имен, которое содержит интерфейсы для доступа к каналу ввода и преобразователю данных, поступающих из внешней среды. |
|
|
Пространство имен, которое содержит интерфейсы для доступа к каналам вывода. |
|
|
Пространство имен, которое содержит функции загрузки и сохранения сообщений |
|
Пространство имен, которое содержит интерфейсы к обработчикам сообщений. |
||
Пространство имен, которое содержит интерфейс к наблюдателю и функции для мониторинга работы модели. |
||
Пространство имен, которое содержит функции и функторы для нормализации параметров синапсов и нейронов в нейронных сетях. |
||
Пространство имен, которое содержит функции для генерации популяций нейронов. |
||
Пространство имен, которое содержит функции для генерации проекций синапсов и генерации синапсов со значениями атрибутов по умолчанию. |
||
Пространство имен, которое содержит функции загрузки и сохранения нейронной сети в формате |
||
Пространство имен, которое содержит функцию для получения актуального состояния нейронной сети с бэкенда. |
||
Класс, реализующий загрузчик динамических библиотек. |
||
Класс, реализующий модель. |
||
Класс, реализующий исполнитель модели. |
||
Класс, реализующий загрузчик модели. |
||
Класс, реализующий объект нейронной сети. |
||
На рисунке ниже представлена схема взаимодействия компонентов фреймворка для C++.
В Kaspersky Neuromorphic Platform нейронная сеть Network может быть загружена в формате SONATA или создана вручную. Созданную нейронную сеть вы можете наполнить проекциями синапсов Projection и популяциями нейронов Population. Вы можете сгенерировать проекции и популяции с помощью функций пространств имен projection и population соответственно. При необходимости вы можете нормализовать значения атрибутов нейронов популяций и синапсов проекций с помощью функций пространства имен normalization.
Вы можете нарисовать нейронную сеть Network с помощью набора координат (произвольных или задаваемых пользователем) из пространства имен coordinates. Состояние нейронной сети Network может быть актуализировано с бэкенда Backend с помощью функции пространства имен synchronization.
Нейронная сеть Network, а также контейнеры канала ввода InputChannel и канала вывода OutputChannel, реализованных в пространствах имен input и output соответственно, хранятся в модели Model. Каналы ввода и вывода используются для преобразования данных, поступающих в проекции нейронной сети, а также для преобразования сообщений популяций нейронной сети в один из предусмотренных форматов данных.
Вы можете исполнить модель Model с помощью метода исполнения моделей ModelExecutor::start(). Исполнитель моделей ModelExecutor также содержит наблюдателя MessageObserver из пространства имен monitoring, обработчика сообщений из пространства имен modifier и загрузчик моделей ModelLoader, с помощью методов которого вы можете загружать модель на конкретный экземпляр бэкенда. Для обработки данных модели вы можете использовать функции пространства имен data_processing. Для исполнения модели на экземпляре бэкенда исполнителю моделей ModelExecutor передается указатель на экземпляр бэкенда, полученный от загрузчика бэкендов BackendLoader. После исполнения модели вы можете оценить качество работы модели с помощью функций пространства имен inference_evaluation.
Схема взаимодействия компонентов фреймворка для C++
