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

06 июня 2025

ID 235050

Фреймворк для 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++

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!