《学习Tensorflow》——MNIST手写数字识别

一直想接触一点深度学习的东西,但是都没有去了解。最近尝试玩一玩Tensorflow,然后试了一下自带的手写数字识别example

实验平台:Win10 + PyCharm 2016.3.2 + Anaconda 3 + Python 3.5 + CUDA 8.0.44(GTX950) + cudnn5 + Tensorflow 1.0.0

先放代码:

# -*- coding: utf-8 -*-
import tensorflow as tf
import tensorflow.examples.tutorials.mnist.input_data as input_data

# 尝试下载数据包
mnist = input_data.read_data_sets('MNIST_data/', one_hot=True)

# y_actual = W * x + b
x = tf.placeholder(tf.float32, [None, 784])                 # 占位符
y_actual = tf.placeholder(tf.float32, shape=[None, 10])     # 占位符(实际值)
W = tf.Variable(tf.zeros([784, 10]))                        # 初始化权值W
b = tf.Variable(tf.zeros([10]))                             # 初始化偏置b

# 建立抽象模型
y_predict = tf.nn.softmax(tf.matmul(x, W) + b)              # 加权变换并进行softmax回归,得到预测值
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_actual * tf.log(y_predict), reduction_indices=1))   # 求交叉熵
train = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)     # 用梯度下降法使得残差最小

# 建立测试训练模型
correct_prediction = tf.equal(tf.argmax(y_predict, 1), tf.argmax(y_actual, 1))  # 若预测值与实际值相等则返回boolen值1,不等为0
accuracy = tf.reduce_mean(tf.cast(correct_prediction, 'float'))                 # 将返回的beelen数组转换为float类型,并求均值,即得到准确度

# 初始化所有变量
init = tf.initialize_all_variables()

# 在一切操作之后,都用sess来run它们
with tf.Session() as sess:
    sess.run(init)

    for i in range(1000):       # 训练阶段,迭代1000次
        batch_xs, batch_ys = mnist.train.next_batch(100)        # 按批次训练,每批100行数据
        # 执行训练(此处为占位符x, y_actual载入数据,然后使用配置好的train来训练)
        sess.run(train, feed_dict={x: batch_xs, y_actual: batch_ys})

        if i % 100 == 0:        # 每训练100次,测试一次
            print("accuracy:", sess.run(accuracy, feed_dict={x: mnist.test.images, y_actual: mnist.test.labels}))

上述代码只是训练的,正确率大概在91.83%。
代码mnist = input_data.read_data_sets('MNIST_data/', one_hot=True),该函数中会获取以下几个数据包:

  TRAIN_IMAGES = 'train-images-idx3-ubyte.gz'
  TRAIN_LABELS = 'train-labels-idx1-ubyte.gz'
  TEST_IMAGES = 't10k-images-idx3-ubyte.gz'
  TEST_LABELS = 't10k-labels-idx1-ubyte.gz'
当然获取地址为:http://yann.lecun.com/exdb/mnist/,所以,如果你下载好了就按照指定的路径存放就可以了,代码不会再去download
上述imageslabels数据包是按照一定格式存储的文件,可以用WinHex来查看。我自己转换了图片或文本格式的方便观察(如下所示),点击此处


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值