MNIST神经网络搭建,以及准确率提高方式

学习了从一个只含有一层的mnist的网络,怎么使得其训练的准确率得到提高:
基础的构建是输入为784个节点,输出为10个节点,准确率为0.92
方式1.
添加隐层,其中注意的是,隐藏的添加,要根据小于784的节点来设置(700,600,500,400,300,350)其中隐层节点为400的时候,其准确率为0.758。

其中最需要注意的是,前向传播结构第二层为隐藏层输出y1与参数w2  矩阵相乘加上偏置,得到输出y。由于输出y要经过softmax函数,固就不需要激活。但前面一层输出的结果一定要需要激活。

方式2. 

再加了隐层的基础上,把原来数据初始化的方式进行相应的改变,从zeros()改为random_normal()生成正态随机数的方式,其准确率变为0.9467

方式3.

激活函数的改变,由这次mnist数据集,其sigmoid作为激活函数的准确率要略微的高于relu函数

方式4

给权重加正则,再加正则的时候,遇到了一些问题

比如Failed to convert object of type <class ‘function’> to Tensor

《MNIST神经网络搭建,以及准确率提高方式》

这是因为在对权重加正则的时候要指明对哪个地方添加。tf.add_to_collection(“losses”, tf.contrib.layers.l2_regularizer(0.0001)(w1)),权重添加正确,其相应的准确率变为0.95左右。在此次数据中,l2正则比l1正则表现的得更好。

方式5:增加学习率

学习率的设置相对简单

learning_rate = tf.train.exponential_decay(
    LEARNING_RATE_BASE,
    global_step,
    mnist.train.num_examples/BATCH_SIZE,
    LEARNING_RATE_DECAY,

    staircase = True/False)

LEARNING_RATE_BASE=0.9,LEARNING_RATE_DECAY=0.99

global_step=tf.Variable(0,trainable = False),其准确率就会达到98%以上

    原文作者:winnertakeall
    原文地址: https://blog.csdn.net/winnertakeall/article/details/80309292
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