{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"**Introduction**\n\n* This kernel is a detailed guide for transfer learning on Dog Breeds problem, it's all about learning a new technique, evaluate it using only Kaggle training set without cheating.\n\n* The aim of this kernel is to show you how to use pre-trained CNN models as feature extractors, which one of the most effective transfer learning techniques.\n\n* A reasonable question comes to your mind, 'Wait, why do we have to use this technique, why don't we just use regular transfer learning ?', if you try to do so, you will figure out that the problem is pretty hard for a single model to handle (you would get higher loss and less accuracy).\n\n* It's even hard for humankind to distinguish between 120 dog breeds!, single poor CNN would struggle.\n\n**Explanation**\n\n* Take look at general CNN architecture for image classification in two main parts, “feature extractor” that based on conv-layers, and “classifier” which usually based on fully connected layers:\n\n![image.png](attachment:image.png)\n\n* Simply, feature extractor could be created as follow > (Feature Extractor = Pretrained Model - Late Fully Connected Layers)\n\n* For example, InceptionV3 feature extractor (without last FC layer) outputs 2048 vector for each image sample, each value represent a certain feature of dog image (Coded in numerical values of course), like Dog color?, How big is his head?, Shape of the eyes?, length of the tale?, Size? .. etc\n\n* Hence, more \"different\" feature extractors mean more features to be used to determine which breed does this dog belong.\n\n* So our strategy goes as the following,\n  1. Create 4 feature extractor using different pre-trained CNN models\n  2. Extract features from raw data and stacks the features together.\n  3. Use a simple DNN with one dense layer and a heavy dropout layer to figure out patterns in the feature extracted from the data.\n     \n     \n* The code is simple, concise and fully-commented. Feel free to ask for help / more info / more explanation in the comments.\n\n* Finally if this kernel helps you somehow, kindly don't forget to leave a little upvote.\n\n* ENJOY.\n","metadata":{},"attachments":{"image.png":{"image/png":"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"}}},{"cell_type":"code","source":"import numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\nimport os, cv2, random, time, shutil, csv\nimport tensorflow as tf\nimport seaborn as sns\nimport matplotlib.pyplot as plt\nimport matplotlib.image as mpimg\nfrom tqdm import tqdm\nnp.random.seed(42)\n%matplotlib inline \nimport json\nimport os\nimport cv2\nimport keras\nfrom keras.preprocessing.image import ImageDataGenerator\nfrom keras.models import Model\nfrom keras.layers import BatchNormalization, Dense, GlobalAveragePooling2D, Lambda, Dropout, InputLayer, Input\nfrom keras.utils import to_categorical\nfrom tensorflow.keras.preprocessing.image import load_img","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:06.978347Z","iopub.execute_input":"2021-09-10T19:22:06.978926Z","iopub.status.idle":"2021-09-10T19:22:14.225979Z","shell.execute_reply.started":"2021-09-10T19:22:06.978644Z","shell.execute_reply":"2021-09-10T19:22:14.225031Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Data Paths\ntrain_dir = '/kaggle/input/dog-breed-identification/train/'\ntest_dir = '/kaggle/input/dog-breed-identification/test/'\n#Count/Print train and test samples.\n","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:14.227883Z","iopub.execute_input":"2021-09-10T19:22:14.228405Z","iopub.status.idle":"2021-09-10T19:22:14.240622Z","shell.execute_reply.started":"2021-09-10T19:22:14.228357Z","shell.execute_reply":"2021-09-10T19:22:14.238516Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Read train labels.\nlabels_dataframe = pd.read_csv('/kaggle/input/dog-breed-identification/labels.csv')\n#Read sample_submission file to be modified by pridected labels.\n# sample_df = pd.read_csv('/kaggle/input/dog-breed-identification/sample_submission.csv')\n#Incpect labels_dataframe.\nlabels_dataframe.head(5)","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:14.241927Z","iopub.execute_input":"2021-09-10T19:22:14.242234Z","iopub.status.idle":"2021-09-10T19:22:14.309978Z","shell.execute_reply.started":"2021-09-10T19:22:14.242176Z","shell.execute_reply":"2021-09-10T19:22:14.308995Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Create list of alphabetically sorted labels.\ndog_breeds = sorted(list(set(labels_dataframe['breed'])))\nn_classes = len(dog_breeds)\nprint(n_classes)\ndog_breeds[:10]","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:14.314204Z","iopub.execute_input":"2021-09-10T19:22:14.316374Z","iopub.status.idle":"2021-09-10T19:22:14.334808Z","shell.execute_reply.started":"2021-09-10T19:22:14.314471Z","shell.execute_reply":"2021-09-10T19:22:14.334096Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# with open('/kaggle/working/dog_breeds.json', 'w') as fp:\n#     json.dump(dog_breeds,fp)","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:14.339669Z","iopub.execute_input":"2021-09-10T19:22:14.341729Z","iopub.status.idle":"2021-09-10T19:22:14.346626Z","shell.execute_reply.started":"2021-09-10T19:22:14.341681Z","shell.execute_reply":"2021-09-10T19:22:14.345799Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#Map each label string to an integer label.\nclass_to_num = dict(zip(dog_breeds, range(n_classes)))\nclass_to_num","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:14.350994Z","iopub.execute_input":"2021-09-10T19:22:14.351569Z","iopub.status.idle":"2021-09-10T19:22:14.371254Z","shell.execute_reply.started":"2021-09-10T19:22:14.351517Z","shell.execute_reply":"2021-09-10T19:22:14.370584Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"class_to_num['toy_poodle']","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:14.375232Z","iopub.execute_input":"2021-09-10T19:22:14.377355Z","iopub.status.idle":"2021-09-10T19:22:14.387040Z","shell.execute_reply.started":"2021-09-10T19:22:14.377305Z","shell.execute_reply":"2021-09-10T19:22:14.386187Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# with open('/kaggle/working/class_to_num.json', 'w') as fp:\n#     json.dump(class_to_num,fp)","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:15.421595Z","iopub.execute_input":"2021-09-10T19:22:15.421873Z","iopub.status.idle":"2021-09-10T19:22:15.425539Z","shell.execute_reply.started":"2021-09-10T19:22:15.421825Z","shell.execute_reply":"2021-09-10T19:22:15.424447Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels_dataframe['file_name'] = labels_dataframe['id'].apply(lambda x:train_dir+f\"{x}.jpg\")","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:16.695601Z","iopub.execute_input":"2021-09-10T19:22:16.695900Z","iopub.status.idle":"2021-09-10T19:22:16.707209Z","shell.execute_reply.started":"2021-09-10T19:22:16.695845Z","shell.execute_reply":"2021-09-10T19:22:16.705894Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels_dataframe.head(5)['file_name'][0]","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:17.508838Z","iopub.execute_input":"2021-09-10T19:22:17.509134Z","iopub.status.idle":"2021-09-10T19:22:17.517434Z","shell.execute_reply.started":"2021-09-10T19:22:17.509083Z","shell.execute_reply":"2021-09-10T19:22:17.516496Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels_dataframe.head()","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:18.711971Z","iopub.execute_input":"2021-09-10T19:22:18.712294Z","iopub.status.idle":"2021-09-10T19:22:18.722655Z","shell.execute_reply.started":"2021-09-10T19:22:18.712232Z","shell.execute_reply":"2021-09-10T19:22:18.721786Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"codes = []\nfor index, data in labels_dataframe.iterrows():\n    breed = data['breed']\n    codes.append(class_to_num[breed])","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:19.271689Z","iopub.execute_input":"2021-09-10T19:22:19.271977Z","iopub.status.idle":"2021-09-10T19:22:20.342125Z","shell.execute_reply.started":"2021-09-10T19:22:19.271928Z","shell.execute_reply":"2021-09-10T19:22:20.341256Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"codes","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:20.509414Z","iopub.execute_input":"2021-09-10T19:22:20.509733Z","iopub.status.idle":"2021-09-10T19:22:20.535184Z","shell.execute_reply.started":"2021-09-10T19:22:20.509676Z","shell.execute_reply":"2021-09-10T19:22:20.534127Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y = to_categorical(codes) # encoded our features ","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:23.769410Z","iopub.execute_input":"2021-09-10T19:22:23.769722Z","iopub.status.idle":"2021-09-10T19:22:23.782105Z","shell.execute_reply.started":"2021-09-10T19:22:23.769667Z","shell.execute_reply":"2021-09-10T19:22:23.781293Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:22:24.621681Z","iopub.execute_input":"2021-09-10T19:22:24.621982Z","iopub.status.idle":"2021-09-10T19:22:24.627896Z","shell.execute_reply.started":"2021-09-10T19:22:24.621932Z","shell.execute_reply":"2021-09-10T19:22:24.627079Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"#### Model","metadata":{}},{"cell_type":"code","source":"# from keras.applications.inception_resnet_v2 import InceptionResNetV2, preprocess_input as resnet_preprocess\n# from keras.applications.inception_v3 import InceptionV3, preprocess_input as inception_preprocess\n# from keras.applications.xception import Xception, preprocess_input as xception_preprocess\n# from keras.applications.nasnet import NASNetLarge, preprocess_input as nasnet_preprocess\n# from keras.layers.merge import concatenate\n\n# input_shape = (331,331,3)\n# input_layer = Input(shape=input_shape)\n\n\n# #first extractor inception_resnet\n# preprocessor_resnet = Lambda(resnet_preprocess)(input_layer)\n# inception_resnet = InceptionResNetV2(weights = 'imagenet',\n#                                      include_top = False,input_shape = input_shape,pooling ='avg')(preprocessor_resnet)\n\n# # second extractor InceptionV3\n# preprocessor_inception = Lambda(inception_preprocess)(input_layer)\n# inception_v3 = InceptionV3(weights = 'imagenet',\n#                                      include_top = False,input_shape = input_shape,pooling ='avg')(preprocessor_inception)\n# # Third extractor Xception\n# preprocessor_xception = Lambda(xception_preprocess)(input_layer)\n# xception = Xception(weights = 'imagenet',\n#                                      include_top = False,input_shape = input_shape,pooling ='avg')(preprocessor_xception)\n\n# # fourth extractor nasnet large\n# preprocessor_nasnet = Lambda(nasnet_preprocess)(input_layer)\n# nasnet = NASNetLarge(weights = 'imagenet',\n#                                      include_top = False,input_shape = input_shape,pooling ='avg')(preprocessor_nasnet)\n\n\n# merge = concatenate([inception_v3, xception,nasnet,inception_resnet])\n# model = Model(inputs = input_layer, output = merge)\n\n\n# from keras.applications.inception_resnet_v2 import InceptionResNetV2, preprocess_input as resnet_preprocess\n# from keras.applications.inception_v3 import InceptionV3, preprocess_input as inception_preprocess\nfrom keras.applications.xception import Xception, preprocess_input as xception_preprocess\nfrom keras.applications.nasnet import NASNetMobile, preprocess_input as nasnet_preprocess\nfrom keras.applications.densenet import DenseNet121, preprocess_input as densenet_preprocess\n# from keras.applications.mobilenet_v2 import MobileNetV2, preprocess_input as mobilenet_preprocess\nfrom keras.applications.resnet_v2 import ResNet50V2, preprocess_input as resnet_v2_preprocess\nfrom keras.layers.merge import concatenate\nfrom keras.layers import Input,Lambda\nfrom keras.models import Model\n\ninput_shape = (224,224,3)\ninput_layer = Input(shape=input_shape)\n\n\n#first extractor resnet50v2\npreprocessor_resnet = Lambda(resnet_v2_preprocess)(input_layer)\nresnet = ResNet50V2(weights = 'imagenet',\n                                     include_top = False,input_shape = input_shape,pooling ='avg')(preprocessor_resnet)\n\n# second extractor densenet\npreprocessor_inception = Lambda(densenet_preprocess)(input_layer)\ndensenet = DenseNet121(weights = 'imagenet',\n                                     include_top = False,input_shape = input_shape,pooling ='avg')(preprocessor_inception)\n# # Third extractor nasnet\npreprocessor_xception = Lambda(nasnet_preprocess)(input_layer)\nnasnet = NASNetMobile(weights = 'imagenet',\n                                     include_top = False,input_shape = input_shape,pooling ='avg')(preprocessor_xception)\n# Third extractor Xception\n# preprocessor_xception = Lambda(xception_preprocess)(input_layer)\n# xception = Xception(weights = 'imagenet',\n#                                      include_top = False,input_shape = input_shape,pooling ='avg')(preprocessor_xception)\n# # # # fourth extractor nasnet large\n# preprocessor_nasnet = Lambda(nasnet_preprocess)(input_layer)\n# nasnet = NASNetLarge(weights = 'imagenet',\n#                                      include_top = False,input_shape = input_shape,pooling ='avg')(preprocessor_nasnet)\n\n\nmerge = concatenate([resnet,nasnet,densenet])\nmodel = Model(inputs = input_layer, outputs = merge)","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:39:09.880296Z","iopub.execute_input":"2021-09-10T19:39:09.880584Z","iopub.status.idle":"2021-09-10T19:39:43.434793Z","shell.execute_reply.started":"2021-09-10T19:39:09.880532Z","shell.execute_reply":"2021-09-10T19:39:43.433824Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.save('/kaggle/working/feature_extractor.h5')","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:39:43.436597Z","iopub.execute_input":"2021-09-10T19:39:43.436866Z","iopub.status.idle":"2021-09-10T19:39:45.326765Z","shell.execute_reply.started":"2021-09-10T19:39:43.436820Z","shell.execute_reply":"2021-09-10T19:39:45.325781Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"v= model.output.shape[1:]\nprint(v)","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:39:45.330006Z","iopub.execute_input":"2021-09-10T19:39:45.330477Z","iopub.status.idle":"2021-09-10T19:39:45.335788Z","shell.execute_reply.started":"2021-09-10T19:39:45.330423Z","shell.execute_reply":"2021-09-10T19:39:45.335071Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(v)","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:34:02.623428Z","iopub.execute_input":"2021-09-10T19:34:02.623730Z","iopub.status.idle":"2021-09-10T19:34:02.629844Z","shell.execute_reply.started":"2021-09-10T19:34:02.623674Z","shell.execute_reply":"2021-09-10T19:34:02.629011Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Feature extraction of data not labels","metadata":{}},{"cell_type":"code","source":"# for feature_extraction dataframe must have to contain file_name and  breed columns\ndef feature_extractor(df):\n    img_size = (224,224,3)\n    data_size = len(df)\n    batch_size = 20\n    X = np.zeros([data_size,4128], dtype=np.uint8)\n#     y = np.zeros([data_size,120], dtype=np.uint8)\n    datagen = ImageDataGenerator()\n    generator = datagen.flow_from_dataframe(df,\n    x_col = 'file_name', class_mode = None, \n    batch_size=20, shuffle = False,target_size = (img_size[:2]),color_mode = 'rgb')\n    i = 0\n    for input_batch in tqdm(generator):\n        input_batch = model.predict(input_batch)\n        X[i * batch_size : (i + 1) * batch_size] = input_batch\n        i += 1\n        if i * batch_size >= data_size:\n           break\n    return X\n        \n    ","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:40:58.188384Z","iopub.execute_input":"2021-09-10T19:40:58.188678Z","iopub.status.idle":"2021-09-10T19:40:58.196737Z","shell.execute_reply.started":"2021-09-10T19:40:58.188627Z","shell.execute_reply":"2021-09-10T19:40:58.195967Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X = feature_extractor(labels_dataframe)","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:40:59.944460Z","iopub.execute_input":"2021-09-10T19:40:59.944743Z","iopub.status.idle":"2021-09-10T19:43:51.722656Z","shell.execute_reply.started":"2021-09-10T19:40:59.944693Z","shell.execute_reply":"2021-09-10T19:43:51.721776Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"labels_dataframe","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:24:46.140245Z","iopub.status.idle":"2021-09-10T19:24:46.140910Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"X.shape","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:37:26.936337Z","iopub.execute_input":"2021-09-10T19:37:26.936634Z","iopub.status.idle":"2021-09-10T19:37:26.941569Z","shell.execute_reply.started":"2021-09-10T19:37:26.936582Z","shell.execute_reply":"2021-09-10T19:37:26.940780Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from keras.callbacks import EarlyStopping,ModelCheckpoint, ReduceLROnPlateau\n#Prepare call backs\nEarlyStop_callback = keras.callbacks.EarlyStopping(monitor='val_loss', patience=10, restore_best_weights=True)\ncheckpoint = ModelCheckpoint('/kaggle/working/checkpoing',\n                             monitor = 'val_loss',mode = 'min',save_best_only= True)\nlr = ReduceLROnPlateau(monitor = 'val_loss',factor = 0.5,patience = 3,min_lr = 0.00001)\nmy_callback=[EarlyStop_callback,checkpoint]","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:44:11.806959Z","iopub.execute_input":"2021-09-10T19:44:11.807370Z","iopub.status.idle":"2021-09-10T19:44:11.818622Z","shell.execute_reply.started":"2021-09-10T19:44:11.807315Z","shell.execute_reply":"2021-09-10T19:44:11.817676Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"dnn = keras.models.Sequential([\n    InputLayer(X.shape[1:]),\n    Dropout(0.7),\n    Dense(n_classes, activation='softmax')\n])\n\ndnn.compile(optimizer='adam',\n              loss='categorical_crossentropy',\n              metrics=['accuracy'])\n\n#Train simple DNN on extracted features.\nh = dnn.fit(X , y,\n            batch_size=128,\n            epochs=60,\n            validation_split=0.1 ,\n           callbacks = my_callback)","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:44:12.750266Z","iopub.execute_input":"2021-09-10T19:44:12.750565Z","iopub.status.idle":"2021-09-10T19:44:17.712993Z","shell.execute_reply.started":"2021-09-10T19:44:12.750517Z","shell.execute_reply":"2021-09-10T19:44:17.712330Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Plot the Result ","metadata":{}},{"cell_type":"code","source":"fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 12))\n\nax1.plot(h.history['loss'],color = 'b',label = 'loss')\nax1.plot(h.history['val_loss'],color = 'r',label = 'val_loss')\nax1.set_xticks(np.arange(1, 60, 1))\nax1.set_yticks(np.arange(0, 1, 0.1))\nax1.legend(['loss','val_loss'],shadow = True)\n\n\nax2.plot(h.history['accuracy'],color = 'green',label = 'accuracy')\nax2.plot(h.history['val_accuracy'],color = 'red',label = 'val_accuracy')\nax2.legend(['accuracy','val_accuracy'],shadow = True)\n# ax2.set_xticks(np.arange(1, 60, 1))\n# ax2.set_yticks(np.arange(0, 60, 0.1))\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:44:28.739143Z","iopub.execute_input":"2021-09-10T19:44:28.739494Z","iopub.status.idle":"2021-09-10T19:44:29.662458Z","shell.execute_reply.started":"2021-09-10T19:44:28.739433Z","shell.execute_reply":"2021-09-10T19:44:29.661637Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Saving and loading the model ","metadata":{}},{"cell_type":"code","source":"\nfrom keras.models import load_model\ndnn.save('/kaggle/working/dogbreed.h5')\n\n# saved_model = load_model('/kaggle/working/dogbreed.h5')\n","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:44:31.676445Z","iopub.execute_input":"2021-09-10T19:44:31.676735Z","iopub.status.idle":"2021-09-10T19:44:31.703579Z","shell.execute_reply.started":"2021-09-10T19:44:31.676684Z","shell.execute_reply":"2021-09-10T19:44:31.702916Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Prediction of the Test Data","metadata":{}},{"cell_type":"code","source":"\ntest_data = []\nfor pic in os.listdir(test_dir):\n    test_data.append(test_dir+pic)","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:44:37.212332Z","iopub.execute_input":"2021-09-10T19:44:37.212635Z","iopub.status.idle":"2021-09-10T19:44:37.608736Z","shell.execute_reply.started":"2021-09-10T19:44:37.212587Z","shell.execute_reply":"2021-09-10T19:44:37.607945Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_data","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:44:39.653254Z","iopub.execute_input":"2021-09-10T19:44:39.653545Z","iopub.status.idle":"2021-09-10T19:44:39.679427Z","shell.execute_reply.started":"2021-09-10T19:44:39.653491Z","shell.execute_reply":"2021-09-10T19:44:39.678485Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_dataframe = pd.DataFrame({'file_name':test_data})","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:44:41.689336Z","iopub.execute_input":"2021-09-10T19:44:41.689642Z","iopub.status.idle":"2021-09-10T19:44:41.697697Z","shell.execute_reply.started":"2021-09-10T19:44:41.689592Z","shell.execute_reply":"2021-09-10T19:44:41.696315Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_dataframe","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:44:43.159450Z","iopub.execute_input":"2021-09-10T19:44:43.159768Z","iopub.status.idle":"2021-09-10T19:44:43.175542Z","shell.execute_reply.started":"2021-09-10T19:44:43.159713Z","shell.execute_reply":"2021-09-10T19:44:43.174578Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_features = feature_extractor(test_dataframe)","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:44:44.129172Z","iopub.execute_input":"2021-09-10T19:44:44.129471Z","iopub.status.idle":"2021-09-10T19:48:43.755393Z","shell.execute_reply.started":"2021-09-10T19:44:44.129422Z","shell.execute_reply":"2021-09-10T19:48:43.754544Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred = dnn.predict(test_features)","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:48:43.757303Z","iopub.execute_input":"2021-09-10T19:48:43.757597Z","iopub.status.idle":"2021-09-10T19:48:44.209363Z","shell.execute_reply.started":"2021-09-10T19:48:43.757550Z","shell.execute_reply":"2021-09-10T19:48:44.208381Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred.shape","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:48:44.210857Z","iopub.execute_input":"2021-09-10T19:48:44.211156Z","iopub.status.idle":"2021-09-10T19:48:44.220147Z","shell.execute_reply.started":"2021-09-10T19:48:44.211106Z","shell.execute_reply":"2021-09-10T19:48:44.218694Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def get_key(val): \n        for key, value in class_to_num.items(): \n         if val == value: \n             return key \n            \npred_codes = np.argmax(y_pred, axis = 1)\npred_codes\n    ","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:48:44.222149Z","iopub.execute_input":"2021-09-10T19:48:44.222564Z","iopub.status.idle":"2021-09-10T19:48:44.234852Z","shell.execute_reply.started":"2021-09-10T19:48:44.222418Z","shell.execute_reply":"2021-09-10T19:48:44.233863Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predictions = []\nfor i in pred_codes:\n    predictions.append(get_key(i))","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:48:51.422205Z","iopub.execute_input":"2021-09-10T19:48:51.422521Z","iopub.status.idle":"2021-09-10T19:48:51.669850Z","shell.execute_reply.started":"2021-09-10T19:48:51.422467Z","shell.execute_reply":"2021-09-10T19:48:51.669082Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predictions","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:48:52.546977Z","iopub.execute_input":"2021-09-10T19:48:52.547313Z","iopub.status.idle":"2021-09-10T19:48:52.571097Z","shell.execute_reply.started":"2021-09-10T19:48:52.547247Z","shell.execute_reply":"2021-09-10T19:48:52.569913Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_dataframe['breed'] = predictions","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:48:56.672671Z","iopub.execute_input":"2021-09-10T19:48:56.672955Z","iopub.status.idle":"2021-09-10T19:48:56.681863Z","shell.execute_reply.started":"2021-09-10T19:48:56.672907Z","shell.execute_reply":"2021-09-10T19:48:56.680936Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test_dataframe","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:48:58.761907Z","iopub.execute_input":"2021-09-10T19:48:58.762202Z","iopub.status.idle":"2021-09-10T19:48:58.778591Z","shell.execute_reply.started":"2021-09-10T19:48:58.762150Z","shell.execute_reply":"2021-09-10T19:48:58.777426Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"### Drawing some images ","metadata":{}},{"cell_type":"code","source":"\nplt.figure(figsize=(6,6))\n\nfor index , data in test_dataframe[:10].iterrows():\n    img = data['file_name']\n    label = data['breed']\n    img = cv2.imread(img)\n#     plt.subplot(2,5, index+1)\n    plt.imshow(img)\n    plt.xlabel(label,fontsize = (15))\n    plt.tight_layout()\n    plt.show()\n    \n","metadata":{"execution":{"iopub.status.busy":"2021-09-10T19:49:01.748145Z","iopub.execute_input":"2021-09-10T19:49:01.748468Z","iopub.status.idle":"2021-09-10T19:49:04.878034Z","shell.execute_reply.started":"2021-09-10T19:49:01.748413Z","shell.execute_reply":"2021-09-10T19:49:04.877304Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}