MNIST数据集分类简单版本(详细)

import tensorflow as tf
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data
#载入Mnist数据集
mnist=input_data.read_data_sets("MNIST_data",one_hot=True)
batch_size=100
n_batch=mnist.train.num_examples//batch_size #//是整除的意思。计算一共有多少个批次
x=tf.placeholder(tf.float32,[None,784])
y=tf.placeholder(tf.float32,[None,10])

#创建一个简单的神经网络(前向传播)
w=tf.Variable(tf.zeros([784,10]))
b=tf.Variable(tf.zeros([10]))
prediction=tf.nn.softmax(tf.matmul(x,w)+b)

#二次代价函数(反向传播)
loss=tf.reduce_mean(tf.square(y-prediction))
train_step=tf.train.GradientDescentOptimizer(0.2).minimize(loss)
init=tf.global_variables_initializer()

#重点理解这两句,有新东西。
correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))
#tf.argmax(input,axis)根据axis取值的不同返回每行或者每列最大值的索引。axis为1表示取行最大值得索引。
#如果两个值相等,返回TRUE,结果保存的是布尔型的列表
accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
#tf.cast()类似强制类型转换,把布尔型变为32位float型,然后求平均。[1,1,1,0,0,0,1,1,1,1],准确率为0.7

with tf.Session() as sess:
    sess.run(init)
    for epoch in range(21):
        for batch in range(n_batch):
            batch_xs,batch_ys=mnist.train.next_batch(batch_size)
            sess.run(train_step,feed_dict={x:batch_xs,y:batch_ys})
        acc=sess.run(accuracy,feed_dict={x:mnist.test.images,y:mnist.test.labels})
        print("iter"+str(epoch)+",Testing Accuracy"+str(acc))

运行结果
Extracting MNIST_data/train-images-idx3-ubyte.gz
Extracting MNIST_data/train-labels-idx1-ubyte.gz
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
iter0,Testing Accuracy0.8312
iter1,Testing Accuracy0.8706
iter2,Testing Accuracy0.8814
iter3,Testing Accuracy0.888
iter4,Testing Accuracy0.8938
iter5,Testing Accuracy0.8974
iter6,Testing Accuracy0.9
iter7,Testing Accuracy0.9021
iter8,Testing Accuracy0.9033
iter9,Testing Accuracy0.9049
iter10,Testing Accuracy0.906
iter11,Testing Accuracy0.9076
iter12,Testing Accuracy0.9082
iter13,Testing Accuracy0.9091
iter14,Testing Accuracy0.9095
iter15,Testing Accuracy0.9106
iter16,Testing Accuracy0.9111
iter17,Testing Accuracy0.9124
iter18,Testing Accuracy0.9132
iter19,Testing Accuracy0.9132
iter20,Testing Accuracy0.9139
准确率大概在90%,接下来使用卷积神经网络将其准确率提高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值