用tensorflow写一个对数据集mnist进行分类的程序
时间: 2023-05-11 09:01:56 浏览: 113
好的,以下是一个用 TensorFlow 实现对 MNIST 数据集进行分类的程序:
```
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
# 加载数据集
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
# 定义输入和输出的占位符
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]))
y = tf.nn.softmax(tf.matmul(x, W) + b)
# 定义损失函数和优化器
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
# 训练模型
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
for i in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
# 评估模型
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}))
```
这个程序使用了 TensorFlow 的高级 API,可以在几行代码内实现一个简单的神经网络。它的基本思路是,将输入的 28x28 的图像展开成一个 784 维的向量,然后使用一个全连接层将其映射到一个 10 维的输出向量,最后使用 softmax 函数将输出向量转换为概率分布。损失函数使用交叉熵,优化器使用梯度下降算法。在训练过程中,每次从训练集中随机抽取一批数据进行训练,直到达到指定的迭代次数。最后,使用测试集对模型进行评估,输出分类的准确率。
阅读全文