{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd\nimport os\nimport cv2\nimport matplotlib.pyplot as plt\nfrom sklearn.model_selection import train_test_split\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Conv2D, Dense, Flatten, Dropout\nfrom tensorflow.keras import regularizers\n\nprint(os.listdir(\"../input\"))","execution_count":null,"outputs":[]},{"metadata":{"_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","trusted":true},"cell_type":"code","source":"train_df = pd.read_csv('../input/train_labels.csv')\ntdf_0 = train_df[train_df.label == 0].sample(frac=0.6807)\ntdf_1 = train_df[train_df.label == 1]\ntrain_df = pd.concat([tdf_0, tdf_1])\n\ndel tdf_0,tdf_1\n\ntrain_df = train_df.sample(frac=1).reset_index(drop=True)\ntrain_id, test_id, train_label, test_label = train_test_split(train_df.id.values.tolist(), train_df.label.values.tolist(), test_size = 0.002)\nbatch_size = 25\nepochs = 30\nsteps = int(len(train_id)/batch_size) + 1","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def get_image(path, file):\n    img = cv2.imread(os.path.join(path,file+'.tif'))\n    #img = img[31:63, 31:63]\n    img = cv2.resize(img, (64,64))\n    img = img/255\n    return img\n\ndef get_batch():\n    global batch_size\n    done = 0\n    for i in range(0,len(train_id),batch_size):\n        batch_imgs = np.array([get_image('../input/train',train_id[j]) for j in range(done, min(len(train_id),done + batch_size))])\n        batch_labels = [train_label[j] for j in range(done, min(len(train_id),done + batch_size))]\n        done += batch_size\n        yield batch_imgs, batch_labels","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = Sequential()\nmodel.add(Conv2D(filters = 32, kernel_size = 3, padding = 'same',\\\n                 activation = 'relu', input_shape = (64,64,3)))\nmodel.add(Conv2D(filters = 16, kernel_size = 3, padding = 'same',\\\n                 activation = 'relu'))\nmodel.add(Conv2D(filters = 8, kernel_size = 3, padding = 'same',\\\n                 activation = 'relu'))\nmodel.add(Flatten())\n#model.add(Dropout(0.03125))\n#model.add(Dense(10, activation = 'relu', kernel_regularizer=regularizers.l2(0.01)))\nmodel.add(Dense(1, activation = 'sigmoid'))\n\nmodel.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_images = np.array([get_image('../input/train',test_id[j]) for j in range(len(test_id))])\ntest_labels = [train_label[j] for j in range(len(test_id))]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for i in range(epochs):\n    print('Epoch ' + str(i+1) + ' of ' + str(epochs) + ' :')\n    model.fit_generator(get_batch(),steps_per_epoch=steps)\n    metric = model.evaluate(test_images, test_labels)\n    #print('Accuracy for epoch '+str(i+1)+'=> loss: %f   accuracy: %f'%(metric[0], metric[1]))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_id = os.listdir('../input/test')\ndef get_test_image(path, file):\n    img = cv2.imread(os.path.join(path,file))\n    #img = img[31:63, 31:63]\n    img = cv2.resize(img, (64,64))\n    img = img/255\n    return img\ndef get_test_batch():\n    global batch_size\n    done = 0\n    for i in range(0,len(test_id),batch_size):\n        batch_imgs = np.array([get_test_image('../input/test',test_id[j]) for j in range(done, min(len(test_id),done + batch_size))])\n        done += batch_size\n        yield batch_imgs\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"preds = []\nfor images in get_test_batch():\n    preds += np.rint(model.predict(images)).tolist()\npreds = np.reshape(preds, (len(preds))).tolist()\ndf = {'id' : list(map(lambda x : x.split('.')[0], test_id)), 'label': preds}\ndf = pd.DataFrame(df)\ndf.to_csv('results.csv', 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}