Keras е библиотека с отворен код за невронни мрежи, написана на Python. Тя може да работи върху TensorFlow, Microsoft Cognitive Toolkit, R, Theano или PlaidML. Едно от значителните предимства на Keras е, че позволява на разработчиците да експортират модели в определени епохи, което може да бъде голямо предимство при настройването на моделите и оценката на производителността.
Проблем
Когато обучаваме модел за машинно обучение, ние обикновено наблюдаваме загубата или ефективността на метричната функция за някои валидиращи данни. Различните епохи могат да доведат до различно представяне на модела. Понякога най-добрите резултати се постигат в епоха, която не съответства на края на тренировъчния процес. В такива ситуации би било полезно, ако можем да запазим/експортираме модела на keras в определени епохи.
Решение
Решението на този проблем се крие в Keras Callbacks. Обратното извикване е обект (екземпляр на клас, изпълняващ специфични методи), който се предава на модела в извикването за прилягане и който се извиква от модела в различни точки по време на обучението. Има достъп до всички налични данни за състоянието на модела и неговата производителност.
Персонализирана функция за обратно извикване ни позволява да посочим действия на различни етапи от обучението, като например в началото или края на епоха, преди или след единична партида и т.н. Едно такова действие може да бъде да запазим модела в конкретни епохи.
Стъпка по стъпка Обяснение на кода
Първо, дефинираме персонализирано обратно извикване, за да запазим модела в определени епохи.
class CustomSaver(keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs={}):
if epoch == 9: # or save after some epoch, each k-th epoch etc.
self.model.save("model_{}.hd5".format(epoch))
След това добавяме това обратно извикване към процеса на монтиране на модела.
model = ... # create model model.compile(optimizer='...', loss='...') # compile model saver = CustomSaver() model.fit(..., callbacks=[saver]) # put your X_train, Y_train ...
В кода по-горе създаваме екземпляр на класа CustomSaver и след това го предаваме на метода за прилягане на модела като част от списъка с обратни извиквания.
Чрез модифициране на условието „if“ в рамките на нашия метод „on_epoch_end“, можем да накараме обратното извикване да се запазва след всеки „k“ епохи или всеки път, когато е изпълнено определено условие.
Библиотеки Keras и техните функции
Елегантният, удобен за потребителя дизайн на Keras опростява създаването и модифицирането на модели за дълбоко обучение. Предлага се с няколко инструмента, като Sequential и Model класове за изграждане на модели, различни слоеве за невронни мрежи (Convolutional, Pooling, Dense и т.н.) и обратни извиквания за наблюдение на обучението.
Един от най-полезните аспекти на обратните извиквания е преждевременното спиране на обучението или запазването на най-добрия модел според ефективността на валидиране. Това е толкова често задавана функция, че Keras вече съдържа вградени обратни извиквания за тях, известни като ModelCheckpoint и EarlyStopping.
Това е! Сега приложете това знание към вашия сценарий и запазете модела Keras в епохата, в която предлага най-добра производителност. Честито обучение на модели!