久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

回調(diào)函數(shù)Callback

 田杰4 2017-01-26

回調(diào)函數(shù)Callbacks

回調(diào)函數(shù)是一組在訓(xùn)練的特定階段被調(diào)用的函數(shù)集,你可以使用回調(diào)函數(shù)來觀察訓(xùn)練過程中網(wǎng)絡(luò)內(nèi)部的狀態(tài)和統(tǒng)計(jì)信息。通過傳遞回調(diào)函數(shù)列表到模型的.fit()中,,即可在給定的訓(xùn)練階段調(diào)用該函數(shù)集中的函數(shù)。

【Tips】雖然我們稱之為回調(diào)“函數(shù)”,,但事實(shí)上Keras的回調(diào)函數(shù)是一個(gè)類,,回調(diào)函數(shù)只是習(xí)慣性稱呼

CallbackList

keras.callbacks.CallbackList(callbacks=[], queue_length=10)

Callback

keras.callbacks.Callback()

這是回調(diào)函數(shù)的抽象類,定義新的回調(diào)函數(shù)必須繼承自該類

類屬性

  • params:字典,,訓(xùn)練參數(shù)集(如信息顯示方法verbosity,,batch大小,epoch數(shù))

  • model:keras.models.Model對(duì)象,,為正在訓(xùn)練的模型的引用

回調(diào)函數(shù)以字典logs為參數(shù),,該字典包含了一系列與當(dāng)前batch或epoch相關(guān)的信息。

目前,,模型的.fit()中有下列參數(shù)會(huì)被記錄到logs中:

  • 在每個(gè)epoch的結(jié)尾處(on_epoch_end),,logs將包含訓(xùn)練的正確率和誤差,accloss,,如果指定了驗(yàn)證集,,還會(huì)包含驗(yàn)證集正確率和誤差val_acc)val_lossval_acc還額外需要在.compile中啟用metrics=['accuracy']

  • 在每個(gè)batch的開始處(on_batch_begin):logs包含size,,即當(dāng)前batch的樣本數(shù)

  • 在每個(gè)batch的結(jié)尾處(on_batch_end):logs包含loss,若啟用accuracy則還包含acc


BaseLogger

keras.callbacks.BaseLogger()

該回調(diào)函數(shù)用來對(duì)每個(gè)epoch累加metrics指定的監(jiān)視指標(biāo)的epoch平均值

該回調(diào)函數(shù)在每個(gè)Keras模型中都會(huì)被自動(dòng)調(diào)用


ProgbarLogger

keras.callbacks.ProgbarLogger()

該回調(diào)函數(shù)用來將metrics指定的監(jiān)視指標(biāo)輸出到標(biāo)準(zhǔn)輸出上


History

keras.callbacks.History()

該回調(diào)函數(shù)在Keras模型上會(huì)被自動(dòng)調(diào)用,,History對(duì)象即為fit方法的返回值


ModelCheckpoint

keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto', period=1)

該回調(diào)函數(shù)將在每個(gè)epoch后保存模型到filepath

filepath可以是格式化的字符串,,里面的占位符將會(huì)被epoch值和傳入on_epoch_endlogs關(guān)鍵字所填入

例如,filepath若為weights.{epoch:02d-{val_loss:.2f}}.hdf5,,則會(huì)生成對(duì)應(yīng)epoch和驗(yàn)證集loss的多個(gè)文件,。

參數(shù)

  • filename:字符串,保存模型的路徑

  • monitor:需要監(jiān)視的值

  • verbose:信息展示模式,,0或1

  • save_best_only:當(dāng)設(shè)置為True時(shí),,將只保存在驗(yàn)證集上性能最好的模型

  • mode:‘a(chǎn)uto’,‘min’,,‘max’之一,,在save_best_only=True時(shí)決定性能最佳模型的評(píng)判準(zhǔn)則,例如,,當(dāng)監(jiān)測(cè)值為val_acc時(shí),,模式應(yīng)為max,當(dāng)檢測(cè)值為val_loss時(shí),,模式應(yīng)為min,。在auto模式下,評(píng)價(jià)準(zhǔn)則由被監(jiān)測(cè)值的名字自動(dòng)推斷,。

  • save_weights_only:若設(shè)置為True,,則只保存模型權(quán)重,否則將保存整個(gè)模型(包括模型結(jié)構(gòu),,配置信息等)

  • period:CheckPoint之間的間隔的epoch數(shù)


EarlyStopping

