keras第一个例程mnist_mlp.py解读

来源:互联网 发布:51单片机价格 编辑:程序博客网 时间:2024/06/05 20:13

装好keras后,马上运行了例程mnist_mlp.py(multilayer perceptron, 这个是多层神经网络),哇好牛逼,准确率98.4%,但是并不知道自己干了啥。好吧,啃代码。
1. 开头就懵了,数据集在哪呐。
这里写图片描述
好,从这句入手,找到mnist.py,
这里写图片描述
从网上下载了minst.pkl.gz,自己顺手下了下来,解压,打开,,,然而并看不懂。肿么办?
不怕,看这里:机器学习–读取mnist数据集
对于这个数据集的详情也可以参考这里:THE MNIST DATABASE of handwritten digits
2. 接着往下看代码,好多语句都不太清楚对这些数据做了什么。这就需要用到调试了。
这里使用pdb比较方便,参见Python单步调试
举个例子,比如在执行Y_train = np_utils.to_categorical(y_train, nb_classes)
查看y_train和Y_train变量,我们会发现,这条语句是把标签调整为我们所需要的格式啦。如图:
这里写图片描述
这里写图片描述
或者我们也可以使用python自带的logging来调试,也很方便,参见python logging模块使用教程 , Python日志输出——logging模块
3. 后边的自己一步一步执行看一下,并同时结合理论知识学习吧
A. 程序读取数据集并保存到变量(X_train, y_train)和(X_test, y_test)中,其中X_train大小为60000*28*28,y_train为60000*1,X_test为10000*28*28,y_train为10000*1;在预处理中,程序把X_train和X_test分别变形为60000*784和10000*784 (即将每幅图片变为一个向量),并将其数据类型变为float,数据大小由0~255归一化到0~1;将标签变为二进制的向量(比如:5变为[0 0 0 0 0 1 0 0 0 0])
B. 然后就开始添加一些层了,这里添加了Dense全连接层,Activation激活层和Dropout层,具体参见中文文档常用层 ,模型搭建完成后,使用了summary()函数打印出模型概况 。
C. 然后使用compile()配置模型的学习过程,fit()训练模型,evaluate()评估模型的误差。参见 Sequential模型接口 。最后计算的test score是所有损失函数的平均值。
4. 补充
A. 训练过程中显示的ETA:34s 是Expected Time of Arrival的意思。
B. 尝试完mnist_mlp.py,可以再看一看其他的基于mnist数据集的例子,如mnist_cnn.py。

0 0
原创粉丝点击