文章代码来源:《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]]
返回的值是模型认为这次预测的把握有多大。