{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load in \n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the \"../input/\" directory.\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# Any results you write to the current directory are saved as output.","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import torch\nimport torch.nn as nn\nfrom torch.autograd import Variable\nimport torch.nn.functional as F\nimport torch.utils.data as Data\nimport torchvision","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"path = '/kaggle/input/Kannada-MNIST/'\ndata = pd.read_csv(path+ \"train.csv\")\ntrain_y = data.values[:, 0]\ntrain_x = data.values[:, 1:]\ntest = pd.read_csv(path +\"test.csv\")\ntest_x = test.values[:, 1:]\n\n\ntrain_x = train_x / 255.0\ntrain_x  = train_x .reshape(-1, 1, 28, 28)\n\ntest_x = test_x / 255.0 \ntest_x = test_x.reshape(-1, 1, 28, 28)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"EPOCH = 5\nBATCH_SIZE = 64\nLR = 0.001","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"class CNN(nn.Module):\n    def __init__(self):\n        super(CNN, self).__init__()\n        \n        self.conv1 = nn.Conv2d(1, 20, 5)\n        self.conv2 = nn.Conv2d(20, 50, 5)\n        self.fc1 = nn.Linear(4*4*50, 500)\n        self.fc2 = nn.Linear(500, 10)\n        \n    def forward(self, x):\n        x = F.relu(self.conv1(x))\n        x = F.max_pool2d(x, 2, 2)\n        x = F.relu(self.conv2(x))\n        x = F.max_pool2d(x, 2, 2)\n        x = x.view(-1, 4*4*50)\n        x = F.relu(self.fc1(x))\n        x = self.fc2(x)\n        return F.log_softmax(x, dim=1)\n    \nmodel = CNN()\noptimizer = torch.optim.Adam(model.parameters(), lr=LR)   # optimize all cnn parameters\nloss_func = nn.NLLLoss() \ntrain_data = Data.TensorDataset(torch.FloatTensor(train_x), torch.LongTensor(train_y))\ntrain_loader = Data.DataLoader(dataset=train_data, batch_size=BATCH_SIZE, shuffle=True)\n\n# training...\nfor epoch in range(EPOCH):\n    for step, (bx,by) in enumerate(train_loader) :\n        \n        output = model(bx)\n        loss = loss_func(output, by)\n        optimizer.zero_grad()\n        loss.backward()\n        optimizer.step()\n        \n        if step % 100 == 99 :\n            pred_by = torch.max(output, 1)[1].data.squeeze()\n            accuracy = (pred_by == by).sum().item() / float(BATCH_SIZE)\n            print('Epoch:', epoch, '| train loss: %.3f' % loss.item(), '| train acc: % .2f' % accuracy)\n            \n# predicting...\ntest_data = Variable(torch.FloatTensor(test_x))\noutput = model(test_data)\npredictions = torch.max(output, 1)[1].data.numpy().squeeze()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission = pd.read_csv('/kaggle/input/Kannada-MNIST/sample_submission.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission['label'] = predictions","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission.to_csv(\"submission.csv\",index=False)","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":1}