使用mnist数据集实现手写数字识别

本文介绍了如何使用mnist数据集,通过建立单隐层神经网络模型,结合softmax函数实现手写数字的多分类识别。内容涵盖了模型构建和训练过程,其中数据预处理涉及将28*28像素的图片展开为784维特征,训练采用随机梯度下降。最终通过测试集评估模型的准确率。

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

    mnist数据集中数字是0到9,要求实现多分类,需要使用softmax函数。此次实现单隐层神经网络即只有一个输入层和一个输出层的神经网络来训练并实现手写数字识别。

    softmax只作用在输出层,要求输出层输出一个1*10维的向量,向量中每一个元素的位置代表相应的0到9数字,而元素值代表是该数字的概率。

    实现手写数字识别分为两步,第一步是建立神经网络模型,第二步是运行该模型。

    mnist中图片是28*28维的,展开来就是784个特征值,mnist.train.images()得到的是60000*784维的向量,由于使用随机梯度下降来实现反向传播,所以需要将每一次回归的输入向量是None*784维的向量,而参数w和b,使用0来初始化。每一次的回归运算都会得到更新过后的参数,在进行了N次回归即N次训练之后,得到了最新的参数,再根据最新的参数来输入测试集的所有数据来进行测试并计算正确率。

from tensorflow.examples.tutorials.mnist import input_data
mnist=input_data.read_data_sets('./MNIST_data/',one_hot=True)
import tensorflow as tf
X=tf.placeholder("float",[None,784])
W=tf.Variable(tf.zeros([784,10]))
b=tf.Variable(tf.zeros([10]))
y_hat=tf.nn.softmax(tf.matmul(X,W)+b)
y=tf.placeholder("float",[None,10])
loss=-tf.reduce_sum(y*tf.log(y_hat))
train=tf.train.GradientDescentOptimizer(0.01).minimize(loss)
init=tf.initialize_all_variables()
session=tf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值