溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

回調(diào)函數(shù)callbacks怎么用

發(fā)布時(shí)間:2021-12-10 10:24:34 來源:億速云 閱讀:144 作者:柒染 欄目:大數(shù)據(jù)

回調(diào)函數(shù)callbacks怎么用,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

下面我們介紹回調(diào)函數(shù)。

一,回調(diào)函數(shù)概述

tf.keras的回調(diào)函數(shù)實(shí)際上是一個(gè)類,一般是在model.fit時(shí)作為參數(shù)指定,用于控制在訓(xùn)練過程開始或者在訓(xùn)練過程結(jié)束,在每個(gè)epoch訓(xùn)練開始或者訓(xùn)練結(jié)束,在每個(gè)batch訓(xùn)練開始或者訓(xùn)練結(jié)束時(shí)執(zhí)行一些操作,例如收集一些日志信息,改變學(xué)習(xí)率等超參數(shù),提前終止訓(xùn)練過程等等。

同樣地,針對(duì)model.evaluate或者model.predict也可以指定callbacks參數(shù),用于控制在評(píng)估或預(yù)測開始或者結(jié)束時(shí),在每個(gè)batch開始或者結(jié)束時(shí)執(zhí)行一些操作,但這種用法相對(duì)少見。

大部分時(shí)候,keras.callbacks子模塊中定義的回調(diào)函數(shù)類已經(jīng)足夠使用了,如果有特定的需要,我們也可以通過對(duì)keras.callbacks.Callbacks實(shí)施子類化構(gòu)造自定義的回調(diào)函數(shù)。

所有回調(diào)函數(shù)都繼承至 keras.callbacks.Callbacks基類,擁有params和model這兩個(gè)屬性。

其中params 是一個(gè)dict,記錄了 training parameters (eg. verbosity, batch size, number of epochs...).

model即當(dāng)前關(guān)聯(lián)的模型的引用。

此外,對(duì)于回調(diào)類中的一些方法如on_epoch_begin,on_batch_end,還會(huì)有一個(gè)輸入?yún)?shù)logs, 提供有關(guān)當(dāng)前epoch或者batch的一些信息,并能夠記錄計(jì)算結(jié)果,如果model.fit指定了多個(gè)回調(diào)函數(shù)類,這些logs變量將在這些回調(diào)函數(shù)類的同名函數(shù)間依順序傳遞。

二,內(nèi)置回調(diào)函數(shù)

  • BaseLogger:收集每個(gè)epoch上metrics在各個(gè)batch上的平均值,對(duì)stateful_metrics參數(shù)中的帶中間狀態(tài)的指標(biāo)直接拿最終值無需對(duì)各個(gè)batch平均,指標(biāo)均值結(jié)果將添加到logs變量中。該回調(diào)函數(shù)被所有模型默認(rèn)添加,且是第一個(gè)被添加的。

  • History:將BaseLogger計(jì)算的各個(gè)epoch的metrics結(jié)果記錄到history這個(gè)dict變量中,并作為model.fit的返回值。該回調(diào)函數(shù)被所有模型默認(rèn)添加,在BaseLogger之后被添加。

  • EarlyStopping:當(dāng)被監(jiān)控指標(biāo)在設(shè)定的若干個(gè)epoch后沒有提升,則提前終止訓(xùn)練。

  • TensorBoard:為Tensorboard可視化保存日志信息。支持評(píng)估指標(biāo),計(jì)算圖,模型參數(shù)等的可視化。

  • ModelCheckpoint:在每個(gè)epoch后保存模型。

  • ReduceLROnPlateau:如果監(jiān)控指標(biāo)在設(shè)定的若干個(gè)epoch后沒有提升,則以一定的因子減少學(xué)習(xí)率。

  • TerminateOnNaN:如果遇到loss為NaN,提前終止訓(xùn)練。

  • LearningRateScheduler:學(xué)習(xí)率控制器。給定學(xué)習(xí)率lr和epoch的函數(shù)關(guān)系,根據(jù)該函數(shù)關(guān)系在每個(gè)epoch前調(diào)整學(xué)習(xí)率。

  • CSVLogger:將每個(gè)epoch后的logs結(jié)果記錄到CSV文件中。

  • ProgbarLogger:將每個(gè)epoch后的logs結(jié)果打印到標(biāo)準(zhǔn)輸出流中。

三,自定義回調(diào)函數(shù)

可以使用callbacks.LambdaCallback編寫較為簡單的回調(diào)函數(shù),也可以通過對(duì)callbacks.Callback子類化編寫更加復(fù)雜的回調(diào)函數(shù)邏輯。

如果需要深入學(xué)習(xí)tf.Keras中的回調(diào)函數(shù),不要猶豫閱讀內(nèi)置回調(diào)函數(shù)的源代碼。

回調(diào)函數(shù)callbacks怎么用

回調(diào)函數(shù)callbacks怎么用

看完上述內(nèi)容,你們掌握回調(diào)函數(shù)callbacks怎么用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI