Если входная форма равна (3, 150, 150)
, после применения слоя Conv2D выходной сигнал будет (?, 32, 148, 148)
. Проверьте это на следующем примере:
inps = Input(shape=(3, 150, 150))
conv = Conv2D(32, (3, 3), data_format='channels_first')(inps)
print(conv)
>> Tensor("conv2d/BiasAdd:0", shape=(?, 32, 148, 148), dtype=float32)
- Первое измерение, которое указано символом
?
, - это размер партии.
- Вторым измерением является размер фильтра (
32
).
- Последние два - ширина и высота изображения (
148
).
Как каналы меняются с 3 на 32? Предположим, у нас есть изображение RGB (3 канала) и размер выходного канала равен 1. Происходят следующие вещи:
Когда вы используете filters=32
и kernel_size=(3,3)
, вы создаете 32 разных фильтра, каждый из которых имеет форму (3,3,3). Результат принесет 32 разных извилины. Обратите внимание, что, согласно Keras , все ядра инициализируются в начале glorot_uniform
.
Изображение из этого сообщения в блоге .