In the original ResNet paper they talk about using plain identity skip connections when the input and output of a block have the same dimensions.
When the input and output have different dimensions they propose two options:
(A) Use an identity mapping padded with zeros to make up for the extra dimensions
(B) Use a "projection".
which (after some digging around in other people's code) I see as meaning: do a convolution with a 1x1 kernel with trainable weights.
(B) is confusing to me because it seems to ruin the point of ResNet by making the skip connection trainable. Then the main path is not really learning a "residual" relative to an identity transformation. So at this point, I'm no longer sure how to interpret the intent or expected effect of this type of block. And I would think that one should justify doing it in the first places instead of just not putting a skip connection there at all (which in my mind is the status-quo before this paper).
So can anyone help explain away my confusion here?