The training looks a bit wrong, since you are only assigning batch['label'], which isn’t defined and are using device (what is device set to?) while the evaluation loop uses batch['label_age'].to('cuda'), batch['label_gender'].to('cuda'), so you might want to check the device argument of all target tensors separately.