@ptrblck: It worked. I just want to make more clear by using your second way. It used linear operator. So, instead of using 1 linear, we will use 8 linear operators (corresponding to 8 neurons or length). So, it will be
lin0 = nn.Linear(4, 1) # for first linear of zeros's combination
lin1 = nn.Linear(4, 1) # for first linear of ones's combination
...
lin7 = nn.Linear(4, 1) # for first linear of eights's combination
with torch.no_grad():
    lin0.weight = nn.Parameter(conv.weight.squeeze(2))
    lin0.bias = nn.Parameter(conv.bias)
    lin1.weight = nn.Parameter(conv.weight.squeeze(2))
    lin1.bias = nn.Parameter(conv.bias)
    ...

input_concat = input_concat.permute(0, 2, 1)
out_lin0 = lin0(input_concat[:,:,0])  # w00 O0 + w01 O1 + w02 O2 + w03 O3
out_lin1 = lin1(input_concat[:,:,1])
...  


How do you think that? Is it correct?