Я изучаю Остаточные сети (ResNet50) из лекций Эндрю Нг. Я понимаю, что одна из основных причин, по которой работают ResNets, заключается в том, что они могут изучать функцию идентификации, и поэтому добавление в сеть все большего и большего количества слоев не влияет на производительность сети.
Теперь, как описано в лекциях, в ResNets используются два типа блоков: 1) Идентификационный блок и Сверточный блок.
Блок идентификации используется, когда нет изменений во входных и выходных размерах. Сверточный блок почти такой же, как и единичный блок, но в пути short-cut
есть сверточный слой, чтобы просто изменить размерность так, чтобы размерность входных и выходных соответствовала.
Вот идентификационный блок:
![enter image description here](https://i.stack.imgur.com/37qzA.png)
, а вот сверточный блок:
![enter image description here](https://i.stack.imgur.com/0mE2p.png)
Теперь в реализации сверточного блока (2-е изображение) первый блок (т. Е. conv2d --> BatchNorm --> ReLu
реализован с 1x1
сверткой и шагом> 1.
# First component of main path
X = Conv2D(F1, (1, 1), strides = (s,s), name = conv_name_base + '2a', padding = 'valid', kernel_initializer = glorot_uniform(seed=0))(X)
X = BatchNormalization(axis = 3, name = bn_name_base + '2a')(X)
X = Activation('relu')(X)
ДонНе понимаю причину сохранения шага> 1 с размером окна 1. Разве это не просто потеря данных? В данном случае мы просто рассматриваем альтернативные пиксели.
Какая должна быть возможная причина для выбора такого гиперпараметра? Любое интуитивное объяснение поможет! Спасибо.