文章代碼來源:《deep learning on keras》,非常好的一本書,大家如果英語好,推薦直接閱讀該書,如果時間不夠,可以看看此系列文章,文章為我自己翻譯的內容加上自己的一些思考,水平有限,多有不足,請多指正,翻譯版權所有,若有轉載,請先聯系本人。
個人方向為數值計算,日后會向深度學習和計算問題的融合方面靠近,若有相近專業人士,歡迎聯系。
系列文章:
一、搭建屬于你的第一個神經網絡
二、訓練完的網絡去哪里找
三、【keras實戰】波士頓房價預測
四、keras的function API
五、keras callbacks使用
六、機器學習基礎Ⅰ:機器學習的四個標簽
七、機器學習基礎Ⅱ:評估機器學習模型
八、機器學習基礎Ⅲ:數據預處理、特征工程和特征學習
九、機器學習基礎Ⅳ:過擬合和欠擬合
十、機器學習基礎Ⅴ:機器學習的一般流程十一、計算機視覺中的深度學習:卷積神經網絡介紹
十二、計算機視覺中的深度學習:從零開始訓練卷積網絡
十三、計算機視覺中的深度學習:使用預訓練網絡
十四、計算機視覺中的神經網絡:可視化卷積網絡所學到的東西
之前沒有系統學習keras,每次等到程序跑完了,我都會在消息記錄窗口選定后往上狂拖選定,復制,然后建立txt粘貼,再寫一個re來正則匹配所需數據的程序,還覺得自己很機智,看了keras的具體功能以后,簡直無地自容。
我們在model.fit()訓練完以后,其實返回了一個obj,叫做history,保存了訓練過程中的所有數據,接下來通過代碼來講解。
>>> history_dict = history.history
>>> history_dict.keys()
[u'acc', u'loss', u'valacc', u'valloss']
首先將對象里面的history字典存入history_dict,然后查看字典里面的鍵。
接下來試著使用matplotlib來作出之前訓練完的數據的一些圖像。
import matplotlib.pyplot as plt
acc = history.history['acc']
val_acc = history.history['val_acc']
loss = history.history['loss']
val_loss = history.history['val_loss']
epochs = range(1, len(acc) + 1)
# "bo" is for "blue dot"
plt.plot(epochs, loss, 'bo', label='Training loss')
# b is for "solid blue line"
plt.plot(epochs, val_loss, 'b', label='Validation loss')
plt.title('Training and validation loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.show()
前面幾句很容易理解,從history分別將acc,val_acc,loss,val_loss提取出來,加了val前綴的是每個epoche所得到的模型丟測試集得到的結果。
plt.clf() # clear figure
acc_values = history_dict['acc']
val_acc_values = history_dict['val_acc']
plt.plot(epochs, acc, 'bo', label='Training acc')
plt.plot(epochs, val_acc, 'b', label='Validation acc')
plt.title('Training and validation accuracy')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.show()
也不難理解,此時作出的是損失隨訓練epoches的變化
用已經訓練好的模型來預測新的數據
>>> model.predict(x_test)
[ 0.98006207]
[ 0.99758697]
[ 0.99975556]
...,
[ 0.82167041]
[ 0.02885115]
[ 0.65371346]]
返回的值是模型認為這次預測的把握有多大。