转自:
https://github.com/xingkongliang/Keras-Tutorials/blob/master/01.mnist_mpl.ipynb
from __future__ import print_function
import numpy as np
np.random.seed(1337) # for reproducibility
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD, Adam, RMSprop
from keras.utils import np_utils
"""
变量初始化
"""
batch_size = 128
nb_classes = 10
nb_epoch = 20
"""
准备数据
"""
# the data, shuffled and split between train and test sets
(X_train, y_train), (X_test, y_test) = mnist.load_data()
X_train = X_train.reshape(60000, 784)
X_test = X_test.reshape(10000, 784)
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
X_train /= 255
X_test /= 255
print(X_train.shape[0], 'train samples')
print(X_test.shape[0], 'test samples')
"""
转换类标号
"""
# convert class vectors to binary class matrices
Y_train = np_utils.to_categorical(y_train, nb_classes)
Y_test = np_utils.to_categorical(y_test, nb_classes)
"""
建立模型
"""
model = Sequential()
model.add(Dense(512, input_shape=(784,)))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(512))
model.add(Activation('relu'))
model.add(Dropout(0.2))
model.add(Dense(10))
model.add(Activation('softmax'))
"""
编译模型
"""
model.compile(loss='categorical_crossentropy',
optimizer=RMSprop(),
metrics=['accuracy'])
"""
迭代训练
"""
history = model.fit(X_train, Y_train,
batch_size=batch_size, nb_epoch=nb_epoch,
verbose=1, validation_data=(X_test, Y_test))
"""
模型评估
"""
score = model.evaluate(X_test, Y_test, verbose=0)
print('Test score:', score[0])
print('Test accuracy:', score[1])
输出
60000 train samples
10000 test samples
Train on 60000 samples, validate on 10000 samples
Epoch 1/20
60000/60000 [==============================] - 25s - loss: 0.2491 - acc: 0.9232 - val_loss: 0.1197 - val_acc: 0.9613
Epoch 2/20
60000/60000 [==============================] - 21s - loss: 0.1038 - acc: 0.9691 - val_loss: 0.0829 - val_acc: 0.9732
Epoch 3/20
60000/60000 [==============================] - 21s - loss: 0.0778 - acc: 0.9765 - val_loss: 0.0758 - val_acc: 0.9772
Epoch 4/20
...