全连接神经网络来完成手写数字图像识别的代码
时间: 2024-02-18 10:35:03 浏览: 22
下面是一个使用全连接神经网络来完成手写数字图像识别的 Python 代码示例:
```
import numpy as np
import tensorflow as tf
from tensorflow import keras
# 加载 MNIST 数据集
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# 数据预处理
x_train = x_train.reshape((60000, 784)).astype('float32') / 255
x_test = x_test.reshape((10000, 784)).astype('float32') / 255
y_train = keras.utils.to_categorical(y_train)
y_test = keras.utils.to_categorical(y_test)
# 构建模型
model = keras.Sequential([
keras.layers.Dense(512, activation='relu', input_shape=(784,)),
keras.layers.Dropout(0.2),
keras.layers.Dense(10, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=128)
# 在测试集上评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print('Test accuracy:', test_acc)
```
在这个代码中,我们首先加载了 MNIST 数据集,然后对数据进行了预处理,将每个像素点的值都除以了 255,使其变成了 0 和 1 之间的小数。然后,我们定义了一个包含两个全连接层的神经网络模型,其中第一个全连接层有 512 个神经元,使用 relu 激活函数,第二个全连接层有 10 个神经元,使用 softmax 激活函数。我们使用了一个 Dropout 层来防止过拟合。最后,我们使用了 adam 优化器和交叉熵损失函数来编译模型,并在训练集上训练了 10 个 epoch。最后,在测试集上评估了模型的准确率。