#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. Я нашел ответ. Ядра фильтров перевернуты!