在Keras中,回調(diào)函數(shù)是在訓(xùn)練過程中的特定時(shí)間點(diǎn)調(diào)用的函數(shù),用于監(jiān)控模型的性能、調(diào)整學(xué)習(xí)率、保存模型等操作。使用回調(diào)函數(shù)可以在訓(xùn)練過程中實(shí)時(shí)監(jiān)控模型的性能,并根據(jù)需要進(jìn)行一些操作。
要使用回調(diào)函數(shù),首先需要定義一個(gè)回調(diào)函數(shù)的類,并實(shí)現(xiàn)對(duì)應(yīng)的方法。Keras已經(jīng)提供了一些內(nèi)置的回調(diào)函數(shù),比如ModelCheckpoint用于保存模型,EarlyStopping用于提前停止訓(xùn)練等。
然后,在訓(xùn)練模型時(shí),通過callbacks參數(shù)將定義的回調(diào)函數(shù)傳遞給fit方法,如下所示:
from keras.callbacks import ModelCheckpoint
# 定義回調(diào)函數(shù)
checkpoint = ModelCheckpoint(filepath='model.h5', monitor='val_loss', save_best_only=True)
# 訓(xùn)練模型
model.fit(X_train, y_train, validation_data=(X_val, y_val), callbacks=[checkpoint])
在上面的例子中,ModelCheckpoint回調(diào)函數(shù)會(huì)在每個(gè)epoch結(jié)束時(shí)監(jiān)測(cè)驗(yàn)證集上的損失值,并保存性能最好的模型到model.h5文件中。
除了內(nèi)置的回調(diào)函數(shù),還可以自定義回調(diào)函數(shù)。通過繼承keras.callbacks.Callback類,并重寫對(duì)應(yīng)的方法來實(shí)現(xiàn)自定義的回調(diào)函數(shù)。
總之,回調(diào)函數(shù)是在訓(xùn)練過程中非常有用的工具,可以幫助我們監(jiān)控模型的性能,調(diào)整參數(shù),保存模型等操作。