Добавление нового типа синапса

26 декабря 2025

ID 250824

На текущий момент Kaspersky Neuromorphic Platform поддерживает наборы свойств и типизацию проекций по моделям синапсов DeltaSynapse, AdditiveSTDPDeltaSynapse и SynapticResourceSTDPDeltaSynapse. Если требуется, вы можете добавить в библиотеку synapse_traits новый тип синапса.

Вы можете использовать эту инструкцию при работе с исходным кодом платформы.

Чтобы добавить новый тип синапса:

  1. Из рабочей директории с исходным кодом платформы перейдите в директорию synapse-traits-library/include/knp/synapse-traits/ и создайте заголовочный файл для нового типа синапса.
  2. В созданном заголовочном файле определите структуру типа синапса и его шаблонные свойства (например, default_values, synapse_parameters).

    Пример определения дельта-синапса:

    synapse-traits-library/include/knp/synapse-traits/delta.h

    #include "type_traits.h"

    namespace knp::synapse_traits

    {

    struct DeltaSynapse;

    template <>

    struct default_values<DeltaSynapse>

    {

    // Указание значения веса синапса по умолчанию.

    constexpr static float weight_ = 0.0F;

    // Указание значения задержки синапса по умолчанию.

    constexpr static uint32_t delay_ = 1;

    // Указание типа синапса по умолчанию.

    constexpr static OutputType output_type_ = OutputType::EXCITATORY;

    };

    template <>

    struct synapse_parameters<DeltaSynapse>

    {

    // Указание атрибутов синапса.

    synapse_parameters() : weight_(0.0F), delay_(1), output_type_(knp::synapse_traits::OutputType::EXCITATORY) {}

    synapse_parameters(float weight, uint32_t delay, knp::synapse_traits::OutputType type)

    : weight_(weight), delay_(delay), output_type_(type)

    // Вес синапса.

    float weight_;

    // Задержка синапса.

    std::size_t delay_;

    // Тип синапса на выходе.

    knp::synapse_traits::OutputType output_type_;

    };

    } // namespace knp::synapse_traits

  3. Добавьте созданный тип синапса в список синапсов, определенных в заголовочном файле synapse-traits-library/include/knp/synapse-traits/all_traits.h.

    Пример добавления дельта-синапса в список синапсов:

    synapse-traits-library/include/knp/synapse-traits/all_traits.h

    #include "delta.h"

    namespace knp::synapse_traits

    {

    // Список типов синапсов, разделенных запятыми.

    #define ALL_SYNAPSES DeltaSynapse

    // ...

    } // namespace knp::neuron_traits

  4. Реализуйте в нужных бэкендах перегруженный метод запуска.

    Например, для бэкенда CPU реализуйте перегруженный метод запуска расчета проекций.

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