Я использую последнюю версию Keras с бэкэндом Tensorflow (Python 3.6)
Я загружаю модель, у которой была точность обучения около 86%, когда я последний раз тренировал ее.
Первоначальный оптимизатор, который я использовал, был:
r_optimizer = optimizer=Adam(lr=0.0001, decay = .02)
model.compile(optimizer= r_optimizer,
loss='categorical_crossentropy', metrics = ['accuracy'])
Если я загружу модель и продолжу тренировку без перекомпиляции, моя точность останется около 86% (даже после 10 или более эпох).Поэтому я хотел попробовать изменить скорость обучения или оптимизатор.
Если я перекомпилирую модель и попытаюсь изменить скорость обучения или оптимизатор следующим образом:
new_optimizer = optimizer=Adam(lr=0.001, decay = .02)
или на этот:
sgd = optimizers.SGD(lr= .0001)
и затем скомпилируйте:
model.compile(optimizer= new_optimizer ,
loss='categorical_crossentropy', metrics = ['accuracy'])
model.fit ....
Точность будет сброшена примерно до 15% - 20%, вместо того, чтобы начинаться с 86%, и моя потеря будет намного выше.Даже если бы я использовал небольшую скорость обучения и перекомпилировал, я все равно начинал бы с очень низкой точностью.При просмотре интернета кажется, что некоторые оптимизаторы, такие как ADAM или RMSPROP, имеют проблему с сбросом весов после перекомпиляции (в данный момент не могу найти ссылку)
Поэтому я немного покопался и попытался сбросить свой оптимизатор без перекомпиляцииследующим образом:
model = load_model(load_path)
sgd = optimizers.SGD(lr=1.0) # very high for testing
model.optimizer = sgd #change optimizer
#fit for training
history =model.fit_generator(
train_gen,
steps_per_epoch = r_steps_per_epoch,
epochs = r_epochs,
validation_data=valid_gen,
validation_steps= np.ceil(len(valid_gen.filenames)/r_batch_size),
callbacks = callbacks,
shuffle= True,
verbose = 1)
Однако эти изменения, похоже, не отражаются на моих тренировках.Несмотря на значительное повышение lr
, я все еще теряю около 86% с той же потерей.В каждую эпоху я вижу очень мало потерь или точности движения.Я ожидаю, что потеря будет намного более волатильной.Это приводит меня к мысли, что моя смена оптимизатора и lr не реализуется моделью.
Есть идеи, что я могу делать не так?