{"cells":[{"metadata":{},"cell_type":"markdown","source":"!pip uninstall kaggle<br>\n!pip install --upgrade pip<br>\n!pip install kaggle==1.5.6<br>\n!mkdir -p ~/.kaggle<br>\n!cp kaggle.json ~/.kaggle<br>\n!ls -lha kaggle.json<br>\n!chmood 600 ~/.kaggle/kaggle.json<br>","execution_count":null},{"metadata":{"id":"ecdqKqdTrbdF","outputId":"6fb12146-9545-464e-bb4c-4f5242ba3184","trusted":false},"cell_type":"code","source":"#!kaggle competitions download -c 2020-ai-exam-fashionmnist-3","execution_count":null,"outputs":[]},{"metadata":{"id":"VimwY582rg-D","outputId":"236718d7-870b-4e1d-bb13-a69670134369","trusted":false},"cell_type":"code","source":"#!unzip 2020-ai-exam-fashionmnist-3.zip","execution_count":null,"outputs":[]},{"metadata":{"id":"ddu_yXt2rjq0","trusted":false},"cell_type":"code","source":"import torch\nimport torchvision.datasets as data\nimport torchvision.transforms as transforms\nimport random\n\nimport pandas as pd\nimport numpy as np\n","execution_count":null,"outputs":[]},{"metadata":{"id":"JVV2iSb6rrnB","trusted":false},"cell_type":"code","source":"device = 'cuda' if torch.cuda.is_available() else 'cpu'\n\nrandom.seed(777)\ntorch.manual_seed(777)\nif device == 'cuda':\n  torch.cuda.manual_seed_all(777)","execution_count":null,"outputs":[]},{"metadata":{"id":"xd79tdVNr8_E","trusted":false},"cell_type":"code","source":"learning_rate = 0.01\ntraining_epochs = 15\nbatch_size = 100","execution_count":null,"outputs":[]},{"metadata":{"id":"A2QPzVXFsHWx","trusted":false},"cell_type":"code","source":"train_data = pd.read_csv('../input/2020-ai-exam-fashionmnist-3/mnist_train_label.csv', header = None)\ntest_data = pd.read_csv('../input/2020-ai-exam-fashionmnist-3/mnist_test.csv', header = None, usecols=range(1, 785))","execution_count":null,"outputs":[]},{"metadata":{"id":"PHZpyAJCs_fi","outputId":"336bd44a-a35f-4e87-83c0-37d570b87890","trusted":false},"cell_type":"code","source":"test_data","execution_count":null,"outputs":[]},{"metadata":{"id":"xSeCtLEks0ig","outputId":"5b0fff37-3d8d-46a6-aa01-200b42a6d7ad","trusted":false},"cell_type":"code","source":"train_data","execution_count":null,"outputs":[]},{"metadata":{"id":"9vkKrrlstqE0","outputId":"b22ed5db-f606-44a2-b120-1fcd61621a21","trusted":false},"cell_type":"code","source":"x_train_data = train_data.loc[:, 1:784]\ny_train_data = train_data.loc[:, 0]\n\n#데이터 정규화\nx_train_data = x_train_data/255\nx_train_data","execution_count":null,"outputs":[]},{"metadata":{"id":"L-ZS-TVP0YoA","trusted":false},"cell_type":"code","source":"  \nx_train_data = np.array(x_train_data)\ny_train_data = np.array(y_train_data)\nx_train_data = torch.FloatTensor(x_train_data)\ny_train_data = torch.LongTensor(y_train_data)","execution_count":null,"outputs":[]},{"metadata":{"id":"caoEpWKauTrY","trusted":false},"cell_type":"code","source":"train_dataset =  torch.utils.data.TensorDataset(x_train_data, y_train_data)","execution_count":null,"outputs":[]},{"metadata":{"id":"7QrSYKAruKch","trusted":false},"cell_type":"code","source":"data_loader = torch.utils.data.DataLoader(dataset=train_dataset, \n                                          batch_size=batch_size, \n                                          shuffle = True, \n                                          drop_last = True)","execution_count":null,"outputs":[]},{"metadata":{"id":"Nie5bETTukEe","trusted":false},"cell_type":"code","source":"linear1 = torch.nn.Linear(784,256, bias = True)\nlinear2 = torch.nn.Linear(256,128, bias = True)\nlinear3 = torch.nn.Linear(128,10, bias = True)\nReLU = torch.nn.ReLU()","execution_count":null,"outputs":[]},{"metadata":{"id":"7KudOpwJuqsF","outputId":"74c4db77-8004-4026-f81a-6fbcd8b490ea","trusted":false},"cell_type":"code","source":"torch.nn.init.xavier_normal_(linear1.weight)\ntorch.nn.init.xavier_normal_(linear2.weight)\ntorch.nn.init.xavier_normal_(linear3.weight)","execution_count":null,"outputs":[]},{"metadata":{"id":"lyozySTiuufb","trusted":false},"cell_type":"code","source":"model = torch.nn.Sequential(linear1, ReLU,\n                            linear2, ReLU,\n                            linear3).to(device)","execution_count":null,"outputs":[]},{"metadata":{"id":"CqCjnzIyuy76","trusted":false},"cell_type":"code","source":"loss = torch.nn.CrossEntropyLoss().to(device)\noptimizer = torch.optim.Adam(model.parameters(), lr = learning_rate)","execution_count":null,"outputs":[]},{"metadata":{"id":"88GWTc34u8Jj","outputId":"bc521b74-1756-4881-c548-24cb20d098e4","trusted":false},"cell_type":"code","source":"total_batch = len(data_loader)\nfor epoch in range(training_epochs):\n  avg_cost = 0\n\n  for X, Y in data_loader:\n    X = X.to(device)\n    Y = Y.to(device)\n\n    optimizer.zero_grad()\n    hypothesis = model(X)\n    cost = loss(hypothesis, Y)\n    cost.backward()\n    optimizer.step()\n\n    avg_cost += cost/total_batch\n  print(epoch+1)\n  print(avg_cost)\nprint(\"f\")","execution_count":null,"outputs":[]},{"metadata":{"id":"fHyg5MhBvcWQ","outputId":"be499124-2120-4951-a507-1efa27bd07f7","trusted":false},"cell_type":"code","source":"with torch.no_grad():\n  test_data.loc[:, 783] = 0\n  x_test = test_data.loc[:,:]\n  x_test = x_test/255\n  x_test = np.array(x_test)\n  x_test = torch.from_numpy(x_test).float().to(device)\n  prediction = model(x_test)\n  correct = torch.argmax(prediction, 1)\ncorrect","execution_count":null,"outputs":[]},{"metadata":{"id":"tanB4Ygavnek","outputId":"d841b1d0-2e4b-4f23-a5ad-47c4b8ed4d44","trusted":false},"cell_type":"code","source":"correct = correct.cpu().numpy().reshape(-1, 1)\ncorrect","execution_count":null,"outputs":[]},{"metadata":{"id":"Tpdgm0ImxCAI","outputId":"094d4249-96a3-46af-af51-67f2ad5c2b8e","trusted":false},"cell_type":"code","source":"submit = pd.read_csv('../input/2020-ai-exam-fashionmnist-3/submission.csv')\nsubmit","execution_count":null,"outputs":[]},{"metadata":{"id":"qtJXW-wsxbY0","outputId":"5a5ddd0e-b915-4b4b-9d15-edfd0d8b1c00","trusted":false},"cell_type":"code","source":"for i in range(len(correct)):\n  submit['Category'][i] = correct[i].item()\nsubmit","execution_count":null,"outputs":[]},{"metadata":{"id":"NU6SSHQDzCXy","trusted":false},"cell_type":"code","source":"submit.to_csv('submit.csv', index = False, header = True)","execution_count":null,"outputs":[]},{"metadata":{"id":"c2ts9YvqxkL7","outputId":"5a2e04bf-6618-4e07-ec2c-3a1b9ecf353b","trusted":false},"cell_type":"code","source":"!kaggle competitions submit -c 2020-ai-exam-fashionmnist-3 -f submit.csv -m \"result\"","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}