Yes, you won’t need a val folder, as you are selecting one sample as the test case for LOOCV.
There are still some issues in your code:

Currently train_model takes the DataLoader and iterates it (line79). However, you are also iterating your DataLoader in line 230. So basically you have a nested loop now, which is probably not, what you want to have. That’s probably the reason for the slow training.
Your transformation is only defined for the training case, thus has some random transformations, which is fine. However, since you are sampling the test data also from the train dataset, you are also applying these random transformations to your test data. This is usually not desired.
Line 240 should probably unsqueeze dim0.

Since LOOCV might be a bit tricky to get right (without a data leakage at least), maybe using skorch 82 would be a good idea. Skorch provides some wrappers for PyTorch to be scikit-compatible, which has a built-in LOOCV.
If that’s not an option, I would try to separate the data and transformation, and remove some unused code from train_model just to make sure the code is indeed working as expected.