У меня есть модель в керасе.
model = Sequential()
model.add(Conv2D(4, (3, 3), input_shape=input_shape, name='Conv2D_0', padding = 'same', use_bias=False, activation=None))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(8, (3, 3), name='Conv2D_1', padding='same', use_bias=False, activation=None))
model.add(MaxPooling2D(pool_size=(2, 2)))
input_shape is (32, 32).Итак, для первого слоя, если у меня есть изображение размером (32, 32), я получаю 4 изображения размером (32, 32).Таким образом, входное изображение свернуто с 4 различными ядрами.После пула я получаю 4 изображения размером (16, 16).
Второй сверточный слой дает мне 8 изображений размера (16, 16).Этот слой имеет
4 * 8 ядер.Ядра имеют размер (3, 3, 4, 8).Но я не понимаю, как вычисляются 8 выходных изображений.
Я подумал, например, для первого изображения, которое я могу сделать, например: H_i: i-е выходное изображение первого слоя пула Ker_i: i-я ядро(:,:, i, 0)
Таким образом, первое выходное изображение второго сверточного слоя может быть: conv (H_0, ker_0) + conv (H_1, ker_1) + conv (H_2, ker_2) + conv(H_3, ker_3)
Но, похоже, это неправильно.
Может кто-нибудь объяснить мне, как второй кон-слой вычисляет выходные изображения?Спасибо за вашу помощь.