Я обучил модель ResNet50V2, и мне было интересно, как тензоры преобразуются из 3
каналов в n
каналы. У меня есть модель как:
model.summary()
Model: "model_9"
__________________________________________________________________________________________________
Layer (type) Output Shape Param # Connected to
==================================================================================================
input_9 (InputLayer) (None, 164, 164, 3) 0
__________________________________________________________________________________________________
conv1_pad (ZeroPadding2D) (None, 170, 170, 3) 0 input_9[0][0]
__________________________________________________________________________________________________
conv1_conv (Conv2D) (None, 82, 82, 64) 9472 conv1_pad[0][0]
__________________________________________________________________________________________________
pool1_pad (ZeroPadding2D) (None, 84, 84, 64) 0 conv1_conv[0][0]
__________________________________________________________________________________________________
...
...
...
...
...
...
post_relu (Activation) (None, 6, 6, 2048) 0 post_bn[0][0]
__________________________________________________________________________________________________
flatten_9 (Flatten) (None, 73728) 0 post_relu[0][0]
__________________________________________________________________________________________________
dense_9 (Dense) (None, 37) 2727973 flatten_9[0][0]
==================================================================================================
Total params: 26,292,773
Trainable params: 26,247,333
Non-trainable params: 45,440
Первый слой свертки "conv1_conv" имеет фильтр:
filters= layer.get_weights()[2] #conv1_conv layer
print(layer.name, filters.shape)
Вывод:
conv1_conv (7, 7, 3, 64)
Что Я не понимаю, это операция свертки, которая превращает тензор (170,170,3)
в тензор (82,82,64)
.
Что означает 64
в conv1_conv
?