When you do res += res at the end of your make_block function, you append to the list res, the content of the list res. That means that the first element is added as the 4th element and so on. This means that 1st and 4th, 2nd and 5th and 3rd and 6th are the same elements. You only have 1 conv, 1 bn and 1 relu module. And they each will be called twice in your sequential. This is effectivement doing parameter sharing within your block where the two convs and two BN share the same params (and statistics for the BN).