Я получил эту ошибку при ранней остановке функции TypeError: '>' не поддерживается между экземплярами 'NoneType' и 'float' в python - PullRequest
2 голосов
/ 10 июля 2020

Я работаю над прогнозированием эпилепсии с помощью CNN и использую раннюю остановку в своем коде. Я получил эту ошибку line 230 in on_epoch_end if current > self.value: TypeError: '>' not supported between instances of 'NoneType' and 'float' Я не знаю, как исправить эту ошибку.

current=non value и self.value=0.4021

Любая помощь будет принята с благодарностью.

class EarlyStoppingByLossVal(keras.callbacks.Callback):
    def __init__(self, monitor='val_loss', value=0.00001, verbose=0, lower=True):
        super(keras.callbacks.Callback, self).__init__()
        self.monitor = monitor
        self.value = value
        self.verbose = verbose
        self.lower=lower

    def on_epoch_end(self, epoch, logs={}):
        current = logs.get(self.monitor)
        if self.lower:
            if current < self.value:
                if self.verbose > 0:
                    print("Epoch %05d: early stopping THR" % epoch)
                self.model.stop_training = True
        else:
            if current > self.value:
                if self.verbose > 0:
                    print("Epoch %05d: early stopping THR" % epoch)
                self.model.stop_training = True

history=model.fit_generator(generate_arrays_for_training(indexPat, filesPath, end=75), #end=75),#It take the first 75%
                                validation_data=generate_arrays_for_training(indexPat, filesPath, start=75),#start=75), 
                                steps_per_epoch=int((len(filesPath)-int(len(filesPath)/100*25))),#*25), 
                                validation_steps=int((len(filesPath)-int(len(filesPath)/100*75))),#*75),
                                verbose=2,class_weight="balanced",
                                epochs=15, max_queue_size=2, shuffle=True, callbacks=[callback,checkpoint])
    
...