2.Mnist手写集

MNIST数据集官网 :Yann LeCun’s website

Four files are available on this site:

train-images-idx3-ubyte.gz: training set images (9912422 bytes)
train-labels-idx1-ubyte.gz: training set labels (28881 bytes)
t10k-images-idx3-ubyte.gz: test set images (1648877 bytes)
t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes)

也可以从这里下载:click linkurl


下载下来的数据集被分为两部分:60000行训练数据集(mnist.train) 和 10000行测试数据集(mnist.test)
每一张图片包含2828个像素,展开成一个向量,长度是2828=784,因此在mnist.train.images是一个形状[60000,784]的张量(tensor), mnist.train.labels是一个[60000,10]的数字矩阵

softmax 函数: 这个softmax模型可以用来给不同的对象分配概率。 分类的结果,转化为概率

MNIST手写数字识别简单的版本
import tensorflow as tf
import numpy as np
from tensorflow.examples.tutorials.mnist import input_data

#载入数据
mnist = input_data.read_data_sets("MNIST_data", one_hot=True) # 本地生成这个MNIST_data的文件夹,也可以通过下载下来的数据,放入这个文件夹中
#每个批次的大小
batch_size = 100  # 每次放入100个
#计算一个有多少个批次
n_batch = mnist.train.num_examples // batch_size
#定义两个placeholder
x = tf.placeholder(tf.float32, [None, 784]) # None和批次有关系
y = tf.placeholder(tf.float32, [None, 10]) # 真实的label

#创建一个简单的神经网络
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)

# 准确率(结果存在一个布尔值列表中)
corrent_prediction =tf.equal(tf.argmax(y,1), tf.argmax(prediction, 1))
# tf.argmax 求最大概率的标签的位置  (y是真是样本)  (predictin预测值样本)
# tf.equal 对他们进行比较 (一样的位置 返回true, 不一样的位置返回false)
#求精度 准确率
accuracy = tf.reduce_mean(tf.cast(corrent_prediction, tf.float32))
# tf.cast 是将布尔值进行转化成 true=1.0 false=0.0
# tf.reduce_mean是求平均值  (1 1 1 1 1 1 1 1 1 0 ) = 0.9 (准确率0.9)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    for epoch in range(21):
        for batch in range(n_batch):
            batch_xs, batch_ys = mnist.train.next_batch(batch_size)
            #batch_xs, 保持图片的数据
            #batch_ys 是保持的图片的标签
            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))

iter0,Testing Accuracy0.8311
iter1,Testing Accuracy0.8703
iter2,Testing Accuracy0.8808
iter3,Testing Accuracy0.8878
iter4,Testing Accuracy0.8941
iter5,Testing Accuracy0.897
iter6,Testing Accuracy0.8991
iter7,Testing Accuracy0.902
iter8,Testing Accuracy0.9037
iter9,Testing Accuracy0.9053
iter10,Testing Accuracy0.9064
iter11,Testing Accuracy0.9071
iter12,Testing Accuracy0.9075
iter13,Testing Accuracy0.9091
iter14,Testing Accuracy0.9099
iter15,Testing Accuracy0.9105
iter16,Testing Accuracy0.9108
iter17,Testing Accuracy0.9129
iter18,Testing Accuracy0.9131
iter19,Testing Accuracy0.9133
iter20,Testing Accuracy0.9137

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值