11 學(xué)習(xí)筆記

Keras是一個(gè)極度簡(jiǎn)化、高度模塊化的神經(jīng)網(wǎng)絡(luò)第三方庫(kù)。基于Python+Tensorflow開(kāi)發(fā),充分發(fā)揮了GPU和CPU操作。其開(kāi)發(fā)目的是為了更快的做神經(jīng)網(wǎng)絡(luò)實(shí)驗(yàn)。適合前期的網(wǎng)絡(luò)原型設(shè)計(jì)、支持卷積網(wǎng)絡(luò)和反復(fù)性網(wǎng)絡(luò)以及兩者的結(jié)果、支持人工設(shè)計(jì)的其他網(wǎng)絡(luò)、在GPU和CPU上運(yùn)行能夠無(wú)縫連接。

0. windows用戶如何安裝Keras框架?

用pip方式安裝很簡(jiǎn)單。即打開(kāi)cmd,輸入pip install keras,然后等待安裝完畢即可。會(huì)自動(dòng)安裝需要的組件。

1. 怎么保存Keras模型?

(1) 如果只保存模型結(jié)構(gòu),代碼如下:

#save as JSON
json_string = model.to_json()
# save as YAML
yaml_string = model.to_yaml()
# model reconstruction from JSON:
from keras.modelsimport model_from_json
model = model_from_json(json_string)
 
# model reconstruction from YAML
model =model_from_yaml(yaml_string)

(2) 如果需要保存數(shù)據(jù):

model.save_weights('my_model_weights.h5')  
model.load_weights('my_model_weights.h5')  

(3) 綜合運(yùn)用:

json_string = model.to_json()  
open('my_model_architecture.json','w').write(json_string)  
model.save_weights('my_model_weights.h5')  
   
model = model_from_json(open('my_model_architecture.json').read())  
model.load_weights('my_model_weights.h5')  

2. 為什么訓(xùn)練損失比測(cè)試損失要大?

Keras有兩種模型:訓(xùn)練和測(cè)試。規(guī)則化,比如Dropout和L1/L2,在測(cè)試時(shí)關(guān)閉了。
另外,訓(xùn)練損失是每一次訓(xùn)練batch的平均損失。模型因?yàn)樵跁r(shí)刻變化,最開(kāi)始的batch損失肯定要比最后的batches損失要高。另一方面,每一次epoch損失使用最后的epoch計(jì)算,因此返回的結(jié)果就比較小。

3 如何用Keras處理不適合存放在內(nèi)存中的數(shù)據(jù)集?

Batch trainingusingmodel.train_on_batch(X, y)和model.test_on_batch(X, y)參考文檔:modelsdocumentation
You can also see batch training in action inour CIFAR10example.

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

用EarlyStopping回調(diào)函數(shù),代碼如下:

from keras.callbacksimport EarlyStopping  
early_stopping =EarlyStopping(monitor='val_loss', patience=2)  
model.fit(X, y, validation_split=0.2, callbacks=[early_stopping])  

5 在訓(xùn)練時(shí),數(shù)據(jù)會(huì)被隨機(jī)打亂嗎?

如果model.fit中的參數(shù)suffle=True時(shí),會(huì)隨機(jī)打算每一次epoch的數(shù)據(jù)。(默認(rèn)打亂)
但是驗(yàn)證數(shù)據(jù)默認(rèn)不會(huì)打亂。

6 如何記錄每一次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)  

7 如何讓我的Keras腳本每次產(chǎn)生確定的數(shù)據(jù)?

在引入Kerans之前,引入numpy,并且用其random.seed(種子)產(chǎn)生一個(gè)隨機(jī)數(shù)對(duì)象。這樣在相同硬件的機(jī)器上運(yùn)行時(shí),每次產(chǎn)生的隨機(jī)數(shù)的順序都是一樣的。

import numpyas np  
np.random.seed(1234)  
   
# Keras imports start here  
from kerasimport ... 

原文地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容