Thanks for your reply @ptrblck!
For the statement,



 ptrblck:

PS: I used the trained model to evaluate the training, test, and vald of ADvsMCI, the accuracy is not 1.0.


I mean, I saved the best model during the training process in a file first (torch.save). I then loaded the best model from the file (torch.load) to evaluate the training, validation and, test data again, but the validation, and test accuracy could not reach to 1.0. This is also wired. It seems the best model is not trained, evaluated and tested on the same dataset, but I use the same data paths for the training, validation and test data.
What is the meaning of checking the training, validation, and test errors after the shuffling?  I just do shuffling for the training data. Do you mean calculate the error after each epoch?
The dataset is kinda big. It cann’t be loaded into RAM completely. I also checked the training, validation and test data. There is no overlapping among them.