mnist手写字体识别非常适合初学者,可以通过少量的代码来了解神经网络的基本过程。
代码如下:
# encoding:utf-8
from keras.datasets import mnist
from keras import models
from keras import layers
from keras.utils import to_categorical
# 加载数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data()
print(x_train.shape)
# 创建模型
network = models.Sequential()
network.add(layers.Dense(512, activation='relu', input_shape=(28*28,)))
network.add(layers.Dense(10, activation='softmax'))
# 编译
network.compile(optimizer='rmsprop',
loss='categorical_crossentropy', # 交叉熵损失函数
metrics=['accuracy'])
# 将输入数据从[0, 255]转化为[0, 1]
x_train = x_train.reshape((60000, 28*28))
x_train = x_train.astype('float32') / 255
x_test = x_test.reshape((10000, 28*28))
x_test = x_test.astype('float32') / 255
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
# 使用训练集训练模型
network.fit(x_train, y_train, batch_size=128, epochs=5)
# 使用测试集评估模型
test_loss, test_acc = network.evaluate(x_test, y_test)
print('test_acc:', test_acc, 'test_loss', test_loss)
# 观察结果:acc精度越高越好,loss损失值越小越好