{"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)\nimport fastai as fa\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 the files in the input directory\n\nimport os\nprint(os.listdir(\"../input\"))\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":"from fastai.vision import *\nimport torch\nfrom torch import optim,nn\nimport numpy as np\n\nPATH = '../input'\n\ndf_train = pd.read_csv(PATH+'/train.csv', dtype={'id_code':str, 'diagnosis':int})\n\nnorm_values = ([0.485, 0.456, 0.406],[0.229, 0.224, 0.225])\ndevice = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\ndataBunch = ImageDataBunch.from_df(path=PATH,df=df_train,folder='train_images',suffix='.png',size=224,\n                                   ds_tfms=get_transforms(do_flip=True,\n                                                          max_warp=0,\n                                                          max_rotate = 0,\n                                                          max_zoom = 0,\n                                                          max_lighting=0,\n                                                          p_lighting=0,\n                                                          p_affine=0,\n                                                          xtra_tfms=[crop_pad()]), \n                                   test='test_images',\n                                   bs=16,device=device).normalize(norm_values)\nlearn = cnn_learner(data=dataBunch,base_arch=models.densenet201,pretrained=False,model_dir='/tmp/models',\n                   metrics=[accuracy])\n# learn.lr_find()\n# learn.recorder.plot(suggestion=True)\n\n\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"learn.unfreeze()\nlearn.fit_one_cycle(8,max_lr=(1e-05,1e-04,1e-03),wd=(1e-01,1e-01,1e-04))\nlearn.show_results()\nnet = learn.model","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from PIL import Image\nfrom torchvision import transforms\nnet.eval()\nids=[]\nclass CreateTrainDataset(Dataset):\n    def __init__(self, csv_file, root_dir,transform=None):\n        self.data_frame = pd.read_csv(csv_file)\n        self.root_dir = root_dir\n        self.transform = transform\n\n    def __len__(self):\n        return len(self.data_frame)\n\n    def __getitem__(self, idx):\n        img_name = os.path.join(self.root_dir,\n                                self.data_frame.iloc[idx, 0]+'.png')\n        image = Image.open(img_name)\n        image = transforms.RandomHorizontalFlip()(image)\n        image = transforms.Grayscale(3)(image)\n        image = transforms.CenterCrop(224)(image)\n        sample = {'image':transforms.ToTensor()(image)}\n        return sample\n\ntestset = CreateTrainDataset(csv_file='../input/test.csv',root_dir='../input/test_images')\ntestloader = torch.utils.data.DataLoader(testset,batch_size=1,num_workers=4)\np=[]\nfor idx,image in enumerate(testloader):\n    data = image[\"image\"]\n    data = data.to(device)\n    output = net(data)\n    preds = torch.max(torch.exp(output),1)\n    p.append(int(preds.indices))\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df = pd.read_csv('../input/test.csv')\nids = df[\"id_code\"]\nddf = pd.DataFrame(data={'id_code':ids,'diagnosis':p})\nddf.to_csv('./submission.csv',sep=',',index=False)","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}