{"cells":[{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport cv2\nimport tensorflow as tf\nimport os","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"data = \"/kaggle/input/Kannada-MNIST/\"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train = pd.read_csv(data+\"train.csv\")\ntest = pd.read_csv(data+\"Dig-MNIST.csv\")\nX = pd.read_csv(data+\"test.csv\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train = train.iloc[:,1:].values\nY_train = train.iloc[:,0].values\nX_test = test.iloc[:,1:].values\nY_test = test.iloc[:,0].values\nID = X.iloc[:,0]\nX = X.iloc[:,1:].values","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train = X_train.reshape([-1,28,28,1])/255.\nX_test = X_test.reshape([-1,28,28,1])/255.\nX = X.reshape([-1,28,28,1])/255.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"X_train = np.append(X_train,X_test,axis=0)\nY_train = np.append(Y_train,Y_test,axis=0)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"print(Y_train.shape)\nprint(Y_test.shape)\nprint(X_train.shape)\nprint(X_test.shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\nplt.imshow(X_train[9][:,:,0])\nY_train[8]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def one_hottie(labels,C):\n    One_hot_matrix = tf.one_hot(labels,C)\n    return tf.keras.backend.eval(One_hot_matrix)\nY_train = one_hottie(Y_train, 10)\nY_test = one_hottie(Y_test, 10)\nprint (\"Y shape: \" + str(Y_train.shape))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = tf.keras.Sequential([\n    tf.keras.layers.Conv2D(64, 1, activation=None,kernel_regularizer=tf.keras.regularizers.l2(0.001), \n                           input_shape=(28,28,1)),\n    tf.keras.layers.BatchNormalization(axis=3),\n    tf.keras.layers.LeakyReLU(0.1),\n    tf.keras.layers.MaxPool2D(strides=2,padding=\"same\"),\n    \n    tf.keras.layers.Conv2D(128, 5, activation=None,padding=\"same\",kernel_regularizer=tf.keras.regularizers.l2(0.001)),\n    tf.keras.layers.BatchNormalization(axis=3),\n    tf.keras.layers.LeakyReLU(0.1),\n    tf.keras.layers.MaxPool2D(strides=2,padding=\"same\"),\n    \n    tf.keras.layers.Conv2D(256, 3, activation=None,kernel_regularizer=tf.keras.regularizers.l2(0.001)),\n    tf.keras.layers.BatchNormalization(axis=3),\n    tf.keras.layers.LeakyReLU(0.1),\n    tf.keras.layers.MaxPool2D(strides=2,padding=\"same\"),\n    \n    tf.keras.layers.Conv2D(64, 3, activation=None,padding=\"same\",kernel_regularizer=tf.keras.regularizers.l2(0.001)),\n    tf.keras.layers.BatchNormalization(axis=3),\n    tf.keras.layers.LeakyReLU(0.1),\n    tf.keras.layers.MaxPool2D(strides=2,padding=\"same\"),\n    \n    tf.keras.layers.Flatten(),\n    tf.keras.layers.Dense(300,kernel_regularizer=tf.keras.regularizers.l2(0.001), activation=None),\n    tf.keras.layers.BatchNormalization(axis=1),\n    tf.keras.layers.LeakyReLU(0.1),\n    tf.keras.layers.Dropout(0.6),\n    tf.keras.layers.Dense(10, kernel_regularizer=tf.keras.regularizers.l2(0.001) ,activation='softmax')\n])\ninitial_learning_rate = 0.001\nlr_schedule = tf.keras.optimizers.schedules.ExponentialDecay(\n    initial_learning_rate,\n    decay_steps=1968,\n    decay_rate=0.1,\n    staircase=True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=lr_schedule),loss=tf.keras.losses.CategoricalCrossentropy(),\n              metrics=['accuracy'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"result = model.fit(x=X_test,y=Y_test,batch_size=64,epochs=30,verbose=1,shuffle=True,initial_epoch=0,\n                   validation_data=(X_train,Y_train))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"result.history.keys()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.plot(result.history['accuracy'], label='train')\nplt.plot(result.history['val_accuracy'], label='valid')\nplt.legend(loc='upper left')\nplt.title('Model accuracy')\nplt.ylabel('Accuracy')\nplt.xlabel('Epoch')\nplt.show()\nplt.plot(result.history['loss'], label='train')\nplt.plot(result.history['val_loss'], label='test')\nplt.legend(loc='upper right')\nplt.title('Model Cost')\nplt.ylabel('Cost')\nplt.xlabel('Epoch')\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"valid = model.evaluate(X_test,Y_test,verbose=2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"Records = []","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"Records.append(valid)\nRecords","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"label = model.predict_classes(X)\nprint(label.shape)\nprint(label)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ID = pd.DataFrame(ID.values,columns=[\"id\"])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ans = ID.join(pd.DataFrame(label,columns=[\"label\"]))\nans.head(20)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"ans.to_csv(\"submission.csv\",index=False)","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}