keras.callbacks.EarlyStopping(monitor='val_loss', patience=0, verbose=0, mode='auto')

當(dāng)監(jiān)測(cè)值不再改善時(shí),,該回調(diào)函數(shù)將中止訓(xùn)練

參數(shù)

  • monitor:需要監(jiān)視的量

  • patience:當(dāng)early stop被激活(如發(fā)現(xiàn)loss相比上一個(gè)epoch訓(xùn)練沒有下降),則經(jīng)過patience個(gè)epoch后停止訓(xùn)練,。

  • verbose:信息展示模式

  • mode:‘a(chǎn)uto’,,‘min’,‘max’之一,,在min模式下,,如果檢測(cè)值停止下降則中止訓(xùn)練。在max模式下,,當(dāng)檢測(cè)值不再上升則停止訓(xùn)練,。


RemoteMonitor

keras.callbacks.RemoteMonitor(root='http://localhost:9000')

該回調(diào)函數(shù)用于向服務(wù)器發(fā)送事件流,該回調(diào)函數(shù)需要requests

參數(shù)

  • root:該參數(shù)為根url,,回調(diào)函數(shù)將在每個(gè)epoch后把產(chǎn)生的事件流發(fā)送到該地址,,事件將被發(fā)往root + '/publish/epoch/end/'。發(fā)送方法為HTTP POST,其data字段的數(shù)據(jù)是按JSON格式編碼的事件字典,。

LearningRateScheduler

keras.callbacks.LearningRateScheduler(schedule)

該回調(diào)函數(shù)是學(xué)習(xí)率調(diào)度器

參數(shù)

  • schedule:函數(shù),,該函數(shù)以epoch號(hào)為參數(shù)(從0算起的整數(shù)),返回一個(gè)新學(xué)習(xí)率(浮點(diǎn)數(shù))

TensorBoard

keras.callbacks.TensorBoard(log_dir='./logs', histogram_freq=0)

該回調(diào)函數(shù)是一個(gè)可視化的展示器

TensorBoard是TensorFlow提供的可視化工具,,該回調(diào)函數(shù)將日志信息寫入TensorBorad,,使得你可以動(dòng)態(tài)的觀察訓(xùn)練和測(cè)試指標(biāo)的圖像以及不同層的激活值直方圖。

如果已經(jīng)通過pip安裝了TensorFlow,,我們可通過下面的命令啟動(dòng)TensorBoard:

tensorboard --logdir=/full_path_to_your_logs

更多的參考信息,,請(qǐng)點(diǎn)擊這里

參數(shù)

  • log_dir:保存日志文件的地址,該文件將被TensorBoard解析以用于可視化

  • histogram_freq:計(jì)算各個(gè)層激活值直方圖的頻率(每多少個(gè)epoch計(jì)算一次),,如果設(shè)置為0則不計(jì)算,。


ReduceLROnPlateau

keras.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=10, verbose=0, mode='auto', epsilon=0.0001, cooldown=0, min_lr=0)

當(dāng)評(píng)價(jià)指標(biāo)不在提升時(shí),減少學(xué)習(xí)率

當(dāng)學(xué)習(xí)停滯時(shí),,減少2倍或10倍的學(xué)習(xí)率常常能獲得較好的效果,。該回調(diào)函數(shù)檢測(cè)指標(biāo)的情況,如果在patience個(gè)epoch中看不到模型性能提升,,則減少學(xué)習(xí)率

參數(shù)

  • monitor:被監(jiān)測(cè)的量
  • factor:每次減少學(xué)習(xí)率的因子,,學(xué)習(xí)率將以lr = lr*factor的形式被減少
  • patience:當(dāng)patience個(gè)epoch過去而模型性能不提升時(shí),學(xué)習(xí)率減少的動(dòng)作會(huì)被觸發(fā)
  • mode:‘a(chǎn)uto’,,‘min’,,‘max’之一,在min模式下,,如果檢測(cè)值觸發(fā)學(xué)習(xí)率減少,。在max模式下,當(dāng)檢測(cè)值不再上升則觸發(fā)學(xué)習(xí)率減少,。
  • epsilon:閾值,,用來確定是否進(jìn)入檢測(cè)值的“平原區(qū)”
  • cooldown:學(xué)習(xí)率減少后,會(huì)經(jīng)過cooldown個(gè)epoch才重新進(jìn)行正常操作
  • min_lr:學(xué)習(xí)率的下限

示例:

reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=5, min_lr=0.001)model.fit(X_train, Y_train, callbacks=[reduce_lr])

