{"cells":[{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import numpy as np\nimport cv2\nimport pandas as pd\nimport os\nimport matplotlib.pyplot as plt\nfrom tensorflow.python.keras.models import Sequential\nfrom tensorflow.python.keras.layers import Dense, Flatten, GlobalAveragePooling2D, Activation, Flatten, Dropout, BatchNormalization\nfrom tensorflow.python.keras import optimizers, regularizers\nfrom tensorflow.python.keras.applications import InceptionResNetV2\nfrom keras.applications.inception_resnet_v2 import preprocess_input\nfrom tensorflow.python.keras.models import Model\nfrom tensorflow.python.keras.optimizers import sgd\nfrom tensorflow.python.keras.preprocessing.image import ImageDataGenerator\nfrom keras.preprocessing.image import img_to_array, array_to_img","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_train=pd.read_csv('../input/labels.csv')\ntest_df=pd.read_csv('../input/sample_submission.csv')\nimage_size = 299","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = Sequential()\nmodel.add(InceptionResNetV2(include_top=False, pooling='avg', weights=\"imagenet\"))\nmodel.add(Dense(512))\nmodel.add(Activation('relu'))\nmodel.add(Dropout(0.5))\nmodel.add(Dense(120, activation='softmax'))\nmodel.layers[0].trainable = False\nmodel.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_test=pd.read_csv(\"../input/sample_submission.csv\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_test.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_train.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_train['id'] = '../input/train/'+df_train['id']+'.jpg'\ndf_test['id']='../input/test/'+df_test['id']+'.jpg'","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"plt.imshow(np.array(cv2.imread(df_train['id'][0])))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"datagen = ImageDataGenerator(preprocessing_function=preprocess_input, rescale=1./255., \n                             horizontal_flip=True,width_shift_range = 0.2,height_shift_range = 0.2,\n                             validation_split=0.15)\n\ntest_datagen=ImageDataGenerator(preprocessing_function=preprocess_input,rescale=1./255.)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"\ntrain_generator=datagen.flow_from_dataframe(dataframe=df_train,x_col=\"id\",y_col=\"breed\",has_ext=False,\n                                            subset=\"training\",batch_size=16,seed=1998,shuffle=True,\n                                            class_mode=\"categorical\",target_size=(image_size, image_size))\n\nvalid_generator=datagen.flow_from_dataframe(dataframe=df_train,x_col=\"id\",y_col=\"breed\",has_ext=False,\n                                            subset=\"validation\",batch_size=1,seed=1998,shuffle=True,\n                                            class_mode=\"categorical\",target_size=(image_size, image_size))\n\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"x,y=train_generator.next()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"for i in range(0,5):\n    image = x[i]\n    image=image/255\n    plt.imshow(array_to_img(image))\n    plt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_generator=test_datagen.flow_from_dataframe(dataframe=df_test,x_col=\"id\",y_col=None,has_ext=False,batch_size=1,\n                                            seed=42,shuffle=False,class_mode=None,target_size=(image_size, image_size))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.fit_generator(generator=train_generator,steps_per_epoch=train_generator.n,\n                    validation_data=valid_generator,validation_steps=train_generator.n,epochs=2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"pred=model.predict_generator(test_generator,verbose=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"labels = (train_generator.class_indices)\nlabels = list(labels.keys())\ndf = pd.DataFrame(data=pred,columns=labels)\n\ncolumns = list(df)\ncolumns.sort()\ndf = df.reindex(columns=columns)\n\nfilenames = test_df[\"id\"]\ndf[\"id\"]  = filenames\n\ncols = df.columns.tolist()\ncols = cols[-1:] + cols[:-1]\ndf = df[cols]\ndf.head(5)\n\ndf.to_csv(\"submission6.csv\",index=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat":4,"nbformat_minor":1}