{"cells":[{"metadata":{"id":"JN-NLW-4kz5u","outputId":"7a153eb4-499e-4966-9e9b-f471f30e50d0","trusted":false},"cell_type":"code","source":"!pip uninstall kaggle\n!pip install --upgrade pip\n!pip install kaggle==1.5.6","execution_count":null,"outputs":[]},{"metadata":{"id":"Yq940P8-lKTm","outputId":"e880c253-8874-4870-fdd5-aadf6915ee9e","trusted":false},"cell_type":"code","source":"!mkdir -p ~/.kaggle\n!cp kaggle.json ~/.kaggle\n!ls -lha kaggle.json\n!chmod 600 ~/.kaggle/kaggle.json","execution_count":null,"outputs":[]},{"metadata":{"id":"ohn1PyjQlLUk","outputId":"a7da3cd1-ec3d-4f17-c93c-a80bb64688ed","trusted":false},"cell_type":"code","source":"!kaggle competitions download -c 2020-ai-exam-fashionmnist-1","execution_count":null,"outputs":[]},{"metadata":{"id":"cw7shKqKlW60","outputId":"59842b58-1f77-4c0f-e701-b67a585de999","trusted":false},"cell_type":"code","source":"!unzip 2020-ai-exam-fashionmnist-1","execution_count":null,"outputs":[]},{"metadata":{"id":"tb7Jxlyilvuo","trusted":false},"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport torch","execution_count":null,"outputs":[]},{"metadata":{"id":"hH4BA5O1lzlN","trusted":false},"cell_type":"code","source":"train_csv = pd.read_csv('mnist_train_label.csv')\ntest_csv = pd.read_csv('mnist_test.csv') ","execution_count":null,"outputs":[]},{"metadata":{"id":"7PWbeENdl2AM","outputId":"40fc9c63-75a2-437d-aaaf-51b87680b90c","trusted":false},"cell_type":"code","source":"train_csv.head()","execution_count":null,"outputs":[]},{"metadata":{"id":"QGyJpo8yqVHs","outputId":"7a8f6d3e-2dec-49ed-bdd5-8bed194ecb30","trusted":false},"cell_type":"code","source":"train_csv.describe()","execution_count":null,"outputs":[]},{"metadata":{"id":"3AzrpIjGmF-7","trusted":false},"cell_type":"code","source":"train_L = train_csv.iloc[:,0]","execution_count":null,"outputs":[]},{"metadata":{"id":"9osDU7XUmMPL","trusted":false},"cell_type":"code","source":"train_D = train_csv.drop('9',axis =1)","execution_count":null,"outputs":[]},{"metadata":{"id":"lvNEv4XwnRyj","outputId":"ec3c62d5-b98f-42fb-b85f-905307331239","trusted":false},"cell_type":"code","source":"len(train_D)","execution_count":null,"outputs":[]},{"metadata":{"id":"kOt_QTzsqCUi","trusted":false},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"id":"gYUdLK3SmYnY","trusted":false},"cell_type":"code","source":"device = 'cuda' if torch.cuda.is_available() else 'cpu'\n\ntorch.manual_seed(777)\nif device == 'cuda':\n    torch.cuda.manual_seed_all(777)","execution_count":null,"outputs":[]},{"metadata":{"id":"PMLatIdFpuqH","trusted":false},"cell_type":"code","source":"device= 'cpu'","execution_count":null,"outputs":[]},{"metadata":{"id":"pNj8K4HT651E","trusted":false},"cell_type":"code","source":"#단층. (28*28, 10 ) class가 0~9까지니깐 ","execution_count":null,"outputs":[]},{"metadata":{"id":"MKZ7exYItbNy","trusted":false},"cell_type":"code","source":"l1 = torch.nn.Linear(train_D.shape[1], 10, bias = True)","execution_count":null,"outputs":[]},{"metadata":{"id":"MOC40H677OKT","trusted":false},"cell_type":"code","source":"#WEIGHT 초기화 해주기 ","execution_count":null,"outputs":[]},{"metadata":{"id":"Xe1n6a2YmonV","outputId":"689c293b-a03b-4680-fdb5-ad2e3dd278e1","trusted":false},"cell_type":"code","source":"torch.nn.init.xavier_uniform_(l1.weight)\n","execution_count":null,"outputs":[]},{"metadata":{"id":"gNSnNKhDnGuy","trusted":false},"cell_type":"code","source":"model = torch.nn.Sequential(l1).to(device)","execution_count":null,"outputs":[]},{"metadata":{"id":"h8vQ31VC6-S-","trusted":false},"cell_type":"code","source":"#crossentropy사용, 최적화 SGD ","execution_count":null,"outputs":[]},{"metadata":{"id":"uWrLvijknbnD","trusted":false},"cell_type":"code","source":"lr = 0.1\nepoch = 15\n","execution_count":null,"outputs":[]},{"metadata":{"id":"csWo83lunFm2","trusted":false},"cell_type":"code","source":"loss = torch.nn.CrossEntropyLoss().to(device) # to gpu\noptimizer = torch.optim.SGD(model.parameters(), lr=lr) # 0.49","execution_count":null,"outputs":[]},{"metadata":{"id":"fNXwxNRpna6j","trusted":false},"cell_type":"code","source":"train_D = torch.FloatTensor(np.array(train_D))\ntrain_L = torch.LongTensor(np.array(train_L))","execution_count":null,"outputs":[]},{"metadata":{"id":"6EMmD_v5pz6K","outputId":"ba253984-5752-4b21-f4e2-2905ef059065","trusted":false},"cell_type":"code","source":"train_L","execution_count":null,"outputs":[]},{"metadata":{"id":"t_8frahXpDiT","outputId":"5872fabd-2f2e-4f35-a93e-a3347493ee9b","trusted":false},"cell_type":"code","source":"for stop in range(epoch):\n    \n    # 그래디언트 초기화\n    optimizer.zero_grad()\n    # Forward 계산\n    hypothesis = model(train_D)\n    # Error 계산\n    cost = loss(hypothesis, train_L)\n    # Backward 계산 \n    cost.backward()\n    # 가중치 갱신\n    optimizer.step()\n    print(stop, cost.item())\n","execution_count":null,"outputs":[]},{"metadata":{"id":"p5iyBhKlrOVd","trusted":false},"cell_type":"code","source":"test_D= torch.FloatTensor(np.array(test_csv))","execution_count":null,"outputs":[]},{"metadata":{"id":"GaF2ItmfrSXg","trusted":false},"cell_type":"code","source":"with torch.no_grad():\n  model.eval()\n  pred= model(test_D.to(device))\n","execution_count":null,"outputs":[]},{"metadata":{"id":"2bC6-8RJrYw5","trusted":false},"cell_type":"code","source":"pred_list= torch.argmax(pred, 1).cpu()","execution_count":null,"outputs":[]},{"metadata":{"id":"aJF6pOYArddr","outputId":"5c08ef1b-1d0b-4ca9-9ebe-7c9922b85381","trusted":false},"cell_type":"code","source":"pred_list[:20]","execution_count":null,"outputs":[]},{"metadata":{"id":"zRA99t4irhtC","trusted":false},"cell_type":"code","source":"sample= pd.read_csv('submission.csv')","execution_count":null,"outputs":[]},{"metadata":{"id":"3fCNhx3VrsUr","outputId":"7a6e95dd-7eb5-4b3c-c2b5-7a353a070b6c","trusted":false},"cell_type":"code","source":"len(test_D)","execution_count":null,"outputs":[]},{"metadata":{"id":"uzvroGlfrkAD","outputId":"59c1ee8d-618e-41a8-977a-a53ed6906e07","trusted":false},"cell_type":"code","source":"sample","execution_count":null,"outputs":[]},{"metadata":{"id":"oiSPic_orlHF","trusted":false},"cell_type":"code","source":"result = {}\nresult['Id'] = list(i for i in range(1,10000))\nresult['Category'] = pred_list","execution_count":null,"outputs":[]},{"metadata":{"id":"esjYtjs-sGzt","outputId":"7976bc34-4fce-428b-9ab0-fdeb1c2ddded","trusted":false},"cell_type":"code","source":"pred_list.detach().numpy()","execution_count":null,"outputs":[]},{"metadata":{"id":"jvW9SeaxsSYx","trusted":false},"cell_type":"code","source":"sample['Category'][1:] = pred_list.detach().numpy()","execution_count":null,"outputs":[]},{"metadata":{"id":"l6DXvv__sZVq","outputId":"5c0db150-0e64-465d-b71c-6ff79de1c8ad","trusted":false},"cell_type":"code","source":"pd.DataFrame(sample)","execution_count":null,"outputs":[]},{"metadata":{"id":"zlMNwNI6sbpM","trusted":false},"cell_type":"code","source":"sample.to_csv('q1.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":4}