CSVLogger

keras.callbacks.CSVLogger(filename, separator=',', append=False)

將epoch的訓(xùn)練結(jié)果保存在csv文件中,,支持所有可被轉(zhuǎn)換為string的值,,包括1D的可迭代數(shù)值如np.ndarray.

參數(shù)

  • fiename:保存的csv文件名,如run/log.csv
  • separator:字符串,,csv分隔符
  • append:默認(rèn)為False,,為True時(shí)csv文件如果存在則繼續(xù)寫入,為False時(shí)總是覆蓋csv文件

示例

csv_logger = CSVLogger('training.log')model.fit(X_train, Y_train, callbacks=[csv_logger])

LambdaCallback

keras.callbacks.LambdaCallback(on_epoch_begin=None, on_epoch_end=None, on_batch_begin=None, on_batch_end=None, on_train_begin=None, on_train_end=None)

用于創(chuàng)建簡(jiǎn)單的callback的callback類

該callback的匿名函數(shù)將會(huì)在適當(dāng)?shù)臅r(shí)候調(diào)用,,注意,,該回調(diào)函數(shù)假定了一些位置參數(shù)on_eopoch_beginon_epoch_end假定輸入的參數(shù)是epoch, logs. on_batch_beginon_batch_end假定輸入的參數(shù)是batch, logson_train_beginon_train_end假定輸入的參數(shù)是logs

參數(shù)

  • on_epoch_begin: 在每個(gè)epoch開始時(shí)調(diào)用
  • on_epoch_end: 在每個(gè)epoch結(jié)束時(shí)調(diào)用
  • on_batch_begin: 在每個(gè)batch開始時(shí)調(diào)用
  • on_batch_end: 在每個(gè)batch結(jié)束時(shí)調(diào)用
  • on_train_begin: 在訓(xùn)練開始時(shí)調(diào)用
  • on_train_end: 在訓(xùn)練結(jié)束時(shí)調(diào)用

示例

# Print the batch number at the beginning of every batch.batch_print_callback = LambdaCallback(on_batch_begin=lambda batch, logs: print(batch))# Plot the loss after every epoch.import numpy as npimport matplotlib.pyplot as pltplot_loss_callback = LambdaCallback(on_epoch_end=lambda epoch, logs: plt.plot(np.arange(epoch), logs['loss']))# Terminate some processes after having finished model training.processes = ...cleanup_callback = LambdaCallback(on_train_end=lambda logs: [p.terminate() for p in processes if p.is_alive()])model.fit(..., callbacks=[batch_print_callback, plot_loss_callback, cleanup_callback])

編寫自己的回調(diào)函數(shù)

我們可以通過繼承keras.callbacks.Callback編寫自己的回調(diào)函數(shù),,回調(diào)函數(shù)通過類成員self.model訪問訪問,,該成員是模型的一個(gè)引用,。

這里是一個(gè)簡(jiǎn)單的保存每個(gè)batch的loss的回調(diào)函數(shù):

class LossHistory(keras.callbacks.Callback): def on_train_begin(self, logs={}): self.losses = [] def on_batch_end(self, batch, logs={}): self.losses.append(logs.get('loss'))

例子:記錄損失函數(shù)的歷史數(shù)據(jù)

class LossHistory(keras.callbacks.Callback): def on_train_begin(self, logs={}): self.losses = [] def on_batch_end(self, batch, logs={}): self.losses.append(logs.get('loss'))model = Sequential()model.add(Dense(10, input_dim=784, init='uniform'))model.add(Activation('softmax'))model.compile(loss='categorical_crossentropy', optimizer='rmsprop')history = LossHistory()model.fit(X_train, Y_train, batch_size=128, nb_epoch=20, verbose=0, callbacks=[history])print history.losses# outputs'''[0.66047596406559383, 0.3547245744908703, ..., 0.25953155204159617, 0.25901699725311789]

例子:模型檢查點(diǎn)

from keras.callbacks import ModelCheckpointmodel = Sequential()model.add(Dense(10, input_dim=784, init='uniform'))model.add(Activation('softmax'))model.compile(loss='categorical_crossentropy', optimizer='rmsprop')'''saves the model weights after each epoch if the validation loss decreased'''checkpointer = ModelCheckpoint(filepath='/tmp/weights.hdf5', verbose=1, save_best_only=True)model.fit(X_train, Y_train, batch_size=128, nb_epoch=20, verbose=0, validation_data=(X_test, Y_test), callbacks=[checkpointer])

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多