Фреймворк для C++

Фреймворк для C++ предназначен для создания импульсных нейронных сетей и их обучения методами синаптической пластичности. Полученные в результате нейронные сети могут исполняться на центральном процессоре, нейроморфном процессоре Алтай-1 или его программном эмуляторе.

Фреймворк для C++ представляет собой независимые блоки, которые обеспечивают управление бэкендами, преобразуют представление нейронной сети в разные форматы и выбирают оптимальную нейронную сеть для запуска. Во фреймворке для C++ реализованы функции, не относящиеся непосредственно к обучению и исполнению импульсных нейронных сетей.

С помощью фреймворка для C++ Kaspersky Neuromorphic Platform вы можете выполнять следующие задачи:

Фреймворк для C++ реализован в пространстве имен framework. Таблица ниже содержит описание компонентов фреймворка для C++.

Компоненты фреймворка для C++

Компонент

 

Описание

coordinates

Пространство имен, которое содержит пространственные координаты нейрона.

io

Пространство имен, которое содержит пространства имен input, output и storage.

 

input

Пространство имен, которое содержит интерфейсы для доступа к каналу ввода и преобразователю данных, поступающих из внешней среды.

 

output

Пространство имен, которое содержит интерфейсы для доступа к каналам вывода.

 

storage

Пространство имен, которое содержит функции загрузки и сохранения сообщений SpikeMessage.

monitoring

Пространство имен, которое содержит интерфейс к наблюдателю.

population

Пространство имен, которое содержит функции для генерации популяций нейронов.

projection

Пространство имен, которое содержит функции для генерации проекций синапсов и генерации синапсов со значениями атрибутов по умолчанию.

sonata

Пространство имен, которое содержит функции загрузки и сохранения нейронной сети в формате SONATA.

synchronization

Пространство имен, которое содержит функцию для получения актуального состояния нейронной сети с бэкенда.

BackendLoader

Класс, реализующий загрузчик динамических библиотек.

Model

Класс, реализующий модель.

ModelExecutor

Класс, реализующий исполнитель модели.

ModelLoader

Класс, реализующий загрузчик модели.

Network

Класс, реализующий объект нейронной сети.

На рисунке ниже представлена схема взаимодействия компонентов фреймворка для 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++

В этом разделе

Пространство имен sonata

Пространство имен coordinates

Пространство имен synchronization

Пространство имен storage

Пространство имен population

Пространство имен projection

Пространство имен input

Пространство имен output

Пространство имен monitoring

Класс Network

Класс Model

Класс BackendLoader

Класс ModelLoader

Класс ModelExecutor

См. также

Пространство имен sonata

Архитектура Kaspersky Neuromorphic Platform

В начало