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

26 декабря 2025

ID 250649

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

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

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

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

    Пример определения BLIFAT-нейрона:

    neuron-trait-library/include/knp/neuron-traits/blifat.h

    #include "type_traits.h"

    namespace knp::neuron_traits

    {

    struct BLIFATNeuron;

    template <>

    struct default_values<BLIFATNeuron>

    {

    // Указание количества шагов нейронной сети с шага последнего спайка по умолчанию.

    constexpr static std::size_t n_time_steps_since_last_firing_ = std::numeric_limits<std::size_t>::infinity();

    // Указание значения по умолчанию, к которому стремится мембранный потенциал для

    // тормозных синапсов, основанных на проводимости.

    constexpr static double reverse_inhibitory_potential = -0.3;

    // Указание значения по умолчанию, к которому стремится мембранный потенциал для

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

    constexpr static double min_potential = -1.0e9;

    // ...

    };

    template <>

    struct neuron_parameters<BLIFATNeuron>

    {

    // Указание количества шагов нейронной сети с шага последнего спайка.

    std::size_t n_time_steps_since_last_firing_ = default_values<BLIFATNeuron>::n_time_steps_since_last_firing_;

    // Указание порогового значения мембранного потенциала нейрона.

    double activation_threshold_ = default_values<BLIFATNeuron>::activation_threshold_;

    // Указание динамического порогового значения мембранного потенциала, после достижения

    // которого нейрон генерирует спайк.

    double dynamic_threshold_ = default_values<BLIFATNeuron>::dynamic_threshold_;

    // ...

    };

    } // namespace knp::neuron_traits

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

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

    neuron-trait-library/include/knp/neuron-traits/all_traits.h

    #include "blifat.h"

    namespace knp::neuron_traits

    {

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

    #define ALL_NEURONS BLIFATNeuron

    // ...

    } // namespace knp::neuron_traits

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

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

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