Запуск инференса нейронной сети из тернарных слоев для классификации изображений

26 декабря 2025

ID 273538

Этот раздел содержит инструкции по запуску инференса нейронной сети для классификации изображений на нейроморфном процессоре Алтай-2. Нейронную сеть требуется предварительно создать с помощью тернарных слоев пакета ANN2SNN, обучить и разместить для исполнения на нейроморфном процессоре.

Чтобы запустить инференс нейронной сети из тернарных слоев для классификации изображений:

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

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

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

    Python

    from knp_ann2snn import Altai

    import tensorflow as tf

    import numpy as np

    from tqdm import tqdm

  4. Создайте функцию для подсчета точности модели.

    Пример функции для подсчета точности модели:

    Python

    def calculate_accuracy(array1,array2):

    correct_predictions = sum(a == b for a, b in zip(array1,array2))

    accuracy = correct_predictions / len(array1)

    return accuracy

  5. Подготовьте данные для инференса.

    Пример подготовки данных MNIST для инференса:

    Python

    # Загрузка модели.

    altai = Altai()

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

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

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

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

    # Если функция активации на последнем слое - softmax, необходимо ее указать.

    altai.build("mnist.json", "gm", activation="softmax")

    # Загрузка данных MNIST для инференса.

    (_, _), (x_test, y_test) = tf.keras.datasets.mnist.load_data()

    # Нормализация входных данных.

    x_test = x_test / 255

    # Приведение входных данных в бинарный вид.

    x_test[x_test > 0.5] = 1

    x_test[x_test <= 0.5] = 0

    x_test = x_test.reshape(x_test.shape + (1,))

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

    Пример инференса:

    Python

    pred = []

    for i in tqdm(range(x_test.shape[0])):

    # Преобразование входного вектора в спайки.

    altai.prepare_spikes(x_test[i])

    # Запуск генерации сигнала тик.

    altai.start_ticks(2)

    # Получение спайков от нейронной сети.

    spikes_idx = altai.get_spikes()

    # Берем -1 индекс из-за того, что интересует результат последнего тика.

    predicted_class = spikes_idx[-1]

    pred.append(predicted_class)

    # Оценка точности нейронной сети.

    print("Accuracy: ", calculate_accuracy(y_test, pred)* 100,"%")

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

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