from keras.datasets import mnist
from keras.utils import np_utils
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Flatten
from keras.regularizers import l2
(x_train, y_train), (x_test, y_test) = mnist.load_data()
num_classes = len(np.unique(y_test))
y_train = np_utils.to_categorical(y_train, num_classes)
y_test = np_utils.to_categorical(y_test, num_classes)
w_regularizer = l2(10**-5)
b_regularizer = None
b_regularizer = l2(10**-5)
model = Sequential()
model.add(Flatten(input_shape=((28,28))))
model.add(Dense(50, input_dim=28*28, activation='relu',
W_regularizer=w_regularizer, b_regularizer=b_regularizer))
model.add(Dense(50, activation='relu',
W_regularizer=w_regularizer, b_regularizer=b_regularizer))
model.add(Dense(10, activation='softmax',
W_regularizer=w_regularizer, b_regularizer=b_regularizer))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop')
# fit data
nb_epoch = 10
hist = model.fit(x_train[:100], y_train[:100], batch_size=256, nb_epoch=nb_epoch,
validation_split=0.2)