In [125]:
from sklearn.preprocessing import LabelEncoder
from sklearn.cross_validation import train_test_split

In [126]:
from keras.layers import Activation,Dense
from keras.utils.visualize_util import plot
from keras.utils import np_utils
from keras.models import Sequential

In [195]:
inputX = pd.read_csv('train_data.csv',header=None).values
inputY = pd.read_csv('train_label.csv',header=None).values.ravel()

In [185]:
le = LabelEncoder()
inputY = le.fit_transform(inputY)
inputY.shape


Out[185]:
(25000,)

In [186]:
inputY = np_utils.to_categorical(inputY)
inputY.shape


Out[186]:
(25000, 2)

In [187]:
inputX = inputX/255.0
trainX,testX,trainY,testY = train_test_split(inputX,inputY,random_state=4,test_size=0.20)
#trainX = inputX
#trainY = inputY

In [188]:
#keras layers
model = Sequential()
model.add(Dense(output_dim=768,input_dim=1024,activation="relu",name='layer1'))
model.add(Dense(384,activation='relu',name='layer2'))
model.add(Dense(2,activation='softmax',name='output'))

In [189]:
#keras compilation
model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy'])

In [190]:
model.fit(x=trainX,y=trainY,nb_epoch=20,batch_size=128,validation_split=0.1)


Train on 18000 samples, validate on 2000 samples
Epoch 1/20
18000/18000 [==============================] - 7s - loss: 0.7119 - acc: 0.5627 - val_loss: 0.6545 - val_acc: 0.6160
Epoch 2/20
18000/18000 [==============================] - 5s - loss: 0.6627 - acc: 0.5969 - val_loss: 0.6522 - val_acc: 0.6215
Epoch 3/20
18000/18000 [==============================] - 6s - loss: 0.6557 - acc: 0.6121 - val_loss: 0.6493 - val_acc: 0.6205
Epoch 4/20
18000/18000 [==============================] - 6s - loss: 0.6529 - acc: 0.6128 - val_loss: 0.6528 - val_acc: 0.6030
Epoch 5/20
18000/18000 [==============================] - 5s - loss: 0.6468 - acc: 0.6194 - val_loss: 0.6572 - val_acc: 0.5935
Epoch 6/20
18000/18000 [==============================] - 6s - loss: 0.6447 - acc: 0.6257 - val_loss: 0.6509 - val_acc: 0.6220
Epoch 7/20
18000/18000 [==============================] - 5s - loss: 0.6395 - acc: 0.6312 - val_loss: 0.6571 - val_acc: 0.6215
Epoch 8/20
18000/18000 [==============================] - 5s - loss: 0.6357 - acc: 0.6338 - val_loss: 0.6434 - val_acc: 0.6355
Epoch 9/20
18000/18000 [==============================] - 5s - loss: 0.6287 - acc: 0.6438 - val_loss: 0.6682 - val_acc: 0.5890
Epoch 10/20
18000/18000 [==============================] - 5s - loss: 0.6259 - acc: 0.6464 - val_loss: 0.6479 - val_acc: 0.6255
Epoch 11/20
18000/18000 [==============================] - 6s - loss: 0.6254 - acc: 0.6467 - val_loss: 0.6566 - val_acc: 0.6255
Epoch 12/20
18000/18000 [==============================] - 6s - loss: 0.6201 - acc: 0.6536 - val_loss: 0.6474 - val_acc: 0.6240
Epoch 13/20
18000/18000 [==============================] - 5s - loss: 0.6159 - acc: 0.6541 - val_loss: 0.6441 - val_acc: 0.6270
Epoch 14/20
18000/18000 [==============================] - 5s - loss: 0.6124 - acc: 0.6602 - val_loss: 0.6428 - val_acc: 0.6295
Epoch 15/20
18000/18000 [==============================] - 6s - loss: 0.6075 - acc: 0.6634 - val_loss: 0.6425 - val_acc: 0.6260
Epoch 16/20
18000/18000 [==============================] - 6s - loss: 0.6043 - acc: 0.6701 - val_loss: 0.6445 - val_acc: 0.6385
Epoch 17/20
18000/18000 [==============================] - 6s - loss: 0.5976 - acc: 0.6761 - val_loss: 0.6429 - val_acc: 0.6315
Epoch 18/20
18000/18000 [==============================] - 6s - loss: 0.5947 - acc: 0.6802 - val_loss: 0.6582 - val_acc: 0.6310
Epoch 19/20
18000/18000 [==============================] - 6s - loss: 0.5912 - acc: 0.6762 - val_loss: 0.6444 - val_acc: 0.6305
Epoch 20/20
18000/18000 [==============================] - 5s - loss: 0.5913 - acc: 0.6792 - val_loss: 0.6569 - val_acc: 0.6360
Out[190]:
<keras.callbacks.History at 0x151124690>

In [191]:
accuracy = model.evaluate(x=testX,y=testY,batch_size=32)


4704/5000 [===========================>..] - ETA: 0s

In [192]:
print '{0}:{1}'.format(model.metrics_names[1],accuracy[1])


acc:0.6238

In [193]:
# serialize model to JSON
model_json = model.to_json()
with open("model.json", "w") as json_file:
    json_file.write(model_json)
# serialize weights to HDF5
model.save_weights("model.h5")
print("Saved model to disk")


Saved model to disk

In [194]:
plot(model,to_file='model.png',show_shapes=True)

In [ ]: