I have no idea as to why the above occurs, but I was able to go around the “mystery” by the following, for future readers:
1. Return the indices of the batches from the class of your Dataset
class DATA(Dataset):

    def __init__(self,x,y,transform):
        self.x_data    = x
        self.y_data    = y
        self.len = self.x_data.shape[0]

    def __getitem__(self, index):
        X_data = self.x_data[index]
        Y_data = self.y_data[index]
        return X_data,Y_data, index  ########## Returns the indices

    def __len__(self):
        return self.len

2. Insert the prediction at the correct indices:

preds = np.array(train_Y)          ## Copies the whole target vector (1200 samples in my case)


for i, data in enumerate(test_loader, 0):


x_test, y_test, index = data
index = index.detach().numpy()
with torch.no_grad():
    output_test = model(x_test.cuda().float())
preds_test      = np.argmax(list(torch.exp(output_test).cpu().numpy()), axis=1)
preds[index]    = preds_test   ### Insert batch (400 samples) predictions at correct indices in the 1200 array.