About learning loss of both training and validation loss for the FERPlus dataset

Hi everyone, I am doing a small project on the FERPlus dataset for a side project. As I trained with the model I built from scratch (PyTorch) I noticed something with my loss graph:

It seems that the loss does not decrease much and the validation loss fluctuates strongly. I looked up from yesterday and found a little bit of information about this problem, probably I am facing underfitting, and also the validation dataset is unrepresentative. Is it correct and is there any way to avoid this happening?

Here is my model and hyperparameter information:

About the dataset:

Name: FER2013Plus (Face Emotion Recognition 2013 Plus)
Classes: 10 classes (8 emotions+ 1 Unknown+ 1 NotFace), each class value is ranged from 0 to 10 points, and all classes must be summed up to 10 points.
Training size: 28557
Validation size: 3578
Test size: 3572

Input image shape: 48x48 GreyScale

Dataset Loader and Transformation step:

CNN Model:

Hyperparams:
image

Training and validation:

Anything in the comment is appreciated and helps me understand better for CV field. If I make any mistakes in the code, just point it out

Thanks, a lot.