1864 lines (1863 with data), 203.6 kB
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# RSNA Intracranial Hemorrhage Detection "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>Competition Overview</b><br/><br/>\n",
"Intracranial hemorrhage, bleeding that occurs inside the cranium, is a serious health problem requiring rapid and often intensive medical treatment. For example, intracranial hemorrhages account for approximately 10% of strokes in the U.S., where stroke is the fifth-leading cause of death. Identifying the location and type of any hemorrhage present is a critical step in treating the patient.\n",
"\n",
"Diagnosis requires an urgent procedure. When a patient shows acute neurological symptoms such as severe headache or loss of consciousness, highly trained specialists review medical images of the patient’s cranium to look for the presence, location and type of hemorrhage. The process is complicated and often time consuming."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>What am i predicting?</b><br/><br/>\n",
"In this competition our goal is to predict intracranial hemorrhage and its subtypes. Given an image the we need to predict probablity of each subtype. This indicates its a multilabel classification problem."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>Competition Evaluation Metric</b><br/><br/>\n",
"Evaluation metric is weighted multi-label logarithmic loss. So for given image we need to predict probality for each subtype. There is also an any label, which indicates that a hemorrhage of ANY kind exists in the image. The any label is weighted more highly than specific hemorrhage sub-types.\n",
"\n",
"<b>Note:</b>The weights for each subtype for calculating weighted multi-label logarithmic loss is **not** given as part of the competition. We will be using binary cross entropy loss as weights are not available"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<b>Dataset Description</b>\n",
"\n",
"The dataset is divided into two parts\n",
"\n",
"1. Train\n",
"2. Test\n",
"\n",
"**1. Train**\n",
"Number of rows: 40,45,548 records.\n",
"Number of columns: 2\n",
"\n",
"Columns:\n",
"\n",
"**Id**: An image Id. Each Id corresponds to a unique image, and will contain an underscore.\n",
"\n",
"Example: ID_28fbab7eb_epidural. So the Id consists of two parts one is image file id ID_28fbab7eb and the other is sub type name\n",
"\n",
"**Label**: The target label whether that sub-type of hemorrhage (or any hemorrhage in the case of any) exists in the indicated image. 1 --> Exists and 0 --> Doesn't exist.\n",
"\n",
"**2. Test**\n",
"Number of rows: 4,71,270 records.\n",
"\n",
"Columns:\n",
"\n",
"**Id**: An image Id. Each Id corresponds to a unique image, and will contain an underscore.\n",
"\n",
"Example: ID_28fbab7eb_epidural. So the Id consists of two parts one is image file id ID_28fbab7eb and the other is sub type name"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n"
]
}
],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import pydicom\n",
"import cv2\n",
"import os\n",
"import matplotlib.pyplot as plt\n",
"import collections\n",
"from tqdm import tqdm_notebook as tqdm\n",
"from datetime import datetime\n",
"from keras.applications.resnet50 import ResNet50\n",
"from keras.utils import to_categorical, Sequence\n",
"from keras.models import Sequential\n",
"from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPool2D, Activation\n",
"from keras.optimizers import RMSprop,Adam\n",
"from keras.applications import VGG19, VGG16, ResNet50\n",
"from sklearn.preprocessing import MultiLabelBinarizer\n",
"from tqdm import tqdm_notebook as tqdm\n",
"import keras\n",
"from sklearn.model_selection import train_test_split\n",
"from math import ceil, floor"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"input_folder = '../input/rsna-intracranial-hemorrhage-detection/'"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ID</th>\n",
" <th>Label</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>ID_63eb1e259_epidural</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>ID_63eb1e259_intraparenchymal</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>ID_63eb1e259_intraventricular</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>ID_63eb1e259_subarachnoid</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>ID_63eb1e259_subdural</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ID Label\n",
"0 ID_63eb1e259_epidural 0\n",
"1 ID_63eb1e259_intraparenchymal 0\n",
"2 ID_63eb1e259_intraventricular 0\n",
"3 ID_63eb1e259_subarachnoid 0\n",
"4 ID_63eb1e259_subdural 0"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_df = pd.read_csv(input_folder + 'stage_1_train.csv')\n",
"train_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"train_df['sub_type'] = train_df['ID'].apply(lambda x: x.split('_')[-1])\n",
"train_df['file_name'] = train_df['ID'].apply(lambda x: '_'.join(x.split('_')[:2]) + '.dcm')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ID</th>\n",
" <th>Label</th>\n",
" <th>sub_type</th>\n",
" <th>file_name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>ID_63eb1e259_epidural</td>\n",
" <td>0</td>\n",
" <td>epidural</td>\n",
" <td>ID_63eb1e259.dcm</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>ID_63eb1e259_intraparenchymal</td>\n",
" <td>0</td>\n",
" <td>intraparenchymal</td>\n",
" <td>ID_63eb1e259.dcm</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>ID_63eb1e259_intraventricular</td>\n",
" <td>0</td>\n",
" <td>intraventricular</td>\n",
" <td>ID_63eb1e259.dcm</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>ID_63eb1e259_subarachnoid</td>\n",
" <td>0</td>\n",
" <td>subarachnoid</td>\n",
" <td>ID_63eb1e259.dcm</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>ID_63eb1e259_subdural</td>\n",
" <td>0</td>\n",
" <td>subdural</td>\n",
" <td>ID_63eb1e259.dcm</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ID Label sub_type file_name\n",
"0 ID_63eb1e259_epidural 0 epidural ID_63eb1e259.dcm\n",
"1 ID_63eb1e259_intraparenchymal 0 intraparenchymal ID_63eb1e259.dcm\n",
"2 ID_63eb1e259_intraventricular 0 intraventricular ID_63eb1e259.dcm\n",
"3 ID_63eb1e259_subarachnoid 0 subarachnoid ID_63eb1e259.dcm\n",
"4 ID_63eb1e259_subdural 0 subdural ID_63eb1e259.dcm"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(4045572, 4)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_df.shape"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"train_df.drop(train_df[train_df['file_name'] == 'ID_6431af929.dcm'].index, inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(4045566, 4)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_df.shape"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>sub_type</th>\n",
" <th>any</th>\n",
" <th>epidural</th>\n",
" <th>intraparenchymal</th>\n",
" <th>intraventricular</th>\n",
" <th>subarachnoid</th>\n",
" <th>subdural</th>\n",
" </tr>\n",
" <tr>\n",
" <th>file_name</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>ID_000039fa0.dcm</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>ID_00005679d.dcm</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>ID_00008ce3c.dcm</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>ID_0000950d7.dcm</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>ID_0000aee4b.dcm</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"sub_type any epidural intraparenchymal intraventricular \\\n",
"file_name \n",
"ID_000039fa0.dcm 0 0 0 0 \n",
"ID_00005679d.dcm 0 0 0 0 \n",
"ID_00008ce3c.dcm 0 0 0 0 \n",
"ID_0000950d7.dcm 0 0 0 0 \n",
"ID_0000aee4b.dcm 0 0 0 0 \n",
"\n",
"sub_type subarachnoid subdural \n",
"file_name \n",
"ID_000039fa0.dcm 0 0 \n",
"ID_00005679d.dcm 0 0 \n",
"ID_00008ce3c.dcm 0 0 \n",
"ID_0000950d7.dcm 0 0 \n",
"ID_0000aee4b.dcm 0 0 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_final_df = pd.pivot_table(train_df.drop(columns='ID'), index=\"file_name\", \\\n",
" columns=\"sub_type\", values=\"Label\")\n",
"train_final_df.head()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"data_train, data_val = train_test_split(train_final_df, test_size=0.2)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"((539405, 6), (134852, 6))"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data_train.shape, data_val.shape"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"_cell_guid": "79c7e3d0-c299-4dcb-8224-4455121ee9b0",
"_uuid": "d629ff2d2480ee46fbb7e2d37f6b5fab8052498a"
},
"outputs": [],
"source": [
"from math import log\n",
"\n",
"def _normalize(x):\n",
" x_max = x.max()\n",
" x_min = x.min()\n",
" if x_max != x_min:\n",
" z = (x - x_min) / (x_max - x_min)\n",
" return z\n",
" return np.zeros(x.shape)\n",
"\n",
"def sigmoid_window(img, window_center, window_width, U=1.0, eps=(1.0 / 255.0), desired_size=(256, 256)):\n",
" intercept, slope = img.RescaleIntercept, img.RescaleSlope\n",
" img = img.pixel_array * slope + intercept\n",
" \n",
" # resizing already to save computation\n",
" img = cv2.resize(img, desired_size[:2], interpolation=cv2.INTER_LINEAR)\n",
" \n",
" ue = log((U / eps) - 1.0)\n",
" W = (2 / window_width) * ue\n",
" b = ((-2 * window_center) / window_width) * ue\n",
" z = W * img + b\n",
" img = U / (1 + np.power(np.e, -1.0 * z))\n",
" \n",
" img = _normalize(img)\n",
" \n",
" return img\n",
"\n",
"def sigmoid_bsb_window(img, desired_size):\n",
" brain_img = sigmoid_window(img, 40, 80, desired_size=desired_size)\n",
" subdural_img = sigmoid_window(img, 80, 200, desired_size=desired_size)\n",
" bone_img = sigmoid_window(img, 600, 2000, desired_size=desired_size)\n",
" \n",
" bsb_img = np.zeros((brain_img.shape[0], brain_img.shape[1], 3))\n",
" bsb_img[:, :, 0] = brain_img\n",
" bsb_img[:, :, 1] = subdural_img\n",
" bsb_img[:, :, 2] = bone_img\n",
" return bsb_img"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"path_train_img = input_folder + 'stage_1_train_images/'\n",
"path_test_img = input_folder + 'stage_1_test_images/'"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"dicom = pydicom.dcmread(path_train_img + 'ID_5c8b5d701' + '.dcm')\n",
"plt.imshow(sigmoid_bsb_window(dicom, desired_size=(256, 256)));"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def _read(path, desired_size):\n",
" \"\"\"Will be used in DataGenerator\"\"\"\n",
" \n",
" dcm = pydicom.dcmread(path)\n",
" \n",
" try:\n",
" img = sigmoid_bsb_window(dcm, desired_size)\n",
" except:\n",
" img = np.zeros(desired_size)\n",
" \n",
" return img\n",
"\n",
"# Another sanity check \n",
"plt.imshow(\n",
" _read(path_train_img+'ID_5c8b5d701'+'.dcm', (128, 128))\n",
");"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [],
"source": [
"class DataGenerator(keras.utils.Sequence):\n",
"\n",
" def __init__(self, list_IDs, labels=None, batch_size=1, img_size=(512, 512, 3), \n",
" img_dir=path_train_img, *args, **kwargs):\n",
"\n",
" self.list_IDs = list_IDs\n",
" self.labels = labels\n",
" self.batch_size = batch_size\n",
" self.img_size = img_size\n",
" self.img_dir = img_dir\n",
" self.on_epoch_end()\n",
"\n",
" def __len__(self):\n",
" return int(ceil(len(self.indices) / self.batch_size))\n",
"\n",
" def __getitem__(self, index):\n",
" indices = self.indices[index*self.batch_size:(index+1)*self.batch_size]\n",
" list_IDs_temp = [self.list_IDs[k] for k in indices]\n",
" \n",
" if self.labels is not None:\n",
" X, Y = self.__data_generation(list_IDs_temp)\n",
" return X, Y\n",
" else:\n",
" X = self.__data_generation(list_IDs_temp)\n",
" return X\n",
" \n",
" def on_epoch_end(self):\n",
" \n",
" \n",
" if self.labels is not None: # for training phase we undersample and shuffle\n",
" # keep probability of any=0 and any=1\n",
" keep_prob = self.labels.iloc[:, 0].map({0: 0.35, 1: 0.5})\n",
" keep = (keep_prob > np.random.rand(len(keep_prob)))\n",
" self.indices = np.arange(len(self.list_IDs))[keep]\n",
" np.random.shuffle(self.indices)\n",
" else:\n",
" self.indices = np.arange(len(self.list_IDs))\n",
"\n",
" def __data_generation(self, list_IDs_temp):\n",
" X = np.empty((self.batch_size, *self.img_size))\n",
" \n",
" if self.labels is not None: # training phase\n",
" Y = np.empty((self.batch_size, 6), dtype=np.float32)\n",
" \n",
" for i, ID in enumerate(list_IDs_temp):\n",
" X[i,] = _read(self.img_dir+ID, self.img_size)\n",
" Y[i,] = self.labels.loc[ID].values\n",
" \n",
" return X, Y\n",
" \n",
" else: # test phase\n",
" for i, ID in enumerate(list_IDs_temp):\n",
" X[i,] = _read(self.img_dir+ID+\".dcm\", self.img_size)\n",
" \n",
" return X"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [],
"source": [
"q_size = 224\n",
"img_channel = 3\n",
"num_classes = 6"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [],
"source": [
"batch_size = 128\n",
"train_generator = DataGenerator(list_IDs=data_train.index, labels=data_train, batch_size=batch_size, \n",
" img_size=(q_size, q_size, 3), img_dir=path_train_img)\n",
"val_generator = DataGenerator(list_IDs=data_val.index, labels=data_val, batch_size=batch_size, \n",
" img_size=(q_size, q_size, 3), img_dir=path_train_img)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"from keras import backend as K\n",
"\n",
"def weighted_log_loss(y_true, y_pred):\n",
" \"\"\"\n",
" Can be used as the loss function in model.compile()\n",
" ---------------------------------------------------\n",
" \"\"\"\n",
" \n",
" class_weights = np.array([2., 1., 1., 1., 1., 1.])\n",
" \n",
" eps = K.epsilon()\n",
" \n",
" y_pred = K.clip(y_pred, eps, 1.0-eps)\n",
"\n",
" out = -( y_true * K.log( y_pred) * class_weights\n",
" + (1.0 - y_true) * K.log(1.0 - y_pred) * class_weights)\n",
" \n",
" return K.mean(out, axis=-1)\n",
"\n",
"\n",
"def _normalized_weighted_average(arr, weights=None):\n",
" \"\"\"\n",
" A simple Keras implementation that mimics that of \n",
" numpy.average(), specifically for this competition\n",
" \"\"\"\n",
" \n",
" if weights is not None:\n",
" scl = K.sum(weights)\n",
" weights = K.expand_dims(weights, axis=1)\n",
" return K.sum(K.dot(arr, weights), axis=1) / scl\n",
" return K.mean(arr, axis=1)\n",
"\n",
"\n",
"def weighted_loss(y_true, y_pred):\n",
" \"\"\"\n",
" Will be used as the metric in model.compile()\n",
" ---------------------------------------------\n",
" \n",
" Similar to the custom loss function 'weighted_log_loss()' above\n",
" but with normalized weights, which should be very similar \n",
" to the official competition metric:\n",
" https://www.kaggle.com/kambarakun/lb-probe-weights-n-of-positives-scoring\n",
" and hence:\n",
" sklearn.metrics.log_loss with sample weights\n",
" \"\"\"\n",
" \n",
" class_weights = K.variable([2., 1., 1., 1., 1., 1.])\n",
" \n",
" eps = K.epsilon()\n",
" \n",
" y_pred = K.clip(y_pred, eps, 1.0-eps)\n",
"\n",
" loss = -( y_true * K.log( y_pred)\n",
" + (1.0 - y_true) * K.log(1.0 - y_pred))\n",
" \n",
" loss_samples = _normalized_weighted_average(loss, class_weights)\n",
" \n",
" return K.mean(loss_samples)\n",
"\n",
"\n",
"def weighted_log_loss_metric(trues, preds):\n",
" \"\"\"\n",
" Will be used to calculate the log loss \n",
" of the validation set in PredictionCheckpoint()\n",
" ------------------------------------------\n",
" \"\"\"\n",
" class_weights = [2., 1., 1., 1., 1., 1.]\n",
" \n",
" epsilon = 1e-7\n",
" \n",
" preds = np.clip(preds, epsilon, 1-epsilon)\n",
" loss = trues * np.log(preds) + (1 - trues) * np.log(1 - preds)\n",
" loss_samples = np.average(loss, axis=1, weights=class_weights)\n",
"\n",
" return - loss_samples.mean()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [],
"source": [
"from keras.callbacks import ModelCheckpoint"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"from keras.callbacks import Callback\n",
"from keras import backend as K\n",
"\n",
"class CyclicLR(Callback):\n",
" def __init__(\n",
" self,base_lr=0.001,\n",
" max_lr=0.006,step_size=2000.,\n",
" mode='triangular',gamma=1.,\n",
" scale_fn=None,scale_mode='cycle'):\n",
" \n",
" super(CyclicLR, self).__init__()\n",
"\n",
" if mode not in ['triangular', 'triangular2','exp_range']:\n",
" raise KeyError(\"mode must be one of 'triangular', \"\n",
" \"'triangular2', or 'exp_range'\")\n",
" self.base_lr = base_lr\n",
" self.max_lr = max_lr\n",
" self.step_size = step_size\n",
" self.mode = mode\n",
" self.gamma = gamma\n",
" if scale_fn is None:\n",
" if self.mode == 'triangular':\n",
" self.scale_fn = lambda x: 1.\n",
" self.scale_mode = 'cycle'\n",
" elif self.mode == 'triangular2':\n",
" self.scale_fn = lambda x: 1 / (2.**(x - 1))\n",
" self.scale_mode = 'cycle'\n",
" elif self.mode == 'exp_range':\n",
" self.scale_fn = lambda x: gamma ** x\n",
" self.scale_mode = 'iterations'\n",
" else:\n",
" self.scale_fn = scale_fn\n",
" self.scale_mode = scale_mode\n",
" self.clr_iterations = 0.\n",
" self.trn_iterations = 0.\n",
" self.history = {}\n",
"\n",
" self._reset()\n",
"\n",
" def _reset(self, new_base_lr=None, new_max_lr=None,\n",
" new_step_size=None):\n",
" if new_base_lr is not None:\n",
" self.base_lr = new_base_lr\n",
" if new_max_lr is not None:\n",
" self.max_lr = new_max_lr\n",
" if new_step_size is not None:\n",
" self.step_size = new_step_size\n",
" self.clr_iterations = 0.\n",
" \n",
" def clr(self):\n",
" cycle = np.floor(1 + self.clr_iterations / (2 * self.step_size))\n",
" x = np.abs(self.clr_iterations / self.step_size - 2 * cycle + 1)\n",
" if self.scale_mode == 'cycle':\n",
" return self.base_lr + (self.max_lr - self.base_lr) * \\\n",
" np.maximum(0, (1 - x)) * self.scale_fn(cycle)\n",
" else:\n",
" return self.base_lr + (self.max_lr - self.base_lr) * \\\n",
" np.maximum(0, (1 - x)) * self.scale_fn(self.clr_iterations)\n",
"\n",
" def on_train_begin(self, logs={}):\n",
" logs = logs or {}\n",
"\n",
" if self.clr_iterations == 0:\n",
" K.set_value(self.model.optimizer.lr, self.base_lr)\n",
" else:\n",
" K.set_value(self.model.optimizer.lr, self.clr())\n",
"\n",
" def on_batch_end(self, epoch, logs=None):\n",
"\n",
" logs = logs or {}\n",
" self.trn_iterations += 1\n",
" self.clr_iterations += 1\n",
" K.set_value(self.model.optimizer.lr, self.clr())\n",
"\n",
" self.history.setdefault(\n",
" 'lr', []).append(\n",
" K.get_value(\n",
" self.model.optimizer.lr))\n",
" self.history.setdefault('iterations', []).append(self.trn_iterations)\n",
"\n",
" for k, v in logs.items():\n",
" self.history.setdefault(k, []).append(v)\n",
"\n",
" def on_epoch_end(self, epoch, logs=None):\n",
" logs = logs or {}\n",
" logs['lr'] = K.get_value(self.model.optimizer.lr)\n"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"clr = CyclicLR(base_lr=5e-4, max_lr=0.009,step_size=300, mode='triangular', gamma=0.99994)"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "YWgaFysdYwoG"
},
"outputs": [],
"source": [
"filepath=\"weights-improvement.hdf5\"\n",
"checkpoint = ModelCheckpoint(filepath, monitor='weighted_loss', verbose=1, \\\n",
" save_best_only=True, mode='min')\n",
"\n",
"callbacks_list = [checkpoint, clr]"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting efficientnet==0.0.4\r\n",
" Downloading https://files.pythonhosted.org/packages/a6/80/f2c098284f7c07491e66af18d9a5fea595d4b507d10c0845275b8d47dc6f/efficientnet-0.0.4.tar.gz\r\n",
"Building wheels for collected packages: efficientnet\r\n",
" Building wheel for efficientnet (setup.py) ... \u001b[?25l-\b \b\\\b \bdone\r\n",
"\u001b[?25h Created wheel for efficientnet: filename=efficientnet-0.0.4-cp36-none-any.whl size=14288 sha256=de133e6e020da66b9da2a0da8daa3d9e86e83a3374b2b379225f4bbf5ef664b6\r\n",
" Stored in directory: /tmp/.cache/pip/wheels/5c/34/68/a611a699a28239e964ccf144c0e767cdb5439fee82ec5de6e0\r\n",
"Successfully built efficientnet\r\n",
"Installing collected packages: efficientnet\r\n",
"Successfully installed efficientnet-0.0.4\r\n"
]
}
],
"source": [
"!pip install efficientnet==0.0.4"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"import efficientnet"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading data from https://github.com/fchollet/deep-learning-models/releases/download/v0.5/inception_v3_weights_tf_dim_ordering_tf_kernels_notop.h5\n",
"87916544/87910968 [==============================] - 4s 0us/step\n"
]
}
],
"source": [
"conv_base = keras.applications.InceptionV3(weights='imagenet',\n",
" include_top=False,\n",
" input_shape=(q_size, q_size, img_channel))\n",
"conv_base.trainable = True"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 122
},
"colab_type": "code",
"executionInfo": {
"elapsed": 24120,
"status": "ok",
"timestamp": 1570456196827,
"user": {
"displayName": "Surya Parsa",
"photoUrl": "https://lh3.googleusercontent.com/a-/AAuE7mDwHLlPkTL9wrT21STUUbn7ijL3sB2NeAbXsslOmw=s64",
"userId": "12601516421747970015"
},
"user_tz": -330
},
"id": "GmS3Yjc9eduu",
"outputId": "32e2289a-b5ef-4411-fbe0-75545086bcb3"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Downloading data from https://github.com/qubvel/efficientnet/releases/download/v0.0.1/efficientnet-b0_imagenet_1000_notop.h5\n",
"16719872/16717576 [==============================] - 1s 0us/step\n"
]
}
],
"source": [
"effnet = efficientnet.EfficientNetB0(weights='imagenet',\n",
" include_top=False,\n",
" input_shape=(224, 224, 3))"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "zzRckR9Re_tT"
},
"outputs": [],
"source": [
"effnet.trainable = False"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(None, 224, 224, 3)"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"effnet.input_shape"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [],
"source": [
"x = keras.layers.GlobalAveragePooling2D(name='avg_pool')(conv_base.output)\n",
"x = keras.layers.Dropout(0.2)(x)\n",
"x = keras.layers.Dense(keras.backend.int_shape(x)[1], activation=\"relu\", name=\"dense_hidden_1\")(x)\n",
"x = keras.layers.Dropout(0.1)(x)\n",
"out = keras.layers.Dense(6, activation=\"sigmoid\", name='dense_output')(x)\n",
"model = keras.models.Model(inputs=conv_base.input, outputs=out)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: \"model_2\"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input_1 (InputLayer) (None, 224, 224, 3) 0 \n",
"__________________________________________________________________________________________________\n",
"conv2d_1 (Conv2D) (None, 111, 111, 32) 864 input_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_1 (BatchNor (None, 111, 111, 32) 96 conv2d_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_1 (Activation) (None, 111, 111, 32) 0 batch_normalization_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_2 (Conv2D) (None, 109, 109, 32) 9216 activation_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_2 (BatchNor (None, 109, 109, 32) 96 conv2d_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_2 (Activation) (None, 109, 109, 32) 0 batch_normalization_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_3 (Conv2D) (None, 109, 109, 64) 18432 activation_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_3 (BatchNor (None, 109, 109, 64) 192 conv2d_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_3 (Activation) (None, 109, 109, 64) 0 batch_normalization_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"max_pooling2d_1 (MaxPooling2D) (None, 54, 54, 64) 0 activation_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_4 (Conv2D) (None, 54, 54, 80) 5120 max_pooling2d_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_4 (BatchNor (None, 54, 54, 80) 240 conv2d_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_4 (Activation) (None, 54, 54, 80) 0 batch_normalization_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_5 (Conv2D) (None, 52, 52, 192) 138240 activation_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_5 (BatchNor (None, 52, 52, 192) 576 conv2d_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_5 (Activation) (None, 52, 52, 192) 0 batch_normalization_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"max_pooling2d_2 (MaxPooling2D) (None, 25, 25, 192) 0 activation_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_9 (Conv2D) (None, 25, 25, 64) 12288 max_pooling2d_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_9 (BatchNor (None, 25, 25, 64) 192 conv2d_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_9 (Activation) (None, 25, 25, 64) 0 batch_normalization_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_7 (Conv2D) (None, 25, 25, 48) 9216 max_pooling2d_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_10 (Conv2D) (None, 25, 25, 96) 55296 activation_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_7 (BatchNor (None, 25, 25, 48) 144 conv2d_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_10 (BatchNo (None, 25, 25, 96) 288 conv2d_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_7 (Activation) (None, 25, 25, 48) 0 batch_normalization_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_10 (Activation) (None, 25, 25, 96) 0 batch_normalization_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"average_pooling2d_1 (AveragePoo (None, 25, 25, 192) 0 max_pooling2d_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_6 (Conv2D) (None, 25, 25, 64) 12288 max_pooling2d_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_8 (Conv2D) (None, 25, 25, 64) 76800 activation_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_11 (Conv2D) (None, 25, 25, 96) 82944 activation_10[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_12 (Conv2D) (None, 25, 25, 32) 6144 average_pooling2d_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_6 (BatchNor (None, 25, 25, 64) 192 conv2d_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_8 (BatchNor (None, 25, 25, 64) 192 conv2d_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_11 (BatchNo (None, 25, 25, 96) 288 conv2d_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_12 (BatchNo (None, 25, 25, 32) 96 conv2d_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_6 (Activation) (None, 25, 25, 64) 0 batch_normalization_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_8 (Activation) (None, 25, 25, 64) 0 batch_normalization_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_11 (Activation) (None, 25, 25, 96) 0 batch_normalization_11[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_12 (Activation) (None, 25, 25, 32) 0 batch_normalization_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"mixed0 (Concatenate) (None, 25, 25, 256) 0 activation_6[0][0] \n",
" activation_8[0][0] \n",
" activation_11[0][0] \n",
" activation_12[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_16 (Conv2D) (None, 25, 25, 64) 16384 mixed0[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_16 (BatchNo (None, 25, 25, 64) 192 conv2d_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_16 (Activation) (None, 25, 25, 64) 0 batch_normalization_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_14 (Conv2D) (None, 25, 25, 48) 12288 mixed0[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_17 (Conv2D) (None, 25, 25, 96) 55296 activation_16[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_14 (BatchNo (None, 25, 25, 48) 144 conv2d_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_17 (BatchNo (None, 25, 25, 96) 288 conv2d_17[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_14 (Activation) (None, 25, 25, 48) 0 batch_normalization_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_17 (Activation) (None, 25, 25, 96) 0 batch_normalization_17[0][0] \n",
"__________________________________________________________________________________________________\n",
"average_pooling2d_2 (AveragePoo (None, 25, 25, 256) 0 mixed0[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_13 (Conv2D) (None, 25, 25, 64) 16384 mixed0[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_15 (Conv2D) (None, 25, 25, 64) 76800 activation_14[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_18 (Conv2D) (None, 25, 25, 96) 82944 activation_17[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_19 (Conv2D) (None, 25, 25, 64) 16384 average_pooling2d_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_13 (BatchNo (None, 25, 25, 64) 192 conv2d_13[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_15 (BatchNo (None, 25, 25, 64) 192 conv2d_15[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_18 (BatchNo (None, 25, 25, 96) 288 conv2d_18[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_19 (BatchNo (None, 25, 25, 64) 192 conv2d_19[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_13 (Activation) (None, 25, 25, 64) 0 batch_normalization_13[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_15 (Activation) (None, 25, 25, 64) 0 batch_normalization_15[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_18 (Activation) (None, 25, 25, 96) 0 batch_normalization_18[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_19 (Activation) (None, 25, 25, 64) 0 batch_normalization_19[0][0] \n",
"__________________________________________________________________________________________________\n",
"mixed1 (Concatenate) (None, 25, 25, 288) 0 activation_13[0][0] \n",
" activation_15[0][0] \n",
" activation_18[0][0] \n",
" activation_19[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_23 (Conv2D) (None, 25, 25, 64) 18432 mixed1[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_23 (BatchNo (None, 25, 25, 64) 192 conv2d_23[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_23 (Activation) (None, 25, 25, 64) 0 batch_normalization_23[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_21 (Conv2D) (None, 25, 25, 48) 13824 mixed1[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_24 (Conv2D) (None, 25, 25, 96) 55296 activation_23[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_21 (BatchNo (None, 25, 25, 48) 144 conv2d_21[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_24 (BatchNo (None, 25, 25, 96) 288 conv2d_24[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_21 (Activation) (None, 25, 25, 48) 0 batch_normalization_21[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_24 (Activation) (None, 25, 25, 96) 0 batch_normalization_24[0][0] \n",
"__________________________________________________________________________________________________\n",
"average_pooling2d_3 (AveragePoo (None, 25, 25, 288) 0 mixed1[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_20 (Conv2D) (None, 25, 25, 64) 18432 mixed1[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_22 (Conv2D) (None, 25, 25, 64) 76800 activation_21[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_25 (Conv2D) (None, 25, 25, 96) 82944 activation_24[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_26 (Conv2D) (None, 25, 25, 64) 18432 average_pooling2d_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_20 (BatchNo (None, 25, 25, 64) 192 conv2d_20[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_22 (BatchNo (None, 25, 25, 64) 192 conv2d_22[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_25 (BatchNo (None, 25, 25, 96) 288 conv2d_25[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_26 (BatchNo (None, 25, 25, 64) 192 conv2d_26[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_20 (Activation) (None, 25, 25, 64) 0 batch_normalization_20[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_22 (Activation) (None, 25, 25, 64) 0 batch_normalization_22[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_25 (Activation) (None, 25, 25, 96) 0 batch_normalization_25[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_26 (Activation) (None, 25, 25, 64) 0 batch_normalization_26[0][0] \n",
"__________________________________________________________________________________________________\n",
"mixed2 (Concatenate) (None, 25, 25, 288) 0 activation_20[0][0] \n",
" activation_22[0][0] \n",
" activation_25[0][0] \n",
" activation_26[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_28 (Conv2D) (None, 25, 25, 64) 18432 mixed2[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_28 (BatchNo (None, 25, 25, 64) 192 conv2d_28[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_28 (Activation) (None, 25, 25, 64) 0 batch_normalization_28[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_29 (Conv2D) (None, 25, 25, 96) 55296 activation_28[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_29 (BatchNo (None, 25, 25, 96) 288 conv2d_29[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_29 (Activation) (None, 25, 25, 96) 0 batch_normalization_29[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_27 (Conv2D) (None, 12, 12, 384) 995328 mixed2[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_30 (Conv2D) (None, 12, 12, 96) 82944 activation_29[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_27 (BatchNo (None, 12, 12, 384) 1152 conv2d_27[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_30 (BatchNo (None, 12, 12, 96) 288 conv2d_30[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_27 (Activation) (None, 12, 12, 384) 0 batch_normalization_27[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_30 (Activation) (None, 12, 12, 96) 0 batch_normalization_30[0][0] \n",
"__________________________________________________________________________________________________\n",
"max_pooling2d_3 (MaxPooling2D) (None, 12, 12, 288) 0 mixed2[0][0] \n",
"__________________________________________________________________________________________________\n",
"mixed3 (Concatenate) (None, 12, 12, 768) 0 activation_27[0][0] \n",
" activation_30[0][0] \n",
" max_pooling2d_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_35 (Conv2D) (None, 12, 12, 128) 98304 mixed3[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_35 (BatchNo (None, 12, 12, 128) 384 conv2d_35[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_35 (Activation) (None, 12, 12, 128) 0 batch_normalization_35[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_36 (Conv2D) (None, 12, 12, 128) 114688 activation_35[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_36 (BatchNo (None, 12, 12, 128) 384 conv2d_36[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_36 (Activation) (None, 12, 12, 128) 0 batch_normalization_36[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_32 (Conv2D) (None, 12, 12, 128) 98304 mixed3[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_37 (Conv2D) (None, 12, 12, 128) 114688 activation_36[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_32 (BatchNo (None, 12, 12, 128) 384 conv2d_32[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_37 (BatchNo (None, 12, 12, 128) 384 conv2d_37[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_32 (Activation) (None, 12, 12, 128) 0 batch_normalization_32[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_37 (Activation) (None, 12, 12, 128) 0 batch_normalization_37[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_33 (Conv2D) (None, 12, 12, 128) 114688 activation_32[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_38 (Conv2D) (None, 12, 12, 128) 114688 activation_37[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_33 (BatchNo (None, 12, 12, 128) 384 conv2d_33[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_38 (BatchNo (None, 12, 12, 128) 384 conv2d_38[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_33 (Activation) (None, 12, 12, 128) 0 batch_normalization_33[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_38 (Activation) (None, 12, 12, 128) 0 batch_normalization_38[0][0] \n",
"__________________________________________________________________________________________________\n",
"average_pooling2d_4 (AveragePoo (None, 12, 12, 768) 0 mixed3[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_31 (Conv2D) (None, 12, 12, 192) 147456 mixed3[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_34 (Conv2D) (None, 12, 12, 192) 172032 activation_33[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_39 (Conv2D) (None, 12, 12, 192) 172032 activation_38[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_40 (Conv2D) (None, 12, 12, 192) 147456 average_pooling2d_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_31 (BatchNo (None, 12, 12, 192) 576 conv2d_31[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_34 (BatchNo (None, 12, 12, 192) 576 conv2d_34[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_39 (BatchNo (None, 12, 12, 192) 576 conv2d_39[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_40 (BatchNo (None, 12, 12, 192) 576 conv2d_40[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_31 (Activation) (None, 12, 12, 192) 0 batch_normalization_31[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_34 (Activation) (None, 12, 12, 192) 0 batch_normalization_34[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_39 (Activation) (None, 12, 12, 192) 0 batch_normalization_39[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_40 (Activation) (None, 12, 12, 192) 0 batch_normalization_40[0][0] \n",
"__________________________________________________________________________________________________\n",
"mixed4 (Concatenate) (None, 12, 12, 768) 0 activation_31[0][0] \n",
" activation_34[0][0] \n",
" activation_39[0][0] \n",
" activation_40[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_45 (Conv2D) (None, 12, 12, 160) 122880 mixed4[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_45 (BatchNo (None, 12, 12, 160) 480 conv2d_45[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_45 (Activation) (None, 12, 12, 160) 0 batch_normalization_45[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_46 (Conv2D) (None, 12, 12, 160) 179200 activation_45[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_46 (BatchNo (None, 12, 12, 160) 480 conv2d_46[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_46 (Activation) (None, 12, 12, 160) 0 batch_normalization_46[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_42 (Conv2D) (None, 12, 12, 160) 122880 mixed4[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_47 (Conv2D) (None, 12, 12, 160) 179200 activation_46[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_42 (BatchNo (None, 12, 12, 160) 480 conv2d_42[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_47 (BatchNo (None, 12, 12, 160) 480 conv2d_47[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_42 (Activation) (None, 12, 12, 160) 0 batch_normalization_42[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_47 (Activation) (None, 12, 12, 160) 0 batch_normalization_47[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_43 (Conv2D) (None, 12, 12, 160) 179200 activation_42[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_48 (Conv2D) (None, 12, 12, 160) 179200 activation_47[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_43 (BatchNo (None, 12, 12, 160) 480 conv2d_43[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_48 (BatchNo (None, 12, 12, 160) 480 conv2d_48[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_43 (Activation) (None, 12, 12, 160) 0 batch_normalization_43[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_48 (Activation) (None, 12, 12, 160) 0 batch_normalization_48[0][0] \n",
"__________________________________________________________________________________________________\n",
"average_pooling2d_5 (AveragePoo (None, 12, 12, 768) 0 mixed4[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_41 (Conv2D) (None, 12, 12, 192) 147456 mixed4[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_44 (Conv2D) (None, 12, 12, 192) 215040 activation_43[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_49 (Conv2D) (None, 12, 12, 192) 215040 activation_48[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_50 (Conv2D) (None, 12, 12, 192) 147456 average_pooling2d_5[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_41 (BatchNo (None, 12, 12, 192) 576 conv2d_41[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_44 (BatchNo (None, 12, 12, 192) 576 conv2d_44[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_49 (BatchNo (None, 12, 12, 192) 576 conv2d_49[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_50 (BatchNo (None, 12, 12, 192) 576 conv2d_50[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_41 (Activation) (None, 12, 12, 192) 0 batch_normalization_41[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_44 (Activation) (None, 12, 12, 192) 0 batch_normalization_44[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_49 (Activation) (None, 12, 12, 192) 0 batch_normalization_49[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_50 (Activation) (None, 12, 12, 192) 0 batch_normalization_50[0][0] \n",
"__________________________________________________________________________________________________\n",
"mixed5 (Concatenate) (None, 12, 12, 768) 0 activation_41[0][0] \n",
" activation_44[0][0] \n",
" activation_49[0][0] \n",
" activation_50[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_55 (Conv2D) (None, 12, 12, 160) 122880 mixed5[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_55 (BatchNo (None, 12, 12, 160) 480 conv2d_55[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_55 (Activation) (None, 12, 12, 160) 0 batch_normalization_55[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_56 (Conv2D) (None, 12, 12, 160) 179200 activation_55[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_56 (BatchNo (None, 12, 12, 160) 480 conv2d_56[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_56 (Activation) (None, 12, 12, 160) 0 batch_normalization_56[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_52 (Conv2D) (None, 12, 12, 160) 122880 mixed5[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_57 (Conv2D) (None, 12, 12, 160) 179200 activation_56[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_52 (BatchNo (None, 12, 12, 160) 480 conv2d_52[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_57 (BatchNo (None, 12, 12, 160) 480 conv2d_57[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_52 (Activation) (None, 12, 12, 160) 0 batch_normalization_52[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_57 (Activation) (None, 12, 12, 160) 0 batch_normalization_57[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_53 (Conv2D) (None, 12, 12, 160) 179200 activation_52[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_58 (Conv2D) (None, 12, 12, 160) 179200 activation_57[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_53 (BatchNo (None, 12, 12, 160) 480 conv2d_53[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_58 (BatchNo (None, 12, 12, 160) 480 conv2d_58[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_53 (Activation) (None, 12, 12, 160) 0 batch_normalization_53[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_58 (Activation) (None, 12, 12, 160) 0 batch_normalization_58[0][0] \n",
"__________________________________________________________________________________________________\n",
"average_pooling2d_6 (AveragePoo (None, 12, 12, 768) 0 mixed5[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_51 (Conv2D) (None, 12, 12, 192) 147456 mixed5[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_54 (Conv2D) (None, 12, 12, 192) 215040 activation_53[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_59 (Conv2D) (None, 12, 12, 192) 215040 activation_58[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_60 (Conv2D) (None, 12, 12, 192) 147456 average_pooling2d_6[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_51 (BatchNo (None, 12, 12, 192) 576 conv2d_51[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_54 (BatchNo (None, 12, 12, 192) 576 conv2d_54[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_59 (BatchNo (None, 12, 12, 192) 576 conv2d_59[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_60 (BatchNo (None, 12, 12, 192) 576 conv2d_60[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_51 (Activation) (None, 12, 12, 192) 0 batch_normalization_51[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_54 (Activation) (None, 12, 12, 192) 0 batch_normalization_54[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_59 (Activation) (None, 12, 12, 192) 0 batch_normalization_59[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_60 (Activation) (None, 12, 12, 192) 0 batch_normalization_60[0][0] \n",
"__________________________________________________________________________________________________\n",
"mixed6 (Concatenate) (None, 12, 12, 768) 0 activation_51[0][0] \n",
" activation_54[0][0] \n",
" activation_59[0][0] \n",
" activation_60[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_65 (Conv2D) (None, 12, 12, 192) 147456 mixed6[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_65 (BatchNo (None, 12, 12, 192) 576 conv2d_65[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_65 (Activation) (None, 12, 12, 192) 0 batch_normalization_65[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_66 (Conv2D) (None, 12, 12, 192) 258048 activation_65[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_66 (BatchNo (None, 12, 12, 192) 576 conv2d_66[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_66 (Activation) (None, 12, 12, 192) 0 batch_normalization_66[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_62 (Conv2D) (None, 12, 12, 192) 147456 mixed6[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_67 (Conv2D) (None, 12, 12, 192) 258048 activation_66[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_62 (BatchNo (None, 12, 12, 192) 576 conv2d_62[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_67 (BatchNo (None, 12, 12, 192) 576 conv2d_67[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_62 (Activation) (None, 12, 12, 192) 0 batch_normalization_62[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_67 (Activation) (None, 12, 12, 192) 0 batch_normalization_67[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_63 (Conv2D) (None, 12, 12, 192) 258048 activation_62[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_68 (Conv2D) (None, 12, 12, 192) 258048 activation_67[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_63 (BatchNo (None, 12, 12, 192) 576 conv2d_63[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_68 (BatchNo (None, 12, 12, 192) 576 conv2d_68[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_63 (Activation) (None, 12, 12, 192) 0 batch_normalization_63[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_68 (Activation) (None, 12, 12, 192) 0 batch_normalization_68[0][0] \n",
"__________________________________________________________________________________________________\n",
"average_pooling2d_7 (AveragePoo (None, 12, 12, 768) 0 mixed6[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_61 (Conv2D) (None, 12, 12, 192) 147456 mixed6[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_64 (Conv2D) (None, 12, 12, 192) 258048 activation_63[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_69 (Conv2D) (None, 12, 12, 192) 258048 activation_68[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_70 (Conv2D) (None, 12, 12, 192) 147456 average_pooling2d_7[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_61 (BatchNo (None, 12, 12, 192) 576 conv2d_61[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_64 (BatchNo (None, 12, 12, 192) 576 conv2d_64[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_69 (BatchNo (None, 12, 12, 192) 576 conv2d_69[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_70 (BatchNo (None, 12, 12, 192) 576 conv2d_70[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_61 (Activation) (None, 12, 12, 192) 0 batch_normalization_61[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_64 (Activation) (None, 12, 12, 192) 0 batch_normalization_64[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_69 (Activation) (None, 12, 12, 192) 0 batch_normalization_69[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_70 (Activation) (None, 12, 12, 192) 0 batch_normalization_70[0][0] \n",
"__________________________________________________________________________________________________\n",
"mixed7 (Concatenate) (None, 12, 12, 768) 0 activation_61[0][0] \n",
" activation_64[0][0] \n",
" activation_69[0][0] \n",
" activation_70[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_73 (Conv2D) (None, 12, 12, 192) 147456 mixed7[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_73 (BatchNo (None, 12, 12, 192) 576 conv2d_73[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_73 (Activation) (None, 12, 12, 192) 0 batch_normalization_73[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_74 (Conv2D) (None, 12, 12, 192) 258048 activation_73[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_74 (BatchNo (None, 12, 12, 192) 576 conv2d_74[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_74 (Activation) (None, 12, 12, 192) 0 batch_normalization_74[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_71 (Conv2D) (None, 12, 12, 192) 147456 mixed7[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_75 (Conv2D) (None, 12, 12, 192) 258048 activation_74[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_71 (BatchNo (None, 12, 12, 192) 576 conv2d_71[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_75 (BatchNo (None, 12, 12, 192) 576 conv2d_75[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_71 (Activation) (None, 12, 12, 192) 0 batch_normalization_71[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_75 (Activation) (None, 12, 12, 192) 0 batch_normalization_75[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_72 (Conv2D) (None, 5, 5, 320) 552960 activation_71[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_76 (Conv2D) (None, 5, 5, 192) 331776 activation_75[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_72 (BatchNo (None, 5, 5, 320) 960 conv2d_72[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_76 (BatchNo (None, 5, 5, 192) 576 conv2d_76[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_72 (Activation) (None, 5, 5, 320) 0 batch_normalization_72[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_76 (Activation) (None, 5, 5, 192) 0 batch_normalization_76[0][0] \n",
"__________________________________________________________________________________________________\n",
"max_pooling2d_4 (MaxPooling2D) (None, 5, 5, 768) 0 mixed7[0][0] \n",
"__________________________________________________________________________________________________\n",
"mixed8 (Concatenate) (None, 5, 5, 1280) 0 activation_72[0][0] \n",
" activation_76[0][0] \n",
" max_pooling2d_4[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_81 (Conv2D) (None, 5, 5, 448) 573440 mixed8[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_81 (BatchNo (None, 5, 5, 448) 1344 conv2d_81[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_81 (Activation) (None, 5, 5, 448) 0 batch_normalization_81[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_78 (Conv2D) (None, 5, 5, 384) 491520 mixed8[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_82 (Conv2D) (None, 5, 5, 384) 1548288 activation_81[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_78 (BatchNo (None, 5, 5, 384) 1152 conv2d_78[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_82 (BatchNo (None, 5, 5, 384) 1152 conv2d_82[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_78 (Activation) (None, 5, 5, 384) 0 batch_normalization_78[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_82 (Activation) (None, 5, 5, 384) 0 batch_normalization_82[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_79 (Conv2D) (None, 5, 5, 384) 442368 activation_78[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_80 (Conv2D) (None, 5, 5, 384) 442368 activation_78[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_83 (Conv2D) (None, 5, 5, 384) 442368 activation_82[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_84 (Conv2D) (None, 5, 5, 384) 442368 activation_82[0][0] \n",
"__________________________________________________________________________________________________\n",
"average_pooling2d_8 (AveragePoo (None, 5, 5, 1280) 0 mixed8[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_77 (Conv2D) (None, 5, 5, 320) 409600 mixed8[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_79 (BatchNo (None, 5, 5, 384) 1152 conv2d_79[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_80 (BatchNo (None, 5, 5, 384) 1152 conv2d_80[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_83 (BatchNo (None, 5, 5, 384) 1152 conv2d_83[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_84 (BatchNo (None, 5, 5, 384) 1152 conv2d_84[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_85 (Conv2D) (None, 5, 5, 192) 245760 average_pooling2d_8[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_77 (BatchNo (None, 5, 5, 320) 960 conv2d_77[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_79 (Activation) (None, 5, 5, 384) 0 batch_normalization_79[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_80 (Activation) (None, 5, 5, 384) 0 batch_normalization_80[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_83 (Activation) (None, 5, 5, 384) 0 batch_normalization_83[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_84 (Activation) (None, 5, 5, 384) 0 batch_normalization_84[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_85 (BatchNo (None, 5, 5, 192) 576 conv2d_85[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_77 (Activation) (None, 5, 5, 320) 0 batch_normalization_77[0][0] \n",
"__________________________________________________________________________________________________\n",
"mixed9_0 (Concatenate) (None, 5, 5, 768) 0 activation_79[0][0] \n",
" activation_80[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_1 (Concatenate) (None, 5, 5, 768) 0 activation_83[0][0] \n",
" activation_84[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_85 (Activation) (None, 5, 5, 192) 0 batch_normalization_85[0][0] \n",
"__________________________________________________________________________________________________\n",
"mixed9 (Concatenate) (None, 5, 5, 2048) 0 activation_77[0][0] \n",
" mixed9_0[0][0] \n",
" concatenate_1[0][0] \n",
" activation_85[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_90 (Conv2D) (None, 5, 5, 448) 917504 mixed9[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_90 (BatchNo (None, 5, 5, 448) 1344 conv2d_90[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_90 (Activation) (None, 5, 5, 448) 0 batch_normalization_90[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_87 (Conv2D) (None, 5, 5, 384) 786432 mixed9[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_91 (Conv2D) (None, 5, 5, 384) 1548288 activation_90[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_87 (BatchNo (None, 5, 5, 384) 1152 conv2d_87[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_91 (BatchNo (None, 5, 5, 384) 1152 conv2d_91[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_87 (Activation) (None, 5, 5, 384) 0 batch_normalization_87[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_91 (Activation) (None, 5, 5, 384) 0 batch_normalization_91[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_88 (Conv2D) (None, 5, 5, 384) 442368 activation_87[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_89 (Conv2D) (None, 5, 5, 384) 442368 activation_87[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_92 (Conv2D) (None, 5, 5, 384) 442368 activation_91[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_93 (Conv2D) (None, 5, 5, 384) 442368 activation_91[0][0] \n",
"__________________________________________________________________________________________________\n",
"average_pooling2d_9 (AveragePoo (None, 5, 5, 2048) 0 mixed9[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_86 (Conv2D) (None, 5, 5, 320) 655360 mixed9[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_88 (BatchNo (None, 5, 5, 384) 1152 conv2d_88[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_89 (BatchNo (None, 5, 5, 384) 1152 conv2d_89[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_92 (BatchNo (None, 5, 5, 384) 1152 conv2d_92[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_93 (BatchNo (None, 5, 5, 384) 1152 conv2d_93[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv2d_94 (Conv2D) (None, 5, 5, 192) 393216 average_pooling2d_9[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_86 (BatchNo (None, 5, 5, 320) 960 conv2d_86[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_88 (Activation) (None, 5, 5, 384) 0 batch_normalization_88[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_89 (Activation) (None, 5, 5, 384) 0 batch_normalization_89[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_92 (Activation) (None, 5, 5, 384) 0 batch_normalization_92[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_93 (Activation) (None, 5, 5, 384) 0 batch_normalization_93[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_94 (BatchNo (None, 5, 5, 192) 576 conv2d_94[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_86 (Activation) (None, 5, 5, 320) 0 batch_normalization_86[0][0] \n",
"__________________________________________________________________________________________________\n",
"mixed9_1 (Concatenate) (None, 5, 5, 768) 0 activation_88[0][0] \n",
" activation_89[0][0] \n",
"__________________________________________________________________________________________________\n",
"concatenate_2 (Concatenate) (None, 5, 5, 768) 0 activation_92[0][0] \n",
" activation_93[0][0] \n",
"__________________________________________________________________________________________________\n",
"activation_94 (Activation) (None, 5, 5, 192) 0 batch_normalization_94[0][0] \n",
"__________________________________________________________________________________________________\n",
"mixed10 (Concatenate) (None, 5, 5, 2048) 0 activation_86[0][0] \n",
" mixed9_1[0][0] \n",
" concatenate_2[0][0] \n",
" activation_94[0][0] \n",
"__________________________________________________________________________________________________\n",
"avg_pool (GlobalAveragePooling2 (None, 2048) 0 mixed10[0][0] \n",
"__________________________________________________________________________________________________\n",
"dropout_1 (Dropout) (None, 2048) 0 avg_pool[0][0] \n",
"__________________________________________________________________________________________________\n",
"dense_hidden_1 (Dense) (None, 2048) 4196352 dropout_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"dropout_2 (Dropout) (None, 2048) 0 dense_hidden_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"dense_output (Dense) (None, 6) 12294 dropout_2[0][0] \n",
"==================================================================================================\n",
"Total params: 26,011,430\n",
"Trainable params: 25,976,998\n",
"Non-trainable params: 34,432\n",
"__________________________________________________________________________________________________\n"
]
}
],
"source": [
"model.compile(loss=weighted_log_loss, optimizer=Adam(), metrics=[weighted_loss])\n",
"\n",
"model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [],
"source": [
"# model = Sequential()\n",
"# model.add(effnet)\n",
"# # model.add(keras.layers.GlobalAveragePooling2D(name='avg_pool'))\n",
"# model.add(Dropout(0.3))\n",
"# model.add(Flatten())\n",
"# model.add(Dense(32, activation='relu'))\n",
"# model.add(Dense(6, activation='sigmoid'))\n",
"\n",
"\n",
"# # # model.add(Dense(64, activation='relu'))\n",
"# # # model.add(Dropout(0.5))\n",
"# # # model.add(Dense(32, activation='relu'))\n",
"# # # model.add(Dropout(0.5))\n",
"# # # model.add(Dense(6, activation='sigmoid'))\n",
"# # # from keras.models import Model\n",
"# # # from keras.layers import Input, Dense\n",
"\n",
"# # # a = Input(shape=(224, 224, 3))\n",
"# # # a = effnet(a)\n",
"# # # x = keras.layers.GlobalAveragePooling2D(name='avg_pool')(a)\n",
"# # # x = keras.layers.Dropout(0.2)(x)\n",
"# # # x = keras.layers.Dense(keras.backend.int_shape(x)[1], activation=\"relu\", name=\"dense_hidden_1\")(x)\n",
"# # # x = keras.layers.Dropout(0.1)(x)\n",
"# # # out = keras.layers.Dense(6, activation=\"sigmoid\", name='dense_output')(x)\n",
"\n",
"# # # model = keras.models.Model(inputs=a, outputs=out)\n",
"\n",
"# model.compile(loss=weighted_log_loss, optimizer=Adam(), metrics=[weighted_loss])\n",
"\n",
"# model.summary()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/4\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/lib/python3.6/site-packages/ipykernel_launcher.py:22: RuntimeWarning: overflow encountered in power\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"1564/1564 [==============================] - 3435s 2s/step - loss: 0.2244 - weighted_loss: 0.1923 - val_loss: 0.6349 - val_weighted_loss: 0.2358\n",
"\n",
"Epoch 00001: weighted_loss improved from inf to 0.19233, saving model to weights-improvement.hdf5\n",
"Epoch 2/4\n",
"1561/1561 [==============================] - 3375s 2s/step - loss: 0.2077 - weighted_loss: 0.1780 - val_loss: 0.2423 - val_weighted_loss: 0.1894\n",
"\n",
"Epoch 00002: weighted_loss improved from 0.19233 to 0.17804, saving model to weights-improvement.hdf5\n",
"Epoch 3/4\n",
"1566/1566 [==============================] - 3451s 2s/step - loss: 278360175505868839625628319744.0000 - weighted_loss: 238594430895644198977568505856.0000 - val_loss: 0.1466 - val_weighted_loss: 0.1605\n",
"\n",
"Epoch 00003: weighted_loss did not improve from 0.17804\n",
"Epoch 4/4\n",
"1566/1566 [==============================] - 3443s 2s/step - loss: 0.1809 - weighted_loss: 0.1551 - val_loss: 0.3426 - val_weighted_loss: 0.2200\n",
"\n",
"Epoch 00004: weighted_loss improved from 0.17804 to 0.15509, saving model to weights-improvement.hdf5\n"
]
},
{
"data": {
"text/plain": [
"<keras.callbacks.callbacks.History at 0x7f060dacff60>"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.fit_generator(generator=train_generator,\n",
" validation_data=val_generator,\n",
" epochs=4, workers=os.cpu_count()*2, callbacks=callbacks_list)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.5"
}
},
"nbformat": 4,
"nbformat_minor": 1
}