Keras EarlyStopping не распознается - PullRequest
0 голосов
/ 20 июня 2019

Я использую раннюю остановку в моей модели U-net, но это вызывает ошибку

File "main.py", line 18, in <module>
    earlystopper = EarlyStopping(monitor='val_loss', min_delta=0, patience=15, verbose=1, mode='auto', baseline=None, restore_best_weights=False)
NameError: name 'EarlyStopping' is not defined

Однако функция обратного вызова Keras работает хорошо

Я не могу понять, в чем проблема?любая помощь признается.

from model import *
from data import *

data_gen_args = dict(rotation_range=0.2,
                width_shift_range=0.05,
                height_shift_range=0.05,
                shear_range=0.05,
                zoom_range=0.05,
                horizontal_flip=True,
                fill_mode='nearest')
myGene = trainGenerator(2,'data/membrane/train','image','label',data_gen_args,save_to_dir = None)

model = unet()
model_checkpoint = ModelCheckpoint('unet_membrane.hdf5', monitor='loss',verbose=1, save_best_only=True)
earlystopper = EarlyStopping(monitor='val_loss', min_delta=0, patience=15, verbose=1, mode='auto', baseline=None, restore_best_weights=False)
model.fit_generator(myGene,steps_per_epoch=300,epochs=200,callbacks=[model_checkpoint, earlystopper])

testGene = testGenerator("data/membrane/test")
results = model.predict_generator(testGene,86,verbose=1)
saveResult("data/membrane/test",results)

1 Ответ

1 голос
/ 20 июня 2019

Вы должны импортировать классы перед их использованием:

from keras.callbacks import ModelCheckpoint, EarlyStopping

Поскольку вы используете from something import *, возможно, что импорт из этих модулей просочится в текущий модуль, поэтому может произойти ошибка длянекоторые классы, но не для других.

Рекомендуется всегда импортировать в один и тот же файл.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...