Как рассчитать количество обучаемых параметров слоя трехмерной свертки? - PullRequest
1 голос
/ 16 апреля 2019

Я новичок в CNN, я использую слой трехмерной свертки при построении своей сети, но я не могу понять, как вычисляются обучаемые параметры этого слоя свертки 3D.Вот пример простой однослойной сети с формой ввода (3,16,112,112) (каналы, кадры, высота, ширина), т.е. 16 RGB-изображений размером (112 * 112):

def get_model(summary=False):

model = Sequential()
model.add(Convolution3D(64, (3, 3, 3), activation='relu', 
                        padding='valid', name='conv1',
                        strides=(1, 1, 1), 
                        input_shape=(3, 16, 112, 112)))
if summary:
    print(model.summary())
return model

В сводке отображаются 5248 обучаемых параметров. Может ли кто-нибудь объяснить мне, как получается это число?

1 Ответ

1 голос
/ 16 апреля 2019

Обучаемые параметры относятся ко всем весам и отклонениям в вашей сети, а также к значениям в сверточных фильтрах в ваших трехмерных сверточных слоях.Это означает, что в сверточных фильтрах, которые можно обучить, имеется 5248 различных весов, смещений и значений соединения.

Сети могут также иметь части, которые не обучаемы, такие как максимальный уровень пула.То, что делает этот слой, не зависит от обучения.

Количество весов = ширина ядра * высота ядра * глубина ядра (потому что 3d) x количество каналов во входном изображении * количество ядер

количество смещений = количество ядер

Так что для вас:

Количество весов = 3 x 3 x 3 x 3 x 64 = 5184

Количество смещений = 64

Количество параметров = 5184 +64 = 5248

...