{"cells":[{"metadata":{"_uuid":"ed426955-dc0a-490b-aa00-2df8b8bf10d5","_cell_guid":"2eddc8c6-a05f-4d21-9a25-c53541697ed4","trusted":true},"cell_type":"code","source":"import csv\nimport numpy as np\nimport tensorflow as tf\nimport tensorflow.keras.layers as tfl\nimport pickle\nfrom sklearn.utils import shuffle","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def populate_train():\n    x_test = []\n    y_test = []\n    with open(\"/kaggle/input/Kannada-MNIST/train.csv\") as csv_file:\n        csv_reader = csv.reader(csv_file, delimiter=',')\n        line_count = 0\n        for row in csv_reader:\n            if line_count == 0:\n                line_count += 1\n            else:\n                y_test.append(row[0])\n                x_test.append(row[1:])\n                line_count += 1\n        x_test = np.array(x_test)\n        x_test = x_test.astype(float)\n        y_test = np.array(y_test)\n        y_test = y_test.astype(int)\n        print(x_test.shape)\n        x_test = np.reshape(x_test, (60000, 28, 28, 1))\n        x_test, y_test = shuffle(x_test, y_test, random_state=0)\n        return x_test, y_test\n\nX, y = populate_train()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def populate_test():\n    x_test = []\n    y_test = []\n    with open(\"/kaggle/input/Kannada-MNIST/test.csv\") as csv_file:\n        csv_reader = csv.reader(csv_file, delimiter=',')\n        line_count = 0\n        for row in csv_reader:\n            if line_count == 0:\n                line_count += 1\n            else:\n                y_test.append(row[0])\n                x_test.append(row[1:])\n                line_count += 1\n        x_test = np.array(x_test)\n        x_test = x_test.astype(float)\n        y_test = np.array(y_test)\n        y_test = y_test.astype(int)\n        print(x_test.shape)\n        x_test = np.reshape(x_test, (5000, 28, 28, 1))\n        return x_test, y_test\n\nX_test, y_test = populate_test()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = tf.keras.models.Sequential()\n\nmodel.add(tfl.Conv2D(256, (3, 3), input_shape=X.shape[1:]))\nmodel.add(tfl.Activation('relu'))\nmodel.add(tfl.MaxPooling2D(pool_size=(2, 2)))\n\nmodel.add(tfl.Conv2D(256, (3, 3)))\nmodel.add(tfl.Activation('relu'))\nmodel.add(tfl.MaxPooling2D(pool_size=(2, 2)))\n\nmodel.add(tfl.Flatten())\n\nmodel.add(tfl.Dense(64))\n\nmodel.add(tfl.Dense(10))\nmodel.add(tfl.Activation('softmax'))\n\nmodel.compile(optimizer='adam',\n              loss='sparse_categorical_crossentropy',\n              metrics=['accuracy'])\n\nmodel.fit(X, y, batch_size=8, epochs=10)\n\nmodel.save(\"Kannada_MNIST_Reader.model\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def prepare(x):\n    return x.reshape(-1, 28, 28, 1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = tf.keras.models.load_model(\"Kannada_MNIST_Reader.model\")\nasserted = [[]]\nx = range(5000)\nfor i in x:\n    if (i % 500) == 0:\n        print(i)\n    predict = np.argmax(model.predict(prepare(X_test[i])))\n    asserted.append([i, predict])\nasserted.pop(0)\n\npickle.dump(asserted, open(\"asserted.pickle\", \"wb\"))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"asserted = pickle.load(open(\"asserted.pickle\", \"rb\"))\nvariable = \",\"\nnp.savetxt(\"submission.csv\", asserted, fmt='%i', delimiter=',', header=\"id, label\", comments='')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"}},"nbformat":4,"nbformat_minor":1}