Как работает второй сверточный слой в тензорных керах? - PullRequest
0 голосов
/ 21 марта 2019

У меня есть модель в керасе.

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)

Но, похоже, это неправильно.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...