Фреймворк для C++ предназначен для создания импульсных нейронных сетей и их обучения методами синаптической пластичности. Полученные в результате нейронные сети могут исполняться на центральном процессоре, нейроморфном процессоре Алтай-1 или его программном эмуляторе.
Фреймворк для C++ представляет собой независимые блоки, которые обеспечивают управление бэкендами, преобразуют представление нейронной сети в разные форматы и выбирают оптимальную нейронную сеть для запуска. Во фреймворке для C++ реализованы функции, не относящиеся непосредственно к обучению и исполнению импульсных нейронных сетей.
С помощью фреймворка для C++ Kaspersky Neuromorphic Platform вы можете выполнять следующие задачи:
Фреймворк для C++ реализован в пространстве имен framework
. Таблица ниже содержит описание компонентов фреймворка для C++.
Компоненты фреймворка для C++
Компонент
|
Описание |
|
---|---|---|
Пространство имен, которое содержит пространственные координаты нейрона. |
||
|
Пространство имен, которое содержит пространства имен |
|
|
Пространство имен, которое содержит интерфейсы для доступа к каналу ввода и преобразователю данных, поступающих из внешней среды. |
|
|
Пространство имен, которое содержит интерфейсы для доступа к каналам вывода. |
|
|
Пространство имен, которое содержит функции загрузки и сохранения сообщений |
|
Пространство имен, которое содержит интерфейс к наблюдателю. |
||
Пространство имен, которое содержит функции для генерации популяций нейронов. |
||
Пространство имен, которое содержит функции для генерации проекций синапсов и генерации синапсов со значениями атрибутов по умолчанию. |
||
Пространство имен, которое содержит функции загрузки и сохранения нейронной сети в формате |
||
Пространство имен, которое содержит функцию для получения актуального состояния нейронной сети с бэкенда. |
||
Класс, реализующий загрузчик динамических библиотек. |
||
Класс, реализующий модель. |
||
Класс, реализующий исполнитель модели. |
||
Класс, реализующий загрузчик модели. |
||
Класс, реализующий объект нейронной сети. |
На рисунке ниже представлена схема взаимодействия компонентов фреймворка для C++.
В Kaspersky Neuromorphic Platform объект класса Network
может быть загружен с помощью функции пространства имен sonata
. Отображение объекта класса Network
также может быть задано с помощью набора координат (произвольных или задаваемых пользователем) из пространства имен coordinates
. Состояние объекта Network
может быть актуализировано с бэкенда Backend
с помощью функции пространства имен synchronization
.
Объект класса Network
, а также контейнеры каналов ввода и вывода, реализованных в пространствах имен input
и output
соответственно, хранятся в объекте класса Model
. Каналы ввода и вывода используются для преобразования данных, поступающих в проекции нейронной сети, а также для преобразования сообщений популяций нейронной сети в один из предусмотренных форматов данных. Сообщения SpikeMessage
поступают в каналы ввода и выгружаются из каналов вывода с помощью функций пространства имен storage
.
Вы можете исполнить объект класса Model
с помощью функции start()
объекта класса ModelExecutor
. Объект класса ModelExecutor
также содержит объект класса MessageObserver
из пространства имен monitoring
, который обрабатывает полученные сообщения в соответствии с заданной функцией, и объект класса ModelLoader
, с помощью функций которого вы можете загружать модель на конкретный экземпляр бэкенда. Для исполнения модели на экземпляре бэкенда объекту класса ModelExecutor
передается указатель на экземпляр бэкенда, полученный от объекта класса BackendLoader
.
Схема взаимодействия компонентов фреймворка для C++