手写数字识别准确率输出

本文深入探讨了手写数字识别技术,通过构建和训练模型,详细解析了提高识别准确率的关键步骤。从数据预处理、模型选择到优化策略,全方位展示了提升识别效果的实践方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                                                                                                            点击此处返回总目录


 

 

【要求】

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)
    b2 = get_bias([OUTPUT_NODE])
    y = tf.matmul(y1,w2)+b2                      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值