I’m not sure how the second block works, as you are using the same layers with the same input.
Basically
out = F.relu(self.conv1(x))
out = F.relu(self.conv2(out))

is repeated, so that you could remove one call of these layers.
However, in your first example you are throwing away out using the second block, so only one block is used.
In your second example you are calculating out = out + (out + x). So again the second block is unnecessary, since you’ve already calculated the output of the block.
Could you explain your use case a bit?