# How to use class_weight parameter for validation set?

I am using Keras' class_weight parameter to deal with an imbalanced class problem. I am doing this to define the weights :

weights = class_weight.compute_class_weight('balanced',np.unique(trainY),trainY)


then, in my network:

model.add(LSTM(..., class_weight=weights,...,callbacks=callbacks_list))


However, I also use a callbacks list to prevent overfitting, by imposing EarlyStopping based on validation_accuracy ...:

earlystop = EarlyStopping(monitor='val_acc', min_delta=0.001, patience=5, verbose=1, mode='auto')
callbacks_list = [earlystop]


However, my weights are only defined based on my training set... But my validation set also contains imbalanced data, in different proportions than the training set, and I would also like to give appropriate weights to have a fair evaluation of val_loss parameter...

So my question is

1. With which weights is the val_loss computed ? With the weights given in class_weightparameter ? Or is this parameter only used for training loss ?

2. How could I define weights that could be used for the validation set, to have a more accurate value of val_loss ?

Thanks

• The weighting only happens during training time when we are passing class weights, Also if you have used Stratified Sampling and then split your data into train and validation, that should solve the problem..... Maybe Just another way around! – Aditya Sep 9 '18 at 3:41
• Using validation set is a part of training process so must not be imbalanced. – Mehdi May 21 '20 at 21:11

def my_metric(y_true, y_pred):