In [3]:
import keras
from keras.utils import to_categorical
from keras.layers import Dense, Dropout
from keras.activations import elu, softmax
from keras.losses import categorical_crossentropy
from keras.optimizers import adam
from keras.datasets import mnist

(Xtrain, ytrain), (Xtest, ytest) = mnist.load_data()
ytrain = to_categorical(ytrain, 10)
ytest = to_categorical(ytest, 10)
Xtrain = Xtrain.reshape(Xtrain.shape[0], Xtrain.shape[1]*Xtrain.shape[2])
Xtest = Xtest.reshape(Xtest.shape[0], Xtest.shape[1]*Xtest.shape[2])

Xtrain = Xtrain.astype('float32')
Xtest = Xtest.astype('float32')
Xtrain /= 255
Xtest /= 255

In [4]:
model = keras.models.Sequential()

model.add(Dense(100, input_shape=(28*28, ), activation='elu'))
#model.add(Dropout(0.1))
model.add(Dense(50, activation='elu'))
#model.add(Dropout(0.1))
model.add(Dense(20, activation='elu'))
model.add(Dense(10, activation=softmax))
model.compile(loss=categorical_crossentropy, optimizer=adam(lr=0.0001), metrics=['accuracy'])
model.summary()


_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_1 (Dense)              (None, 100)               78500     
_________________________________________________________________
dense_2 (Dense)              (None, 50)                5050      
_________________________________________________________________
dense_3 (Dense)              (None, 20)                1020      
_________________________________________________________________
dense_4 (Dense)              (None, 10)                210       
=================================================================
Total params: 84,780
Trainable params: 84,780
Non-trainable params: 0
_________________________________________________________________

In [5]:
model.fit(Xtrain, ytrain)
model.evaluate(Xtest, ytest)


Epoch 1/10
60000/60000 [==============================] - 5s - loss: 0.6222 - acc: 0.8318     
Epoch 2/10
60000/60000 [==============================] - 4s - loss: 0.2912 - acc: 0.9171     
Epoch 3/10
60000/60000 [==============================] - 4s - loss: 0.2382 - acc: 0.9315     
Epoch 4/10
60000/60000 [==============================] - 4s - loss: 0.2045 - acc: 0.9407     
Epoch 5/10
60000/60000 [==============================] - 5s - loss: 0.1786 - acc: 0.9492     
Epoch 6/10
60000/60000 [==============================] - 4s - loss: 0.1576 - acc: 0.9547     
Epoch 7/10
60000/60000 [==============================] - 4s - loss: 0.1415 - acc: 0.9593     
Epoch 8/10
60000/60000 [==============================] - 4s - loss: 0.1273 - acc: 0.9637     
Epoch 9/10
60000/60000 [==============================] - 5s - loss: 0.1161 - acc: 0.9667     
Epoch 10/10
60000/60000 [==============================] - 5s - loss: 0.1063 - acc: 0.9697     
 8256/10000 [=======================>......] - ETA: 0s
Out[5]:
[0.11855846570245922, 0.96450000000000002]

In [ ]:


In [ ]: