keras/examples/mnist_nn.py

55 lines
1.6 KiB
Python
Raw Normal View History

2015-04-30 00:17:22 +00:00
from __future__ import absolute_import
from __future__ import print_function
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.regularizers import l2, l1
from keras.constraints import maxnorm
from keras.optimizers import SGD, Adam, RMSprop
2015-05-04 17:31:03 +00:00
from keras.utils import np_utils
import numpy as np
2015-04-30 00:17:22 +00:00
'''
2015-05-04 17:31:03 +00:00
Train a simple deep NN on the MNIST dataset.
2015-04-30 00:17:22 +00:00
'''
2015-05-04 17:31:03 +00:00
batch_size = 64
2015-04-30 00:17:22 +00:00
nb_classes = 10
2015-05-04 03:14:51 +00:00
nb_epoch = 20
2015-04-30 00:17:22 +00:00
2015-05-04 17:31:03 +00:00
np.random.seed(1337) # for reproducibility
2015-04-30 00:17:22 +00:00
# the data, shuffled and split between tran and test sets
2015-05-04 03:14:51 +00:00
(X_train, y_train), (X_test, y_test) = mnist.load_data()
2015-05-04 17:31:03 +00:00
2015-05-04 03:14:51 +00:00
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
2015-04-30 00:17:22 +00:00
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()
2015-05-04 17:31:03 +00:00
model.add(Dense(784, 128))
2015-04-30 00:17:22 +00:00
model.add(Activation('relu'))
2015-05-04 17:31:03 +00:00
model.add(Dropout(0.2))
model.add(Dense(128, 128))
2015-04-30 00:17:22 +00:00
model.add(Activation('relu'))
2015-05-04 17:31:03 +00:00
model.add(Dropout(0.2))
model.add(Dense(128, 10))
2015-04-30 00:17:22 +00:00
model.add(Activation('softmax'))
2015-05-04 03:14:51 +00:00
rms = RMSprop()
model.compile(loss='categorical_crossentropy', optimizer=rms)
2015-04-30 00:17:22 +00:00
2015-05-04 17:31:03 +00:00
model.fit(X_train, Y_train, batch_size=batch_size, nb_epoch=nb_epoch, show_accuracy=True, verbose=2, validation_data=(X_test, Y_test))
score = model.evaluate(X_test, Y_test, show_accuracy=True, verbose=0)
print('Test score:', score[0])
print('Test accuracy:', score[1])