手写数字识别准确率输出

                                                                                                                                            点击此处返回总目录


 

 

【要求】

1. 包含正则化的损失函数。

2. 指数学习衰减率。

3. 滑动平均。

4. 模型支持断点续训功能。也就是,训练如果被中断,再次运行的时候,会找到断点,继续训练。

 

【实现】

整个工程共包括3个文件:

前向传播    mnist_forward.py                         //描述网络结构

后向传播    mnist_backward.py                      //描述网络参数优化方法

测试输出准确率   mnist_test.py                      //复现了计算图中的节点,计算模型在测试数据上的准确率

 

 

//mnist_forward.py

import tensorflow as tf

 

#首先定义了神经网络结构的相关参数
INPUT_NODE = 784                  #神经网络的输入节点是784个。因为输入的是图片像素值,每张图片是28*28=784个像素点。
OUTPUT_NODE = 10                #输出10个数,每个数表示对应的索引号出现的概率。实现了10分类。
LAYER1_NODE = 500               #隐藏层节点的个数

 

def get_weight(shape,regularizer):
    w = tf.Variable(tf.truncated_normal(shape,stddev = 0.1))        #随机生成参数w
    if regularizer !=None:             #如果使用正则化,则将每一个w的正则化损失加入到总损失集合losses
        tf.add_to_collection('losses',tf.contrib.layers.l2_regularizer(regularizer)(w))
    return w    

def get_bias(shape):
    b = tf.Variable(tf.zeros(shape))
    return b


#搭建网络,描述从输入到输出的数据流
def forward(x,regularizer):
    w1 = get_weight([INPUT_NODE,LAYER1_NODE],regularizer)
    b1 = get_bias([LAYER1_NODE])
    y1 = tf.nn.relu(tf.matmul(x,w1)+b1)

    w2 = get_weight([LAYER1_NODE,OUTPUT_NODE],regularizer)
    b

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值