一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 淺談keras.callbacks設置模型保存策略

淺談keras.callbacks設置模型保存策略

2020-06-18 10:40陳偉鵬2016 Python

這篇文章主要介紹了淺談keras.callbacks設置模型保存策略,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

如下所示:

keras.callbacks.ModelCheckpoint(self.checkpoint_path,
verbose=0, save_weights_only=True,mode="max",save_best_only=True),

默認是每一次poch,但是這樣硬盤空間很快就會被耗光.

將save_best_only 設置為True使其只保存最好的模型,值得一提的是其記錄的acc是來自于一個monitor_op,其默認為"val_loss",其實現是取self.best為 -np.Inf. 所以,第一次的訓練結果總是被保存.

mode模式自動為auto 和 max一樣,還有一個min的選項...應該是loss沒有負號的時候用的....

https://keras.io/callbacks/ 瀏覽上面的文檔.

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# Print the batch number at the beginning of every batch.
batch_print_callback = LambdaCallback(
 on_batch_begin=lambda batch,logs: print(batch))
 
# Stream the epoch loss to a file in JSON format. The file content
# is not well-formed JSON but rather has a JSON object per line.
import json
json_log = open('loss_log.json', mode='wt', buffering=1)
json_logging_callback = LambdaCallback(
 on_epoch_end=lambda epoch, logs: json_log.write(
 json.dumps({'epoch': epoch, 'loss': logs['loss']}) + '\n'),
 on_train_end=lambda logs: json_log.close()
)
 
# 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,
   json_logging_callback,
   cleanup_callback])

Keras的callback 一般在model.fit函數使用,由于Keras的便利性.有很多模型策略以及日志的策略.

比如 當loss不再變化時停止訓練

keras.callbacks.EarlyStopping(monitor='val_loss', min_delta=0, patience=0, verbose=0, mode='auto', baseline=None, restore_best_weights=False)

比如日志傳送遠程服務器等,以及自適應的學習率scheduler.

確實很便利....

補充知識:keras callbacks常用功能如ModelCheckpoint、ReduceLROnPlateau,EarlyStopping等

ModelCheckpoint:

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

參數:

filename:字符串,保存模型的路徑(可以將模型的準確率和損失等寫到路徑中,格式如下:)

ModelCheckpoint('model_check/'+'ep{epoch:d}-acc{acc:.3f}-val_acc{val_acc:.3f}.h5',monitor='val_loss')

還可以添加損失值等如

‘loss{loss:.3f}-val_loss{val_loss:.3f}'

monitor:需要檢測的值如測試集損失或者訓練集損失等

save_best_only:當設置為True時,監測值有改進時才會保存當前的模型

verbose:信息展示模式,0或1(當為1時會有如下矩形框的信息提示)

淺談keras.callbacks設置模型保存策略

mode:‘auto',‘min',‘max'之一,在save_best_only=True時決定性能最佳模型的評判準則,例如,當監測值為val_acc時,模式應為max,當監測值為val_loss時,模式應為min。在auto模式下,評價準則由被監測值的名字自動推斷。

save_weights_only:若設置為True,則只保存模型權重,否則將保存整個模型

period:CheckPoint之間的間隔的epoch數

參考代碼如下:

在使用時傳遞給fit中callbacks即可

?
1
2
3
4
5
6
7
8
9
10
checkpoint = ModelCheckpoint(log_dir + "ep{epoch:03d}-loss{loss:.3f}-
        val_loss{val_loss:.3f}.h5",
        monitor='val_loss', save_weights_only=True,
        save_best_only=True, period=1)
train_history=model.fit_generator(data_generator_wrap(),
         steps_per_epoch=max(1, num_train//batch_size),
        validation_data=data_generator_wrap(),
        validation_steps=max(1, num_val//batch_size),
        epochs=40,
        initial_epoch=0,callbacks=[logging, reduce_lr,checkpoint])

ReduceLROnPlateau:

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

當評價指標不在提升時,減少學習率

當學習停滯時,減少2倍或10倍的學習率常常能獲得較好的效果。該回調函數檢測指標的情況,如果在patience個epoch中看不到模型性能提升,則減少學習率

參數

monitor:被監測的量

factor:每次減少學習率的因子,學習率將以lr = lr*factor的形式被減少

patience:當patience個epoch過去而模型性能不提升時,學習率減少的動作會被觸發

mode:‘auto',‘min',‘max'之一,在min模式下,如果檢測值觸發學習率減少。在max模式下,當檢測值不再上升則觸發學習率減少。

epsilon:閾值,用來確定是否進入檢測值的“平原區”

cooldown:學習率減少后,會經過cooldown個epoch才重新進行正常操作

min_lr:學習率的下限

參考代碼如下:

?
1
2
3
4
reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.1, patience=3, verbose=1)
train_history = model.fit(data(),validation_data=datae_g(),epochs=40,callbacks=[logging, reduce_lr, checkpoint])
EarlyStopping
keras.callbacks.EarlyStopping(monitor='val_loss', patience=0, verbose=0, mode='auto')

當監測值不再改善時,該回調函數將中止訓練

參數

monitor:需要監視的量

patience:當early stop被激活(如發現loss相比上一個epoch訓練沒有下降),則經過patience個epoch后停止訓練。

verbose:信息展示模式

mode:‘auto',‘min',‘max'之一,在min模式下,如果檢測值停止下降則中止訓練。在max模式下,當檢測值不再上升則停止訓練。

以上這篇淺談keras.callbacks設置模型保存策略就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/dayuqi/article/details/85090353

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 特级毛片免费视频观看 | 国产精品香蕉在线观看不卡 | 久久精品亚洲牛牛影视 | 日韩色综合 | 成年人免费在线播放 | 国产永久在线观看 | 我的好妈妈7中字在线观看韩国 | 青草影院在线观看 | 亚洲色大成网站www久久九九 | 欧美日韩一区不卡 | 啊啊啊好大视频 | a在线观看欧美在线观看 | 美女脱小内内给男生摸j | 欧美日韩精品一区二区三区高清视频 | 免费人成在线观看视频播放 | 强漂亮白丝女教师小说 | 日本无遮挡拍拍拍凤凰 | 欧美日韩一区二区三区免费不卡 | 洗濯屋し在线观看 | 亚洲激情成人 | 精品性久久 | 九九九九在线精品免费视频 | 三叶草私人研究所 | 黄瓜视频导航 | 免费特黄一区二区三区视频一 | 五月天狠狠 | 九九精品成人免费国产片 | 国产高清视频免费最新在线 | a片毛片在线免费看 | 美女被爆| 日本一区二区三区在线 视频 | 日韩精品首页 | les女同h高h喷水 | 俄罗斯极品h在线 | 色妞视频一级毛片 | 亚洲精品一线二线三线 | 成人综合网址 | 日韩欧美a| 亚洲va久久久久综合 | 欧美一区二区三区免费不卡 | 国产欧美另类 |