In [0]:
import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.optimizers import SGD
import tensorflow as tf
import matplotlib.pyplot as plt
import numpy

x = np.array([[1,0,0,0], [0,0,0,1], [0,0,1,0],[0,0,1,0],
              [0,1,0,1], [0,1,1,0], [0,1,1,1], [1,0,1,1],
              [1,1,0,1], [1,1,1,0], [1,0,1,1], [0,0,1,1]])
y = np.array([[1,0,0,0],[1,0,0,0],[1,0,0,0],[1,0,0,0],
              [0,1,0,0],[0,1,0,0],[0,0,1,0],[0,0,1,0],
              [0,0,1,0],[0,0,1,0],[0,0,1,0],[0,1,0,0]])


model = Sequential()
model.add(Dense(4, input_shape=(4,)))
model.add(Activation('relu'))
model.add(Dense(4))
model.add(Activation('softmax'))
model.compile(loss='binary_crossentropy', optimizer='adam',metrics=['categorical_accuracy'])

history = model.fit(x,y, epochs=5000, batch_size=15, verbose=0)

# summarize history for accuracy
plt.plot(history.history['categorical_accuracy'],)
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('epoch')
plt.legend(['train'], loc='upper left')
plt.show()
# summarize history for loss
plt.plot(history.history['loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('epoch')
plt.legend(['train'], loc='upper left')
plt.show()
#x2 = np.array([[0,0,0,0], [1,1,1,1], [0,0,1,0],[0,1,0,0]])
#np.around(model.predict(x2))
print model.summary()
loss_and_metrics = model.evaluate(x, y)
print loss_and_metrics
np.around(model.predict(x))


_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_5 (Dense)              (None, 4)                 20        
_________________________________________________________________
activation_5 (Activation)    (None, 4)                 0         
_________________________________________________________________
dense_6 (Dense)              (None, 4)                 20        
_________________________________________________________________
activation_6 (Activation)    (None, 4)                 0         
=================================================================
Total params: 40
Trainable params: 40
Non-trainable params: 0
_________________________________________________________________
None
12/12 [==============================] - 0s 7ms/step
[0.021724283695220947, 1.0]
Out[0]:
array([[1., 0., 0., 0.],
       [1., 0., 0., 0.],
       [1., 0., 0., 0.],
       [1., 0., 0., 0.],
       [0., 1., 0., 0.],
       [0., 1., 0., 0.],
       [0., 0., 1., 0.],
       [0., 0., 1., 0.],
       [0., 0., 1., 0.],
       [0., 0., 1., 0.],
       [0., 0., 1., 0.],
       [0., 1., 0., 0.]], dtype=float32)