morphism:

For example, for each epoch, after finishing learning with training set, I can select the model parameter which has the lowest loss w.r.t. validation set by saving the model parameter each time when the loss w.r.t. validation set has lower value than the
lowest loss by then.


Yes, this is a common technique and is called early stopping. You would store the model’s state_dict for the lowest validation loss (or highest validation accuracy).



 morphism:

Also, I can select the lowest validation loss while using different validation set each time
by mixing training set and validation set and randomly selecting some fraction of the mixture as a new
validation set


No, you shouldn’t do it, since mixing the training and validation set would give you a better “validation” loss than you would expect to see on “unseen” data. After your training is finished, the “validation” loss (which is not really the validation loss anymore) would most likely be much lower than the test loss.