TensorFlow笔记——关于MNIST数据的一个简单的例子

这篇博客介绍了一个使用TensorFlow进行MNIST手写数字识别的简单例子。程序会下载MNIST数据,建立输入输出占位符,定义线性模型参数,计算损失函数并使用梯度下降进行优化。在测试集上,模型的准确率达到了约0.91。
摘要由CSDN通过智能技术生成

这个程序参考自极客学院

from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf

# MNIST数据存放的路径
file = "./MNIST"

# 导入数据
mnist = input_data.read_data_sets(file, one_hot=True)

# 模型的输入和输出
x = tf.placeholder(tf.float32, shape=[None, 784])
y_ = tf.placeholder(tf.float32, shape=[None, 10])

# 模型的权重和偏移量
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

# 创建Session
sess = tf.InteractiveSession()
# 初始化权重变量
sess.run(tf.global_variables_initializer())

y = tf.nn.softmax(tf.matmul(x, W) + b)

# 交叉熵
cross_entropy = -tf.reduce_sum(y_*tf.log(y))

# 训练
train_step = tf.train.GradientDescentOptimizer(0.01).minimize(cross_entropy)
for i in range(1000):
    batch = mnist.train.next_batch(50)
    train_step.run(feed_dict={x: batch[0], y_: batch[1]})

# 测试
correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(y_, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print(sess.run(accuracy, feed_dict={x: mnist.test.images, y_:mnist.test.labels}))

注释:

# MNIST数据存放的路径
file = "./MNIST"
# 导入数据
mnist = input_data.read_data_sets(file, one_hot=True)

将下载MNIST数据到./MNIST/文件夹下,此过程可能会由于网络问题而出错。建议自己从MNIST官网下载。将下载好的文件放到上述路径下即可。input_data.read_data_sets()函数可以自动检测指定目录下是否存在MNIST数据,如果存在,就不会下载了。

# 模型的输入和输出
x = tf.placeholder(tf.float32, shape=[None, 784])
y_ = tf.placeholder(tf.float32, shape=[None, 10])

这里xy不是特定的值。它们是表示输入和输出的占位符,可以在进行计算的时候进行赋值。

模型的输入x是一个 2 维的浮点数张量。它的大小为shape=[None, 784],其中 784 是一张展平的MNIST图片的维度。None表示其值不固定。输出y_也是一个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值