Тернарные слои пакета ANN2SNN

В пакете ANN2SNN поддерживаются следующие тернарные слои:

Классы пакета ANN2SNN, реализующие тернарные слои.

Класс

Описание

TernaryDense

Реализует полносвязный слой, аналогом которого является слой Dense библиотеки Keras. При работе с полносвязным слоем рекомендуется указать количество нейронов слоя (параметр units) равным или меньше 512. Если у нейрона слоя более 512 связей, то такой нейрон будет представлен в виде нескольких нейронов на нейроморфном процессоре Алтай-1.

TernaryConv1D

Реализует одномерный сверточный слой, аналогом которого является слой Conv1D библиотеки Keras. При работе с этим слоем рекомендуется установить следующие ограничения:

  • Размер ядра (параметр kernel_size) – не более 20.
  • Количество фильтров (параметр filters) – не более 64.

TernaryConv2D

Реализует двумерный сверточный слой, аналогом которого является слой Conv2D библиотеки Keras. При работе с этим слоем рекомендуется следовать следующим ограничениям:

  • Не использовать ядра большого размера (параметр kernel_size). Оптимальными считаются ядра с размерами [2, 2], [3, 3] и [4, 4].
  • Ограничить размер входных изображений до 128x128 и число каналов до 10.
  • Ограничить количество фильтров (параметр filters) до 32.

TernaryLocallyConnected1D

Реализует одномерный локально-связный слой, аналогом которого является слой LocallyConnected1D библиотеки Keras. При работе с этим слоем рекомендуется установить следующие ограничения:

  • Размер ядра (параметр kernel_size) – не более 20.
  • Количество фильтров (параметр filters) – не более 64.

TernaryLocallyConnected2D

Реализует двумерный локально-связный слой, аналогом которого является слой LocallyConnected2D библиотеки Keras. При работе с этим слоем рекомендуется следовать следующим ограничениям:

  • Не использовать ядра большого размера (параметр kernel_size). Оптимальными считаются ядра с размерами [2, 2], [3, 3] и [4, 4].
  • Ограничить размер входных изображений до 128x128 и число каналов до 10.
  • Ограничить количество фильтров (параметр filters) до 32.

TernaryDepthwiseConv1D

Реализует одномерный сверточный слой, аналогом которого является слой DepthwiseConv1D библиотеки Keras. При работе с этим слоем рекомендуется установить следующие ограничения:

  • Размер ядра (параметр kernel_size) – не более 20.
  • Количество фильтров (параметр filters) – не более 64.

TernaryDepthwiseConv2D

Реализует двумерный сверточный слой, аналогом которого является слой DepthwiseConv2D библиотеки Keras. При работе с этим слоем рекомендуется следовать следующим ограничениям:

  • Не использовать ядра большого размера (параметр kernel_size). Оптимальными считаются ядра с размерами [2, 2], [3, 3] и [4, 4].
  • Ограничить размер входных изображений до 128x128 и число каналов до 10.
  • Ограничить количество фильтров (параметр filters) до 32.

MaxPool1D

Поддерживается стандартная реализация слоя MaxPool1D библиотеки Keras. Для уменьшения количества оборудования нейроморфного процессора, необходимого для исполнения нейронной сети, рекомендуется отказаться от использования этого слоя путем увеличения параметра stride в сверточных слоях.

MaxPool2D

Поддерживается стандартная реализация слоя MaxPool2D библиотеки Keras. Для уменьшения количества оборудования нейроморфного процессора, необходимого для исполнения нейронной сети, рекомендуется отказаться от использования этого слоя путем увеличения параметра stride в сверточных слоях.

BatchNormalization

Поддерживается стандартная реализация нормирующего слоя BatchNormalization библиотеки Keras. Параметр масштабирования scale не поддерживается и должен быть определен как false.

Слой BatchNormalization должен идти после слоя Activation.

InputLayer

Поддерживается стандартная реализация входного слоя InputLayer библиотеки Keras. Входные данные должны иметь бинарный тип.

Flatten

Поддерживается стандартная реализация слоя Flatten библиотеки Keras.

Reshape

Поддерживается стандартная реализация слоя Reshape библиотеки Keras.

Concatenate

Поддерживается стандартная реализация слоя Concatenate библиотеки Keras.

Для размещения нейронной сети на нейроморфном процессоре Алтай-1 в качестве функции активации каждого слоя необходимо указать функцию heaviside. При обучении нейронной сети методом градиентного спуска используется кусочно-линейная аппроксимация сигмоидной функции (англ. hard sigmoid function).

В начало