Keras预设的 val_acc 跟我 CustomCallback 的 val_acc不一样?

怎么找都找不到问题,我的 CustomCallback看起来是没写错啊
两个都用一样的validation dataset跟model,怎么val_accuracy差这么多?

img

Callbacks =[
    checkpoint_callback(start_time),
    CustomCallback(val_ds, result, files_path, class_names,start_time)]
model.fit(train_ds, epochs=40, verbose = 1, callbacks=Callbacks,validation_data=val_ds,steps_per_epoch=20)
class CustomCallback(tf.keras.callbacks.Callback):
    def __init__(self, val_ds, result, files_path, class_names,start_time):
        super(CustomCallback, self).__init__()
        self.start_time = start_time
        self.val_ds = val_ds
        self.result = result
        self.files_path = files_path
        self.class_names = class_names
    
    def get_map(self, pred_valid, epoch):

        overkill_count = 0
        leakage_count = 0
        good_count = 0
        bad_count = 0
        same = 0
        for i ,f in enumerate(self.files_path):
            pred = self.class_names[np.argmax(pred_valid[i])]
            label = self.result[f]['label']
            
            if pred == label :
                same += 1
                
            if label == 'good':
            
                good_count = good_count + 1
                
                if pred != 'good':
                    overkill_count = overkill_count + 1
                    
            else:
                bad_count = bad_count + 1
                if pred == 'good':
                    leakage_count = leakage_count + 1

您好,建议您直接查看 Keras 这部分代码的实现