{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"import keras\nimport numpy as np\nimport pandas as pd\nfrom keras.datasets import mnist\nfrom keras.models import Sequential\nfrom keras.layers import Dense\nfrom keras.layers import Dropout\nfrom keras.layers import Flatten\nfrom keras.optimizers import SGD\nfrom keras.optimizers import RMSprop\n\nfrom keras.callbacks import LearningRateScheduler\nfrom keras.callbacks import History\nimport matplotlib.pyplot as plt\nimport seaborn as sns\n%matplotlib inline\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"np.random.seed(5)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"(X_train,y_train),(X_test,y_test)=mnist.load_data()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train=X_train[:5000]\ny_train=y_train[:5000]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_test=X_test[:5000]\ny_test=y_test[:5000]\ncheck_test=y_test","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.imshow(X_train[1],cmap=plt.cm.binary)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"conv_train=X_train\nconv_test=X_test","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train,X_test=X_train/255,X_test/255","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train,X_test=X_train.reshape(5000,784),X_test.reshape(5000,784)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"num_classes=10","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_train=keras.utils.to_categorical(y_train,num_classes)\ny_test=keras.utils.to_categorical(y_test,num_classes)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"epochs=60\nlearning_rate=0.1\ndecay_rate=learning_rate/epochs\nmomentum=0.8\nsgd=SGD(learning_rate=learning_rate,momentum=momentum,decay=decay_rate,nesterov=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"input_dim=X_train.shape[1]\nlr_model=Sequential()\nlr_model.add(Dense(64,activation='relu',kernel_initializer='uniform',input_dim=input_dim))\nlr_model.add(Dropout(0.1))\nlr_model.add(Dense(64,kernel_initializer='uniform',activation='relu'))\nlr_model.add(Dense(num_classes,kernel_initializer='uniform',activation='softmax'))\n\nlr_model.compile(loss='categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"batch_size=int(input_dim/100)\nlr_model_history=lr_model.fit(X_train,y_train,batch_size=batch_size,epochs=epochs,validation_data=(X_test,y_test))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"pred=lr_model.predict_classes(X_test)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_main=pd.read_csv('../input/digit-recognizer/test.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"sample=pd.read_csv('../input/digit-recognizer/sample_submission.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"prediction=lr_model.predict_classes(test_main)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"prediction=pd.DataFrame(prediction)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"prediction['ImageId']=sample['ImageId']\nprediction.columns=['Label','ImageId']","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"prediction=prediction[['ImageId','Label']]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"prediction.to_csv('submission',index=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def acc(y_test,pred):\n    score=[]\n    for i in range(len(pred)):\n        if check_test[i]==pred[i]:\n            score.append(1)\n        else:\n            score.append(0)\n    return sum(score)/len(pred)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"acc(check_test,pred)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"epochs=60\nlearning_rate=0.1\ndecay_rate=0.1\nmomentum=0.8\n\nsgd=SGD(lr=learning_rate,momentum=momentum,decay=decay_rate,nesterov=False)\ninput_dim=X_train.shape[1]\nnum_classes=10\nbatch_size=196\n\n\nexponential_decay_model=Sequential()\nexponential_decay_model.add(Dense(64,activation='relu',kernel_initializer='uniform',\n                                 input_dim=input_dim))\nexponential_decay_model.add(Dropout(0.1))\nexponential_decay_model.add(Dense(64,kernel_initializer='uniform',activation='relu'))\nexponential_decay_model.add(Dense(num_classes,kernel_initializer='uniform',activation='softmax'))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"exponential_decay_model.compile(loss='categorical_crossentropy',optimizer='sgd',metrics=['acc'])\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def exp_decay(epoch):\n    lrate=learning_rate * np.exp(-decay_rate*epoch)\n    return lrate","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"loss_history=History()\nlr_rate=LearningRateScheduler(exp_decay)\ncallbacks_list=[loss_history,lr_rate]\nexponential_decay_history=exponential_decay_model.fit(X_train,y_train,\n                                                      batch_size=batch_size,epochs=300,\n                                                      callbacks=callbacks_list,verbose=1,\n                                                      validation_data=(X_test,y_test))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from keras.layers import Conv2D\nfrom keras.layers import MaxPooling2D\nfrom keras.layers import MaxPool2D","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"conv_train=conv_train.reshape(conv_train.shape[0],28,28,1)\nconv_test=conv_test.reshape(conv_test.shape[0],28,28,1)\ntest_2=test_main.values.reshape(test_main.shape[0],28,28,1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = Sequential()\n\nmodel.add(Conv2D(filters = 32, kernel_size = (5,5),padding = 'Same', \n                 activation ='relu', input_shape = (28,28,1)))\nmodel.add(Conv2D(filters = 32, kernel_size = (5,5),padding = 'Same', \n                 activation ='relu'))\nmodel.add(MaxPool2D(pool_size=(2,2)))\nmodel.add(Dropout(0.25))\n\n\nmodel.add(Conv2D(filters = 64, kernel_size = (3,3),padding = 'Same', \n                 activation ='relu'))\nmodel.add(Conv2D(filters = 64, kernel_size = (3,3),padding = 'Same', \n                 activation ='relu'))\nmodel.add(MaxPool2D(pool_size=(2,2), strides=(2,2)))\nmodel.add(Dropout(0.25))\n\n\nmodel.add(Flatten())\nmodel.add(Dense(256, activation = \"relu\"))\nmodel.add(Dropout(0.5))\nmodel.add(Dense(10, activation = \"softmax\"))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"optimizer = RMSprop(lr=0.001, rho=0.9, epsilon=1e-08, decay=0.0)\nmodel.compile(optimizer = optimizer , loss = \"categorical_crossentropy\", metrics=[\"accuracy\"])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.fit(conv_train,y_train,epochs=20,validation_data=(conv_test,y_test),batch_size=100)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission2=exponential_decay_model.predict_classes(test_main)\nsubmission2=pd.DataFrame(submission2)\nsubmission2['ImageId']=sample['ImageId']\nsubmission2.columns=['Label','ImageId']\nsubmission2=submission2[['ImageId','Label']]\nsubmission2.to_csv('exponential_model_submission.csv',index=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission3=model.predict_classes(test_2)\nsubmission3=pd.DataFrame(submission3)\nsubmission3['ImageId']=sample['ImageId']\nsubmission3.columns=['Label','ImageId']\nsubmission3=submission3[['ImageId','Label']]\nsubmission3.to_csv('conv_model_submission.csv',index=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission2","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_main.values.shape","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":4}