tensorflow mnist人工神经网络
时间: 2023-07-09 18:53:11 浏览: 126
好的,我可以为您介绍一下使用 TensorFlow 实现 MNIST 手写数字识别的人工神经网络。
首先,我们需要导入 TensorFlow 和 MNIST 数据集:
```python
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
```
接下来,我们可以定义神经网络的结构。在这个例子中,我们使用两个隐藏层,每个隐藏层有 256 个神经元。输出层有 10 个神经元,对应于数字 0 到 9。
```python
input_size = 784
hidden_size = 256
output_size = 10
x = tf.placeholder(tf.float32, [None, input_size])
y = tf.placeholder(tf.float32, [None, output_size])
w1 = tf.Variable(tf.truncated_normal([input_size, hidden_size], stddev=0.1))
b1 = tf.Variable(tf.zeros([hidden_size]))
h1 = tf.nn.relu(tf.matmul(x, w1) + b1)
w2 = tf.Variable(tf.truncated_normal([hidden_size, hidden_size], stddev=0.1))
b2 = tf.Variable(tf.zeros([hidden_size]))
h2 = tf.nn.relu(tf.matmul(h1, w2) + b2)
w3 = tf.Variable(tf.truncated_normal([hidden_size, output_size], stddev=0.1))
b3 = tf.Variable(tf.zeros([output_size]))
y_pred = tf.matmul(h2, w3) + b3
```
然后,我们可以定义损失函数和优化器,使用交叉熵作为损失函数,使用梯度下降优化器进行优化。
```python
cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=y_pred))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
```
接下来,我们可以开始训练模型。在每个训练迭代中,我们会从数据集中随机选择一批样本进行训练,然后更新神经网络的参数。
```python
sess = tf.Session()
sess.run(tf.global_variables_initializer())
batch_size = 100
num_epochs = 1000
for epoch in range(num_epochs):
batch_xs, batch_ys = mnist.train.next_batch(batch_size)
sess.run(train_step, feed_dict={x: batch_xs, y: batch_ys})
```
最后,我们可以在测试集上进行测试,计算模型的准确率。
```python
correct_prediction = tf.equal(tf.argmax(y_pred, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print("Accuracy:", sess.run(accuracy, feed_dict={x: mnist.test.images, y: mnist.test.labels}))
```
这就是使用 TensorFlow 实现 MNIST 手写数字识别的人工神经网络的基本过程。
阅读全文