Реализация Resnetv2 в Керасе - PullRequest
1 голос
/ 10 апреля 2020

Я хотел бы понять подробности о Resnetv2 в Keras, ту, что в tenorflow.keras.applications.ResNet50V2. Почему первый слой свертки имеет одинаковое количество параметров при двух разных входных размерах? Вот пример, где вход имеет размер 440x340 и один с 550x425, и первый слой в каждом случае имеет 9472 параметра. Спасибо

_________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            [(None, 440, 340, 3) 0                                            
__________________________________________________________________________________________________
conv1_pad_Resnet50v2_classifica (None, 446, 346, 3)  0           input_1[0][0]                    
__________________________________________________________________________________________________
conv1_conv_Resnet50v2_classific (None, 220, 170, 64) 9472        conv1_pad_Resnet50v2_classificati
__________________________________________________________________________________________________


VS

__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            [(None, 550, 425, 3) 0                                            
__________________________________________________________________________________________________
conv1_pad_Resnet50v2_classifica (None, 556, 431, 3)  0           input_1[0][0]                    
__________________________________________________________________________________________________
conv1_conv_Resnet50v2_classific (None, 275, 213, 64) 9472        conv1_pad_Resnet50v2_classificati
__________________________________________________________________________________________________

1 Ответ

0 голосов
/ 13 апреля 2020

Вот первые три слоя, как показано на вашем model.summary. Исходный код ResNet50 здесь

img_input = layers.Input(tensor=input_tensor, shape=input_shape)
x = layers.ZeroPadding2D(padding=(3, 3), name='conv1_pad')(img_input)
x = layers.Conv2D(64, (7, 7),strides=(2, 2),padding='valid',
                  kernel_initializer='he_normal',
                  name='conv1')(x)

Давайте посмотрим, как оценивать параметры в слое Conv2D.

Kernel_width = 7, Kernel_height = 7, смещение = 1

Num_filters_in_prev_layer = 3

Num_filters_in_current_layer = 64

Формула:

Количество параметров = (Kernel_width Высота ядра Num_filters_in_prev_layer + смещение) * Num_filters_in_current_layer

= (7 * 7 * 3 + 1) * 64 = 9472

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