I’m glad it worked after all!
My code was quite messy, because I tried out several approaches and apparently the functional example stayed quite simple. 
Another idea I had after reading your first response it to separate the convolutions.
It’s probably not meaningful anymore, since the code works, but maybe still interesting.
Since each filter does not depend on the other filters, we could apply different convolutions and sum the result together. It’s a bit tricky to explain, so I created a small example.
The filters named convX_2 are the additional ones. We would have to slice the output of the previous layer, which doesn’t seem to be that good. I think the performance might suffer a bit.
# Normal model
conv1_1 = nn.Conv2d(3, 6, 3, 1, 1, bias=False)
conv2_1 = nn.Conv2d(6, 12, 3, 1, 1, bias=False)
conv2_1.weight.data.fill_(0.5)

x = torch.randn(1, 3, 4, 4)
output = conv1_1(x)
output = conv2_1(output)

# Now let's add an additional conv
conv1_2 = nn.Conv2d(3, 1, 3, 1, 1, bias=False)
conv2_2 = nn.Conv2d(1, 12, 3, 1, 1, bias=False)
conv2_2.weight.data.fill_(1.0)

# First layer
output1_1 = conv1_1(x)
output1_2 = conv1_2(x)

output1 = torch.cat((output1_1, output1_2), dim=1)

# Second layer
output2_1 = conv2_1(output1[:, :6])
output2_2 = conv2_2(output1[:, 6:7])
output2 = output2_1 + output2_2

# Compare with non-separated convolution
conv2_comp = nn.Conv2d(7, 12, 3, 1, 1, bias=False)
conv2_comp.weight.data[:, :6].fill_(0.5)
conv2_comp.weight.data[:, 6:7].fill_(1.0)

output2_comp = conv2_comp(output1)

print('Sum of abs error: {}'.format((output2 - output2_comp).abs().sum()))

You current code might be cleaner, and this approach is not completely thought out, but maybe it’s useful in some sense.