我在U-net模型中使用了Early Stopping,但它引发了错误
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)
答案 0 :(得分:1)
您必须先导入类,然后再使用它们:
from keras.callbacks import ModelCheckpoint, EarlyStopping
由于您使用的是from something import *
,因此从这些模块中导入的内容可能会泄漏到当前模块中,因此对于某些类而言可能会出错,而对于其他类而言则可能会出错。
作为一种好习惯,请始终导入同一文件。