3

Keras учебник дает следующий пример кода (с комментариями):размеры выходных сверточного слоя с Keras

# apply a convolution 1d of length 3 to a sequence with 10 timesteps, 
# with 64 output filters 
model = Sequential() 
model.add(Convolution1D(64, 3, border_mode='same', input_shape=(10, 32))) 
# now model.output_shape == (None, 10, 64) 

Я смущен о размере выходного сигнала. Не следует ли создавать 10 временных меток с глубиной 64 и шириной 32 (по умолчанию по умолчанию - 1, без заполнения)? Так (10,32,64) вместо (None,10,64)

ответ

2

В к-мерная свертке вы будете иметь фильтры, которые какие-то образом сохранить структуру первых к- размеров и осечение информации от всех других измерений свертки их с фильтрующими весами. Таким образом, каждый фильтр в вашей сети будет иметь размер (3x32), и вся информация из последнего измерения (эта с размером 32) будет сжата до одного реального числа с сохранением первого измерения. Вот почему у вас такая форма.

Вы можете представить себе аналогичную ситуацию в двумерном случае, когда у вас есть цветное изображение. Ваш вход будет иметь 3-мерную структуру (picture_length, picture_width, color). Когда вы применяете двухмерную свертку в отношении ваших первых двух измерений - вся информация о цветах будет сжата вашим фильтром и не будет сохранена в вашей структуре вывода. То же самое, что и здесь.