国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺(tái)!
分類導(dǎo)航

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

服務(wù)器之家 - 腳本之家 - Python - 基于keras中的回調(diào)函數(shù)用法說明

基于keras中的回調(diào)函數(shù)用法說明

2020-06-17 11:11帥氣的弟八哥 Python

這篇文章主要介紹了基于keras中的回調(diào)函數(shù)用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧

keras訓(xùn)練

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
fit(
 self,
 x,
 y,
 batch_size=32,
 nb_epoch=10,
 verbose=1,
 callbacks=[],
 validation_split=0.0,
 validation_data=None,
 shuffle=True,
 class_weight=None,
 sample_weight=None
)

1. x:輸入數(shù)據(jù)。如果模型只有一個(gè)輸入,那么x的類型是numpy array,如果模型有多個(gè)輸入,那么x的類型應(yīng)當(dāng)為list,list的元素是對(duì)應(yīng)于各個(gè)輸入的numpy array。如果模型的每個(gè)輸入都有名字,則可以傳入一個(gè)字典,將輸入名與其輸入數(shù)據(jù)對(duì)應(yīng)起來。

2. y:標(biāo)簽,numpy array。如果模型有多個(gè)輸出,可以傳入一個(gè)numpy array的list。如果模型的輸出擁有名字,則可以傳入一個(gè)字典,將輸出名與其標(biāo)簽對(duì)應(yīng)起來。

3. batch_size:整數(shù),指定進(jìn)行梯度下降時(shí)每個(gè)batch包含的樣本數(shù)。訓(xùn)練時(shí)一個(gè)batch的樣本會(huì)被計(jì)算一次梯度下降,使目標(biāo)函數(shù)優(yōu)化一步。

4. nb_epoch:整數(shù),訓(xùn)練的輪數(shù),訓(xùn)練數(shù)據(jù)將會(huì)被遍歷nb_epoch次。Keras中nb開頭的變量均為"number of"的意思

5. verbose:日志顯示,0為不在標(biāo)準(zhǔn)輸出流輸出日志信息,1為輸出進(jìn)度條記錄,2為每個(gè)epoch輸出一行記錄

6. callbacks:list,其中的元素是keras.callbacks.Callback的對(duì)象。這個(gè)list中的回調(diào)函數(shù)將會(huì)在訓(xùn)練過程中的適當(dāng)時(shí)機(jī)被調(diào)用,參考回調(diào)函數(shù)

7. validation_split:0~1之間的浮點(diǎn)數(shù),用來指定訓(xùn)練集的一定比例數(shù)據(jù)作為驗(yàn)證集。驗(yàn)證集將不參與訓(xùn)練,并在每個(gè)epoch結(jié)束后測試的模型的指標(biāo),如損失函數(shù)、精確度等。

8. validation_data:形式為(X,y)或(X,y,sample_weights)的tuple,是指定的驗(yàn)證集。此參數(shù)將覆蓋validation_spilt。

9. shuffle:布爾值,表示是否在訓(xùn)練過程中每個(gè)epoch前隨機(jī)打亂輸入樣本的順序。

10. class_weight:字典,將不同的類別映射為不同的權(quán)值,該參數(shù)用來在訓(xùn)練過程中調(diào)整損失函數(shù)(只能用于訓(xùn)練)。該參數(shù)在處理非平衡的訓(xùn)練數(shù)據(jù)(某些類的訓(xùn)練樣本數(shù)很少)時(shí),可以使得損失函數(shù)對(duì)樣本數(shù)不足的數(shù)據(jù)更加關(guān)注。

11. sample_weight:權(quán)值的numpy array,用于在訓(xùn)練時(shí)調(diào)整損失函數(shù)(僅用于訓(xùn)練)。可以傳遞一個(gè)1D的與樣本等長的向量用于對(duì)樣本進(jìn)行1對(duì)1的加權(quán),或者在面對(duì)時(shí)序數(shù)據(jù)時(shí),傳遞一個(gè)的形式為(samples,sequence_length)的矩陣來為每個(gè)時(shí)間步上的樣本賦不同的權(quán)。這種情況下請(qǐng)確定在編譯模型時(shí)添加了sample_weight_mode='temporal'。

fit函數(shù)返回一個(gè)History的對(duì)象,其History.history屬性記錄了損失函數(shù)和其他指標(biāo)的數(shù)值隨epoch變化的情況,如果有驗(yàn)證集的話,也包含了驗(yàn)證集的這些指標(biāo)變化情況。

保存模型結(jié)構(gòu)、訓(xùn)練出來的權(quán)重、及優(yōu)化器狀態(tài)

keras 的 callback參數(shù)可以幫助我們實(shí)現(xiàn)在訓(xùn)練過程中的適當(dāng)時(shí)機(jī)被調(diào)用。實(shí)現(xiàn)實(shí)時(shí)保存訓(xùn)練模型以及訓(xùn)練參數(shù)。

?
1
2
3
4
5
6
7
8
9
keras.callbacks.ModelCheckpoint(
 filepath,
 monitor='val_loss',
 verbose=0,
 save_best_only=False,
 save_weights_only=False,
 mode='auto',
 period=1
)

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

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

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

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

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

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

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

