Свертывание последовательных линейных слоев - PullRequest
0 голосов
/ 13 июня 2018

У меня есть нейронная сеть с 3 последовательными линейными слоями (свертка) без промежуточных функций активации.После обучения сети и получения весов, я хотел бы свернуть все 3 слоя в один слой.

Как это можно сделать на практике, когда каждый слой имеет разный размер ядра и шаг?

Слои следующие:

  1. Сверточный слой с 3x3ядро, 5 входных каналов и 5 выходных каналов (тензор размера 3x3x5x5), с шагом 1 и заполнением "то же самое"
  2. Сверточный слой с ядром 5x5, 5 входными каналами и 50 выходными каналами (тензор размера5x5x5x50), с шагом 2 и дополнением "то же самое"
  3. Сверточный слой с ядром 3x3, 50 входными каналами и 50 выходными каналами (тензор размера 3x3x50x50), с шагом 1 и дополнением "то же самое"

Заранее спасибо

1 Ответ

0 голосов
/ 13 июня 2018

Переставьте размеры ядер первого уровня так, чтобы входные каналы находились в измерении «мини-пакет», а выходные каналы - в измерении «каналы».Примените второй слой к этому, как будто это было изображение.Затем примените третий слой к результату.Конечный результат - это ядра «свернутого» слоя.

Используйте «полный» отступ для всех этих операций.Если это работает примерно правильно (кроме заполнения), попробуйте исправить заполнение (вероятно, оно должно быть «таким же» в последней операции).

...