{"cells":[{"metadata":{"id":"eEgahA64qC30","executionInfo":{"status":"ok","timestamp":1593430712501,"user_tz":-540,"elapsed":5161,"user":{"displayName":"이혜인","photoUrl":"https://lh4.googleusercontent.com/-uI9uK9Capgk/AAAAAAAAAAI/AAAAAAAAAOg/ysaMHXumvhE/s64/photo.jpg","userId":"13384498604895278525"}},"outputId":"5b0f47cf-9cf1-4cbf-efb8-b0b9d3e027ce","trusted":true},"cell_type":"code","source":"import torch\nimport torch.nn as nn\nimport random\nimport pandas as pd\nimport numpy as np\nfrom sklearn import preprocessing\n\ndevice = 'cuda' if torch.cuda.is_available() else 'cpu'\nif device == 'cuda':\n  torch.cuda.manual_seed_all(111)\n\ntrain = pd.read_csv('../input/2020-ai-exam-fashionmnist-4/mnist_train_label.csv', header=None)\ntrain","execution_count":null,"outputs":[]},{"metadata":{"id":"q5E7t2GWrHC_","executionInfo":{"status":"ok","timestamp":1593431046250,"user_tz":-540,"elapsed":1678,"user":{"displayName":"이혜인","photoUrl":"https://lh4.googleusercontent.com/-uI9uK9Capgk/AAAAAAAAAAI/AAAAAAAAAOg/ysaMHXumvhE/s64/photo.jpg","userId":"13384498604895278525"}},"outputId":"0d69ad15-785b-4823-fc3b-a311e7f0208e","trusted":false},"cell_type":"code","source":"from torch.utils.data import DataLoader, TensorDataset\n\nxtrain = train.loc[:, 1:785]\nytrain = train.loc[:, 0]\n\nprint(xtrain.shape, ytrain.shape)\n\nxtrain=np.array(xtrain)\nytrain=np.array(ytrain)\n\nScaler = preprocessing.MinMaxScaler()\nxtrain = Scaler.fit_transform(xtrain)\n\nxtrain=torch.FloatTensor(xtrain).to(device)\nytrain=torch.LongTensor(ytrain).to(device)\n\ndataset = TensorDataset(xtrain, ytrain)\ndl = DataLoader(dataset, batch_size=100, shuffle=True, drop_last=True)\n","execution_count":null,"outputs":[]},{"metadata":{"id":"NeIvlQDcr9Js","executionInfo":{"status":"ok","timestamp":1593431222240,"user_tz":-540,"elapsed":36386,"user":{"displayName":"이혜인","photoUrl":"https://lh4.googleusercontent.com/-uI9uK9Capgk/AAAAAAAAAAI/AAAAAAAAAOg/ysaMHXumvhE/s64/photo.jpg","userId":"13384498604895278525"}},"outputId":"de733b72-4985-413d-c9b0-0dfba7efade7","trusted":false},"cell_type":"code","source":"random.seed(111)\ntorch.manual_seed(111)\n\n\nepochs=15\n\nlin1 = nn.Linear(784, 512, bias=True)\nlin2 = nn.Linear(512,512,bias=True)\nlin3 = nn.Linear(512,512,bias=True)\nlin4 = nn.Linear(512,512,bias=True)\nlin5 = nn.Linear(512, 10, bias=True)\nnn.init.kaiming_uniform(lin1.weight)\nnn.init.kaiming_uniform(lin2.weight)\nnn.init.kaiming_uniform(lin3.weight)\nnn.init.kaiming_uniform(lin4.weight)\nnn.init.kaiming_uniform(lin5.weight)\nrelu = nn.ReLU()\ndropout = nn.Dropout(p=0.3)\nmodel = nn.Sequential(lin1, relu, dropout,\n                      lin2, relu, dropout,\n                      lin3, relu, dropout,\n                      lin4, relu, dropout,\n                      lin5).to(device)\n\nloss = nn.CrossEntropyLoss().to(device)\noptimizer = torch.optim.Adam(model.parameters(), lr=1e-4)\n\nfor epoch in range(epochs):\n  avg_cost=0\n\n  for x,y in dl:\n    x = x.to(device)\n    y = y.to(device)\n\n    optimizer.zero_grad()\n    H = model(x)\n    cost = loss(H, y)\n    cost.backward()\n    optimizer.step()\n\n    avg_cost += cost/len(dl)\n\n  print('Epoch:', '%04d'%(epoch+1) ,'Cost : {:.9f}'.format(avg_cost))\n\nprint('Finished')","execution_count":null,"outputs":[]},{"metadata":{"id":"s9SVv8yos3-N","executionInfo":{"status":"ok","timestamp":1593431736110,"user_tz":-540,"elapsed":2493,"user":{"displayName":"이혜인","photoUrl":"https://lh4.googleusercontent.com/-uI9uK9Capgk/AAAAAAAAAAI/AAAAAAAAAOg/ysaMHXumvhE/s64/photo.jpg","userId":"13384498604895278525"}},"outputId":"75131e01-2fa2-4547-8eb8-88fab529e674","trusted":false},"cell_type":"code","source":"test = pd.read_csv('../input/2020-ai-exam-fashionmnist-4/mnist_test.csv', header=None, usecols=range(1,785))\ntest = test.fillna(0)\ntest\n\nwith torch.no_grad():\n  xtest=test.loc[:,:]\n  xtest=np.array(xtest)\n  xtest=Scaler.transform(xtest)\n  xtest=torch.FloatTensor(xtest).to(device)\n\n  H = model(xtest)\n  correct_prediction = torch.argmax(H, 1)\n\ncorrect_prediction = correct_prediction.cpu().numpy().reshape(-1,1)\n\nsubmit=pd.read_csv('../input/2020-ai-exam-fashionmnist-4/submission.csv')\n\nfor i in range(len(correct_prediction)):\n  submit['Category'][i]=correct_prediction[i].item()\n\nsubmit.to_csv('sub.csv',index=False, header=True)\nsubmit","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}