當(dāng)驗(yàn)證損失不再繼續(xù)降低時(shí),如何中斷訓(xùn)練?當(dāng)監(jiān)測值不再改善時(shí)中止訓(xùn)練

用EarlyStopping回調(diào)函數(shù)

?
1
2
3
4
5
6
7
8
from keras.callbacksimport EarlyStopping
 
keras.callbacks.EarlyStopping(
 monitor='val_loss',
 patience=0,
 verbose=0,
 mode='auto'
)

model.fit(X, y, validation_split=0.2, callbacks=[early_stopping])

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

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

3. verbose:信息展示模式

4. mode:‘auto',‘min',‘max'之一,在min模式下,如果檢測值停止下降則中止訓(xùn)練。在max模式下,當(dāng)檢測值不再上升則停止訓(xùn)練。

學(xué)習(xí)率動(dòng)態(tài)調(diào)整1

keras.callbacks.LearningRateScheduler(schedule)

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

也可以讓keras自動(dòng)調(diào)整學(xué)習(xí)率

?
1
2
3
4
5
6
7
8
9
10
keras.callbacks.ReduceLROnPlateau(
 monitor='val_loss',
 factor=0.1,
 patience=10,
 verbose=0,
 mode='auto',
 epsilon=0.0001,
 cooldown=0,
 min_lr=0
)

1. monitor:被監(jiān)測的量

2. factor:每次減少學(xué)習(xí)率的因子,學(xué)習(xí)率將以lr = lr*factor的形式被減少

3. patience:當(dāng)patience個(gè)epoch過去而模型性能不提升時(shí),學(xué)習(xí)率減少的動(dòng)作會(huì)被觸發(fā)

4. mode:‘auto',‘min',‘max'之一,在min模式下,如果檢測值觸發(fā)學(xué)習(xí)率減少。在max模式下,當(dāng)檢測值不再上升則觸發(fā)學(xué)習(xí)率減少。

5. epsilon:閾值,用來確定是否進(jìn)入檢測值的“平原區(qū)”

6. cooldown:學(xué)習(xí)率減少后,會(huì)經(jīng)過cooldown個(gè)epoch才重新進(jìn)行正常操作

7. min_lr:學(xué)習(xí)率的下限

當(dāng)學(xué)習(xí)停滯時(shí),減少2倍或10倍的學(xué)習(xí)率常常能獲得較好的效果

學(xué)習(xí)率動(dòng)態(tài)2

?
1
2
3
4
5
6
7
8
9
def step_decay(epoch):
 initial_lrate = 0.01
 drop = 0.5
 epochs_drop = 10.0
 lrate = initial_lrate * math.pow(drop,math.floor((1+epoch)/epochs_drop))
 return lrate
lrate = LearningRateScheduler(step_decay)
sgd = SGD(lr=0.0, momentum=0.9, decay=0.0, nesterov=False)
model.fit(train_set_x, train_set_y, validation_split=0.1, nb_epoch=200, batch_size=256, callbacks=[lrate])

如何記錄每一次epoch的訓(xùn)練/驗(yàn)證損失/準(zhǔn)確度?

Model.fit函數(shù)會(huì)返回一個(gè) History 回調(diào),該回調(diào)有一個(gè)屬性history包含一個(gè)封裝有連續(xù)損失/準(zhǔn)確的lists。代碼如下:

hist = model.fit(X, y,validation_split=0.2)
print(hist.history)

Keras輸出的loss,val這些值如何保存到文本中去

Keras中的fit函數(shù)會(huì)返回一個(gè)History對(duì)象,它的History.history屬性會(huì)把之前的那些值全保存在里面,如果有驗(yàn)證集的話,也包含了驗(yàn)證集的這些指標(biāo)變化情況,具體寫法

?
1
2
3
hist=model.fit(train_set_x,train_set_y,batch_size=256,shuffle=True,nb_epoch=nb_epoch,validation_split=0.1)
with open('log_sgd_big_32.txt','w') as f:
 f.write(str(hist.history))

示例,多個(gè)回調(diào)函數(shù)用逗號(hào)隔開

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# checkpoint
checkpointer = ModelCheckpoint(filepath="./checkpoint.hdf5", verbose=1)
# learning rate adjust dynamic
lrate = ReduceLROnPlateau(min_lr=0.00001)
 
answer.compile(optimizer='rmsprop', loss='categorical_crossentropy',
    metrics=['accuracy'])
# Note: you could use a Graph model to avoid repeat the input twice
answer.fit(
 [inputs_train, queries_train, inputs_train], answers_train,
 batch_size=32,
 nb_epoch=5000,
 validation_data=([inputs_test, queries_test, inputs_test], answers_test),
 callbacks=[checkpointer, lrate]
)

keras回調(diào)函數(shù)中的Tensorboard

?
1
2
3
4
5
6
7
keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq=0,
   write_graph=True, write_images=True)
 
tbCallBack = keras.callbacks.TensorBoard(log_dir='./Graph', histogram_freq=0, write_graph=True, write_images=True)
...
model.fit(...inputs and parameters..., callbacks=[tbCallBack])
tensorboard --logdir path_to_current_dir/Graph

