Архитектура CapsNet на MNIST

Здесь мы рассмотрим неглубокую сеть CapsNet, обсуждаемую в статье. Это продолжение к предыдущей части.

Начнем с ввода. Набор данных MNIST.

Теперь вход проходит через единственную свертку из 256 ядер 9x9. Изображение ниже обозначает следующее.

Теперь запускается основная капсула. Выход из первого conv1 — (20x20x256)

Он проходит через conv2, шаг которого равен 2, с тем же размером фильтра 256 ядер.

Идея здесь в первичной капсуле состоит в том, чтобы иметь наборы активации, которые обозначают ориентацию пальца и интенсивность вектора, который обозначает присутствие пальца. 8-мерный вектор для каждых 32 блоков, показанный на рисунке выше, является здесь капсулой.

Существует алгоритм маршрутизации, работающий для обучения весу. Следующий пост будет посвящен коду тензорного потока.

Теперь выход первичной капсулы соответствует Wij (упомянутому в предыдущем посте).

Вышеупомянутая вторичная капсула представляет собой матрицу 16x10. Где 16 - размер активности капсулы. Этот 16-D зафиксирует информацию о капсуле. 10 - это количество цифр.

Работа как первичной, так и вторичной (цифровой) капсулы зависит от алгоритма маршрутизации. Здесь давайте сосредоточимся на архитектуре.

Утрата при реконструкции

В документе упоминается потеря реконструкции. А вот потеря веса-возраст очень минимальна. Но для воспроизведения результатов давайте посмотрим и на это.

Когда вывод из цифровой капсулы маскируется по отношению к текущей метке изображения. Активированный вектор метки проходит через полностью соединительные слои 512, 1024, 784 (28x28), что приводит к исходному изображению.

Теперь мы вычисляем потери при реконструкции для вышеуказанной сети.

Потери

Теперь сбор потери из капсулы пальца и потеря реконструкции приводят к комбинированной потере.

Давайте объединим все.

Теперь мы будем работать с кодом тензорного потока.

продолжение следует - - - - - - - - - - - - - - - - - - - - - - - - -