我可以在训练期间更改class_weight吗?

时间:2019-03-26 10:42:46

标签: python tensorflow keras deep-learning

我想在Keras训练期间更改class_weight。

我使用了fit_generatorCallback方法,如下所示。

model.fit_generator(
                decoder_generator(x_train, y_train),
                steps_per_epoch=len(x_train),
                epochs=args.epochs,
                validation_data=decoder_generator(x_valid, y_valid),
                validation_steps=len(x_valid),
                callbacks=callback_list,
                class_weight=class_weights,
                verbose=1)

class Valid_checker(keras.callbacks.Callback):
    def __init__(self, model_name, patience, val_data, x_length):
        super().__init__()
        self.best_score = 0
        self.patience = patience
        self.current_patience = 0 
        self.model_name = model_name
        self.validation_data = val_data
        self.x_length = x_length


    def on_epoch_end(self, epoch, logs={}):
        X_val, y_val = self.validation_data
        y_predict, x_predict = model.predict_generator(no_decoder_generator(X_val, y_val), steps=len(X_val))
        y_predict = np.asarray(y_predict)
        x_predict = np.asarray(x_predict)  

decoder_generatorno_decoder_generator只是自定义生成器。

我想在每个时代结束时改变班级的权重。可能吗?那我该怎么办?

我的数据是不平衡数据,并且过拟合持续进行一类。

在纪元结束时,我想通过按班级计算准确性来增加低班级的权重。

我该怎么办?

0 个答案:

没有答案