或者

?
1
2
3
4
5
6
7
8
9
10
11
from keras.callbacks import TensorBoard
 
tensorboard = TensorBoard(log_dir='./logs', histogram_freq=0,
       write_graph=True, write_images=False)
# define model
model.fit(X_train, Y_train,
   batch_size=batch_size,
   epochs=nb_epoch,
   validation_data=(X_test, Y_test),
   shuffle=True,
   callbacks=[tensorboard])

補(bǔ)充知識(shí):Keras中的回調(diào)函數(shù)(callback)的使用與介紹

以前我在訓(xùn)練的時(shí)候,都是直接設(shè)定一個(gè)比較大的epoch,跑完所有的epoch之后再根據(jù)數(shù)據(jù)去調(diào)整模型與參數(shù)。這樣做會(huì)比較耗時(shí),例如說訓(xùn)練在某一個(gè)epoch開始已經(jīng)過擬合了,后面繼續(xù)訓(xùn)練意義就不大了。

在書上看到的callback函數(shù)很好的解決了這個(gè)問題,它能夠監(jiān)測訓(xùn)練過程中的loss或者acc這些指標(biāo),一旦觀察到損失不再改善之后,就可以中止訓(xùn)練,節(jié)省時(shí)間。下面記錄一下

介紹:

(選自《python深度學(xué)習(xí)》)

回調(diào)函數(shù)(callback)是在調(diào)用fit時(shí)傳入模型的一個(gè)對(duì)象,它在訓(xùn)練過程中的不同時(shí)間點(diǎn)都會(huì)被模型調(diào)用。它可以訪問關(guān)于模型狀態(tài)與性能的所有可用數(shù)據(jù),還可以采取行動(dòng):中斷訓(xùn)練、保存模型、加載一組不同的權(quán)重或改變模型的狀態(tài)。

部分回調(diào)函數(shù):

1.ModelCheckpoint與EarlyStopping

監(jiān)控目標(biāo)若在指定輪數(shù)內(nèi)不再改善,可利用EarlyStopping來中斷訓(xùn)練。

可配合ModelCheckpoint使用,該回調(diào)函數(shù)可不斷地保存模型,亦可以只保存某一epoch最佳性能模型

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import keras
callbacks_list=[
 keras.callbacks.EarlyStopping(
  monitor='acc',#監(jiān)控精度
  patience=5,#5輪內(nèi)不改善就中止
),
 keras.callbacks.ModelCheckpoint(
  filepath='C:/apple/my_model.h5',#模型保存路徑
  monitor='val_loss',#檢測驗(yàn)證集損失值
  save_best_only=True#是否只保存最佳模型
 )
]
model.compile(optimizer='rmsprop',
    loss='binary_crossentropy',
    metrics=['acc'])
model.fit(x,y,
   epochs=10,
   batch_size=32,
   callbacks=callbacks_list,#在這里放入callback函數(shù)
   validation_data=(x_val,y_val)
 )

2.ReduceLROnPlateau回調(diào)函數(shù)

如果驗(yàn)證損失不再改善,可以使用該回調(diào)函數(shù)來降低學(xué)習(xí)率。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import keras
 
callbacks_list=[
 keras.callbacks.ReduceLROnPlateau(
  monitor='val_loss',#監(jiān)控精度
  patienece=5, # 5輪內(nèi)不改善就改變
  factor=0.1#學(xué)習(xí)率變?yōu)樵瓉淼?.1
)
]
model.compile(optimizer='rmsprop',
    loss='binary_crossentropy',
    metrics=['acc'])
model.fit(x,y,
   epochs=10,
   batch_size=32,
   callbacks=callbacks_list,#在這里放入callback函數(shù)
   validation_data=(x_val,y_val)
 )

以上這篇基于keras中的回調(diào)函數(shù)用法說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://blog.csdn.net/jiandanjinxin/article/details/77097910

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 精品精品 | 久热久热 | 台湾黄网 | 久久99视频| 激情综合网五月婷婷 | 日韩精品一区二区三区在线播放 | 欧美色影院 | 国产午夜精品久久久久久久 | 亚洲综合视频 | 亚洲日本中文字幕 | www.一区| 午夜免费视频 | 一区视频在线播放 | 亚洲狼人色 | 婷婷色av| 久久懂色精品99综一区合 | 成人片网址| 亚洲精品久久 | 午夜视频网 | 欧美精品一区二区在线观看 | 国产精品久久久久久久久久ktv | 亚洲一区二区美女 | 婷婷五月色综合香五月 | 亚洲一区中文字幕在线观看 | 欧美日韩国产精品 | 日韩精品一区二区三区在线 | 黄色成人影视 | 亚洲综合精品 | 免费三级网站 | 一区在线观看 | 中文字幕精品视频 | 日日色视频 | 黄色小网站在线观看 | 久久伊人久久 | 日本久久久 | 色猫猫国产区一区二在线视频 | 不卡一二三区 | 国产综合在线播放 | 亚洲 中文 欧美 日韩 在线观看 | 日韩小视频在线观看 | 午夜一级片 |