神经网络训练MNIST数据集代码
时间: 2023-07-29 22:13:54 浏览: 141
神经网络是一种强大的分类器,可以用于许多机器学习任务,包括MNIST数据集的分类。下面是使用Python和Keras库训练MNIST数据集的神经网络分类器的代码示例:
```python
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.utils import np_utils
# 加载MNIST数据集
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# 将图像数据转换为一维向量
num_pixels = X_train.shape[1] * X_train.shape[2]
X_train = X_train.reshape(X_train.shape[0], num_pixels).astype('float32')
X_test = X_test.reshape(X_test.shape[0], num_pixels).astype('float32')
# 对图像数据进行归一化
X_train = X_train / 255
X_test = X_test / 255
# 对标签数据进行one-hot编码
y_train = np_utils.to_categorical(y_train)
y_test = np_utils.to_categorical(y_test)
num_classes = y_test.shape[1]
# 创建神经网络模型
model = Sequential()
model.add(Dense(num_pixels, input_dim=num_pixels, kernel_initializer='normal', activation='relu'))
model.add(Dense(num_classes, kernel_initializer='normal', activation='softmax'))
# 编译神经网络模型
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# 训练神经网络模型
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=200, verbose=2)
# 在测试集上进行评估
scores = model.evaluate(X_test, y_test, verbose=0)
print("Accuracy: %.2f%%" % (scores[1]*100))
```
在上面的代码中,我们使用Keras库加载MNIST数据集,并对图像数据进行预处理,包括将图像数据转换为一维向量和归一化处理。然后,我们对标签数据进行one-hot编码。接着,我们创建一个简单的神经网络模型,包括一个输入层、一个隐藏层和一个输出层。我们使用`Dense`函数来定义网络层,并使用`relu`和`softmax`激活函数。然后,我们使用`compile`函数来编译神经网络模型,并指定损失函数、优化器和评估指标。接着,我们使用`fit`函数来训练神经网络模型,并指定训练集、测试集、迭代次数和批量大小等参数。最后,我们使用`evaluate`函数在测试集上对模型进行评估,并输出准确率。需要注意的是,我们可以通过调整神经网络模型的超参数,如神经元数量、层数、学习率等,以获得更好的性能。
阅读全文