Запуск инференса регрессионной модели

26 декабря 2025

ID 274516

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

Чтобы запустить инференс регрессионной модели:

  1. Подключите объединительную плату с нейроморфным процессором Алтай-2 к компьютеру с помощью интерфейсов PCI-E или USB.
  2. В директории вашего проекта создайте файл программы с расширением .py, в котором будет реализован инференс модели.
  3. В файле программы импортируйте модули библиотек, необходимые для инференса модели

    Если требуется, определите псевдонимы с помощью оператора as.

    Пример подключения объектов для инференса модели:

    Python

    from knp_ann2snn.altainn import TernaryDense

    from knp_ann2snn.altainn import heaviside

    from knp_ann2snn.altainn import Clip

    from knp_ann2snn.python_altai import Altai

    from keras.models import load_model

    import matplotlib.pyplot as plt

    from tqdm import tqdm

    import numpy as np

  4. Создайте синусоиду и подготовьте данные для инференса.

    Пример подготовки данных:

    Python

    # Определение количества элементов в наборе данных.

    N = 4000

    # Определение индекса, до которого элементы набора данных будут использования для обучения.

    train_idx = 3000

    # Определение индекса, до которого элементы, начиная с индекса train_idx, образуют тестовые данные.

    test_idx = 4000

    # Определение количества элементов в пакете (англ. batch).

    elements_in_batch = 10

    # Определение размерности выхода кодирующего блока.

    encoder_output_shape = 25

    # Определение размерности выхода нейронной сети.

    snn_output_shape = 35

    # Определение размерности выхода декодирующего блока.

    decoder_output_shape = 1

    # Создание синусоиды.

    x = np.arange(N)

    arr = np.sin(x)

    # Формирование тестовых данных на основе elements_in_batch значений.

    test_range = range(train_idx, test_idx - elements_in_batch - 1)

    x_test = np.array([arr[i : i + elements_in_batch] for i in test_range])

    y_test = np.array([[arr[i + elements_in_batch + 1]] for i in test_range])

  5. Загрузите модель, кодирующий и декодирующий блок.

    Пример загрузки модели, кодирующего и декодирующего блока:

    Python

    altai = Altai()

    # Укажите путь к конфигурационному файлу для загрузки на нейроморфный процессор

    # и компонент для исполнения нейронной сети:

    # hw – для инференса нейронной сети на аппаратном процессоре Алтай-2

    # gm – для инференса нейронной сети на программном эмуляторе.

    altai.build("sin.json","gm")

    encoder = load_model(

    "encoder_sin.keras",

    custom_objects={

    "heaviside_mod": heaviside

    }

    )

    snn_model = load_model(

    "snn_sin.keras",

    custom_objects={

    "TernaryDense": TernaryDense,

    "heaviside_mod": heaviside,

    "Clip": Clip

    }

    )

    decoder = load_model("decoder_sin.keras")

  6. Запустите инференс.

    Пример запуска инференса:

    Python

    predict = np.zeros(len(x_test))

    # Запуск цикла предсказаний.

    for i in tqdm(range(len(x_test))):

    # Предсказание кодирующего блока.

    encoded = encoder.predict_on_batch(x_test[i:i+1])

    # Предсказание нейронной сети.

    altai.prepare_spikes(encoded)

    altai.start_ticks(1)

    spikes_idx = altai.get_spikes()

    spikes_idx = spikes_idx[spikes_idx!=-2147483647]

    spikes = np.zeros(snn_output_shape)

    spikes[spikes_idx] = 1

    # Предсказание декодирующего блока.

    decoded = decoder.predict_on_batch(spikes.reshape(1,-1))

    # Обновление массива предсказаний.

    predict[i] = decoded

    predict = predict.reshape(len(predict))

    y_test = y_test.reshape(len(y_test))

  7. Оцените результаты инференса. Для этого вы можете сравнить значения синусоиды с предсказаниями модели на графике.

    Пример построения графика для оценки результатов инференса:

    Python

    # Построение графиков.

    plt.plot(predict, "b")

    plt.plot(y_test, "r", alpha=0.5)

    plt.savefig("sin_inference.png")

    plt.show()

  8. Запустите программу.

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