В этом примере ResNet, здесь, когда мы определяем класс BasicBlock, мы передаем downsample в качестве параметра конструктора.
def __init__(self, inplanes, planes, stride=1, downsample=None, groups=1, norm_layer=None):
, если мы ничего не передаем классу, тогда downsample = None
, как результат identity не изменится.
Когда мы передадим downsample = "some convolution layer"
в качестве аргумента конструктора класса, он будет понижать идентичность через пройденный слой свертки, чтобы успешно выполнить сложение.этот слой уменьшит идентичность через код, как упоминалось
if self.downsample is not None:
identity = self.downsample(x)