How would you like to split your input data?
Since it seems you would like to use a one-dimensional conv layer, your input should be of shape [batch_size, channels, length].
Are you splitting X_train based on the length? Also, do you want to concatenate the split input?
If so, this could be a starter code:
class MyModel(nn.Module):
    def __init__(self):
        super(MyModel, self).__init__()
        self.conv1 = nn.Conv1d(5, 10, 3, 1, 1)
        self.conv2 = nn.Conv1d(10, 10, 3 ,1, 1)
        self.pool2 = nn.MaxPool1d(2)
        
        self.fc1 = nn.Linear(10 * 50 + 5 * 5, 100)
        self.fc2 = nn.Linear(100, 2)
        
    def forward(self, x):
        x1 = x[:, :, :100]
        x2 = x[:, :, 100:].contiguous().view(x.size(0), -1)
        
        x1 = F.relu(self.conv1(x1))
        x1 = F.relu(self.conv2(x1))
        x1 = self.pool2(x1)
        x1 = x1.view(x1.size(0), -1)
        
        x = torch.cat((x1, x2), 1)
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        return x


batch_size = 1
channels = 5
length = 105
x = torch.randn(batch_size, channels, length)
model = MyModel()

output = model(x)

Note that you might want to check the ranges before the concatenation, as they might be quite different, which might lead to training difficulties.