, если вы пытаетесь зарегистрировать неперечислимые свойства родительского объекта ex. по умолчанию методы, определенные внутри класса в es6, устанавливаются на прототипе, но устанавливаются как неперечислимые.
Object.getOwnPropertyNames(Object.getPrototypeOf(obj));
IIUC, вы обучили модель с точностью, равной конкретному значению, скажем, 30%. Когда вы перезагрузите и обучите эту модель, она сохранит модели с точностью ниже 30%, и вы не хотите, чтобы это произошло.
Я проверил исходный код keras и обнаружил, что ModelCheckpoint
имеет атрибут с именем best
, который служит эталоном.
if mode == 'min':
self.monitor_op = np.less
self.best = np.Inf
elif mode == 'max':
self.monitor_op = np.greater
self.best = -np.Inf
else:
if 'acc' in self.monitor or self.monitor.startswith('fmeasure'):
self.monitor_op = np.greater
self.best = -np.Inf
else:
self.monitor_op = np.less
self.best = np.Inf
Но его инициализатор не принимает этот параметр:
def __init__(self, filepath, monitor='val_loss', verbose=0,
save_best_only=False, save_weights_only=False,
mode='auto', period=1):
Так что вы можете установить его вручную после создания ModelCheckpoint
объект, подобный этому:
mcp = ModelCheckpoint(create_save_path(), monitor='val_acc', verbose=2,
save_best_only=True, save_weights_only=False,
mode='auto', period=1)
mcp.best = 0.3