采用MLP(多层感知机)模型进行mnist分类任务,尝试Adam、Dropout等训练策略。
本文的完整代码托管在我的Github PnYuan - Practice-of-Machine-Learning - MNIST_tensorflow_demo,欢迎交流。
1.任务背景
在前一篇深度学习基础 - MNIST实验(tensorflow+Softmax)的基础上,我们进一步引入MLP(multi-layer perceptron - 多层感知机)来进行mnist实验,以期实现更好的识别效果。
关于mnist数据集的相关基础信息可参考前一篇文章或MNIST官网。
2.实验过程
2.1.MLP建模
这里,MLP用于MNIST分类实验,输入是x - 28×28=784
的图片灰度向量,输出是类别标签y ~ [0,1,2,...,9]
,拟构建的MLP(全连接NN)模型如下图示:
这里我们从一个无隐含层模型(即Softmax)开始,逐渐增加神经网络规模,来观察效果变化情况。
为适应任意层数和层内神经元节点数的开发需求,编写参数初始化和前向传播函数如下:
'''(MLP) parameter initial'''
def mlp_param_init(dim):
"""
@note: Initializes parameters to