Balanced batch generator returns inconsistent class number

Viewed 147

I am using imblearn.keras.balanced batch generator to solve my imbalanced dataset for CNN classification task. But turns out the balanced generator keep output inconsistent class for my data ( I have 12 classes in total but it produces 10/11/12 classes when new batch is yield everytime). With this problem, I get error when I train my model indicates that my output layer node does not match with the class number (error that i encountered : CNN model Categorical error: logits and labels must be broadcastable: logits_size=[32,10] labels_size=[32,13])

Code:

gen = BalancedBatchGenerator(data[["image"]], data[["class"]],
                             sampler=RandomOverSampler(),
                             random_state = 10,
                             batch_size=32)
for x,y in gen:
   print(len(y.value_counts())) # check number of class, dataset is in dataframe format
    # sample output 
    12
    11
    10
    12 

history = model.fit_generator(
    generator = train_generator, 
    validation_data = val_generator,
    epochs = 50,
    verbose = 1,
    callbacks = callbacks
)
# error
InvalidArgumentError:  logits and labels must be broadcastable: logits_size=[32,11] labels_size=[32,12]
 [[node categorical_crossentropy/softmax_cross_entropy_with_logits (defined at <ipython-input-23-af8ee67b3eab>:6) ]] [Op:__inference_train_function_78283]
0 Answers
Related