Как работает второй сверточный слой в tensorflow keras?

#python #tensorflow #keras

#python #tensorflow #keras

Вопрос:

У меня есть текущая модель в keras.

 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 равен (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)

Но это кажется неправильным.

Кто-нибудь может мне объяснить, как второй conv-слой вычисляет выходные изображения? Спасибо за вашу помощь.

Комментарии:

1. так же, как и в первом слое. количество фильтров становится количеством каналов в выходных данных. взгляните cs231n.github.io/convolutional-networks

2. This layer has 4*8 kernels. — Как вы определяете ядро?

3. Я имею в виду сверточное ядро ( en.wikipedia.org/wiki/Kernel_ (image_processing) ).

4. «таким же образом, как и в первом слое. количество фильтров становится количеством каналов в выходных данных. взгляните » Но на этот раз у меня есть 4 входных изображения. Как фильтры применяются к этим 4 изображениям.

5. Я нашел ответ. Ядра фильтров перевернуты!