在python中,基于Keras和Tensorflow构建全连连接神经网络(实现Mnist手写体识别),请给出详细的代码
时间: 2024-04-30 13:22:18 浏览: 77
以下是一个示例代码,用于基于 Keras 和 Tensorflow 构建全连连接神经网络,并实现 Mnist 手写体识别。
```Python
import tensorflow as tf
from keras.models import Sequential
from keras.layers import Dense, Flatten
from keras.datasets import mnist
from keras.utils import np_utils
# 加载 Mnist 数据集
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# 数据处理
X_train = X_train.reshape(X_train.shape[0], 28 * 28).astype('float32') / 255
X_test = X_test.reshape(X_test.shape[0], 28 * 28).astype('float32') / 255
y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
# 建立神经网络
model = Sequential()
model.add(Dense(units=512, input_shape=(28 * 28,), activation='relu'))
model.add(Dense(units=10, activation='softmax'))
# 编译模型
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# 训练模型
model.fit(X_train, y_train, epochs=20, batch_size=128, verbose=1, validation_data=(X_test, y_test))
# 评估模型
score = model.evaluate(X_test, y_test, verbose=0)
print('Test accuracy:', score[1])
```
在这个示例代码中,我们首先加载 Mnist 数据集,并对数据进行处理,将每一个手写数字的图像转换为 28 * 28 的像素矩阵,并将像素值标准化到 [0, 1] 的范围内。
接着,我们建立了一个全连连接神经网络模型,该模型由两个密集层组成,第一个层具有 512 个神经元,采用 ReLU 激活函数,第二个层由 10 个神经元组成,采用 softmax 激活函数。在编译模型时,我们使用分类交叉熵作为损失函数,Adam 优化器作为优化器,并监视模型的准确性指标。
最后,我们训练模型,并评估模型的准确性。
请注意,此代码仅供参考,您可以根据自己的需求进行改进和优化。
阅读全文