{"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":"code","source":"# This Python 3 environment comes with many helpful analytics libraries installed\n# It is defined by the kaggle/python Docker image: https://github.com/kaggle/docker-python\n# For example, here's several helpful packages to load\n\nimport numpy as np # linear algebra\nimport pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n\n# Input data files are available in the read-only \"../input/\" directory\n# For example, running this (by clicking run or pressing Shift+Enter) will list all files under the input directory\n\nimport os\nfor dirname, _, filenames in os.walk('/kaggle/input'):\n    for filename in filenames:\n        print(os.path.join(dirname, filename))\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2021-11-25T15:32:00.176561Z","iopub.execute_input":"2021-11-25T15:32:00.177005Z","iopub.status.idle":"2021-11-25T15:32:00.214047Z","shell.execute_reply.started":"2021-11-25T15:32:00.176905Z","shell.execute_reply":"2021-11-25T15:32:00.213152Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import zipfile\n\nwith zipfile.ZipFile(\"../input/dogs-vs-cats/train.zip\", 'r') as zipp:\n    zipp.extractall(\"/kaggle/files/\")\n    \nwith zipfile.ZipFile(\"../input/dogs-vs-cats/test1.zip\", 'r') as zipp:\n    zipp.extractall(\"/kaggle/files/\")\n    \nos.listdir(\"/kaggle/files/\")","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:32:00.215584Z","iopub.execute_input":"2021-11-25T15:32:00.216025Z","iopub.status.idle":"2021-11-25T15:32:21.823564Z","shell.execute_reply.started":"2021-11-25T15:32:00.215992Z","shell.execute_reply":"2021-11-25T15:32:21.822698Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import tensorflow as tf\nimport pandas as pd\n\ntrain_image = os.listdir(\"/kaggle/files/train/\")\ntest_image = os.listdir(\"/kaggle/files/test1/\")\n\n#print(train_image[0].split(\".\"))\nfiles = []\nclasses = []\nfor file in train_image:\n    files.append(file)\n    if file.startswith(\"dog\"):\n        classes.append(\"1\")\n    else:\n        classes.append(\"0\")\nprint(classes[:10])\n\ndf_train = pd.DataFrame({\n    \"file\":train_image,\n    \"class\":classes\n})\ndf_train = df_train.reset_index(drop=True)\nprint(df_train)","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:32:21.824871Z","iopub.execute_input":"2021-11-25T15:32:21.825112Z","iopub.status.idle":"2021-11-25T15:32:29.546605Z","shell.execute_reply.started":"2021-11-25T15:32:21.825084Z","shell.execute_reply":"2021-11-25T15:32:29.545484Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#print(test_image)","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:32:29.548767Z","iopub.execute_input":"2021-11-25T15:32:29.549018Z","iopub.status.idle":"2021-11-25T15:32:29.554625Z","shell.execute_reply.started":"2021-11-25T15:32:29.548989Z","shell.execute_reply":"2021-11-25T15:32:29.553512Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.model_selection import train_test_split\nimport matplotlib.pyplot as plt\n\nx_train, x_val = train_test_split(df_train, test_size=0.33, random_state = 42)\nx_train = x_train.reset_index(drop=True)\nx_val = x_val.reset_index(drop=True)\n#print(x_val)\n#print(x_val.iloc[0,0])\nx_valImg = plt.imread(\"/kaggle/files/train/\"+x_val.iloc[0,0])\n#print(x_valImg[0])\nplt.imshow(x_valImg, cmap=plt.cm.binary)\nplt.show()\nprint(x_val['class'])","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:32:29.556497Z","iopub.execute_input":"2021-11-25T15:32:29.557452Z","iopub.status.idle":"2021-11-25T15:32:30.850297Z","shell.execute_reply.started":"2021-11-25T15:32:29.55738Z","shell.execute_reply":"2021-11-25T15:32:30.849348Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x_trainImg = plt.imread(\"/kaggle/files/train/\"+x_train.iloc[0,0])\nprint(x_trainImg[0])\nplt.imshow(x_trainImg, cmap = plt.cm.binary)\nplt.show()\nprint(x_train.shape)\nprint(x_train[\"class\"])","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:32:30.85161Z","iopub.execute_input":"2021-11-25T15:32:30.851959Z","iopub.status.idle":"2021-11-25T15:32:31.132648Z","shell.execute_reply.started":"2021-11-25T15:32:30.851912Z","shell.execute_reply":"2021-11-25T15:32:31.131927Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tensorflow.keras.preprocessing.image import ImageDataGenerator\n\ntrain_datagen=ImageDataGenerator(\n            horizontal_flip=True,\n            rescale=1./255\n)\n\nvalid_datagen=ImageDataGenerator(\n            rescale=1./255\n)\n\ntrain_gen = train_datagen.flow_from_dataframe(\n            x_train,\n            \"/kaggle/files/train/\",\n            x_col=\"file\",\n            y_col=\"class\",\n            target_size=(224,224),\n            class_mode=\"binary\"\n\n)\n\nvalid_gen=valid_datagen.flow_from_dataframe(\n            x_val,\n            \"/kaggle/files/train/\",\n            x_col=\"file\",\n            y_col=\"class\",\n            target_size=(224,224),\n            class_mode=\"binary\"\n)\nprint(type(valid_gen))","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:32:31.13385Z","iopub.execute_input":"2021-11-25T15:32:31.134662Z","iopub.status.idle":"2021-11-25T15:32:32.698801Z","shell.execute_reply.started":"2021-11-25T15:32:31.134625Z","shell.execute_reply":"2021-11-25T15:32:32.697767Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"image, labels = next(train_gen)\nprint(image.shape)\nprint(labels.shape)","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:32:32.700358Z","iopub.execute_input":"2021-11-25T15:32:32.700715Z","iopub.status.idle":"2021-11-25T15:32:32.843893Z","shell.execute_reply.started":"2021-11-25T15:32:32.700668Z","shell.execute_reply":"2021-11-25T15:32:32.842964Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def plotImages(image):\n    fig, axes = plt.subplots(1, 6, figsize=(20,20))\n    axes = axes.flatten()\n    for ax, img in zip(axes, image):\n        ax.imshow(img)\n    plt.tight_layout()\n    plt.show()\n\nplotImages(image)\nprint(labels[:6])","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:32:32.844983Z","iopub.execute_input":"2021-11-25T15:32:32.84551Z","iopub.status.idle":"2021-11-25T15:32:34.026836Z","shell.execute_reply.started":"2021-11-25T15:32:32.845476Z","shell.execute_reply":"2021-11-25T15:32:34.026004Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"img = plt.imread(\"/kaggle/files/train/dog.12493.jpg\")\nprint(img.shape)","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:32:34.029858Z","iopub.execute_input":"2021-11-25T15:32:34.030612Z","iopub.status.idle":"2021-11-25T15:32:34.038813Z","shell.execute_reply.started":"2021-11-25T15:32:34.030569Z","shell.execute_reply":"2021-11-25T15:32:34.037614Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tensorflow import keras\n\nmodel = keras.Sequential()\n\n\n\nmodel.add(keras.layers.Conv2D(32, (3, 3), padding='same',input_shape=(224,224,3), activation='relu'))\nmodel.add(keras.layers.MaxPool2D(pool_size=(2, 2)))\n\nmodel.add(keras.layers.Conv2D(64, (3, 3), padding='same', activation='relu'))\nmodel.add(keras.layers.MaxPool2D(pool_size=(2, 2)))\n\nmodel.add(keras.layers.Conv2D(64, (3, 3), padding='same', activation='relu'))\nmodel.add(keras.layers.MaxPool2D(pool_size=(2, 2)))\n\nmodel.add(keras.layers.Conv2D(128, (3, 3), padding='same', activation='relu'))\nmodel.add(keras.layers.MaxPool2D(pool_size=(2, 2)))\n\nmodel.add(keras.layers.Flatten())\nmodel.add(keras.layers.Dense(512, activation='relu'))\nmodel.add(keras.layers.Dense(1, activation='sigmoid'))\n\nmodel.compile(optimizer='adam', loss=\"binary_crossentropy\", metrics=[\"accuracy\"])","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:36:34.194859Z","iopub.execute_input":"2021-11-25T15:36:34.195197Z","iopub.status.idle":"2021-11-25T15:36:34.57231Z","shell.execute_reply.started":"2021-11-25T15:36:34.195163Z","shell.execute_reply":"2021-11-25T15:36:34.57144Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"hist = model.fit_generator(generator=train_gen, validation_data=valid_gen, epochs=5, steps_per_epoch=50)","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:36:46.449048Z","iopub.execute_input":"2021-11-25T15:36:46.44977Z","iopub.status.idle":"2021-11-25T15:52:34.856003Z","shell.execute_reply.started":"2021-11-25T15:36:46.449726Z","shell.execute_reply":"2021-11-25T15:52:34.854966Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"hist.history","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:52:34.858955Z","iopub.execute_input":"2021-11-25T15:52:34.860029Z","iopub.status.idle":"2021-11-25T15:52:34.868948Z","shell.execute_reply.started":"2021-11-25T15:52:34.859972Z","shell.execute_reply":"2021-11-25T15:52:34.867919Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"x_test_col = []\nfor file in test_image:\n    x_test_col.append(file)\n\nx_test = pd.DataFrame({'filename': x_test_col})\ntest_gen = valid_datagen.flow_from_dataframe(x_test,\n                                             directory = \"/kaggle/files/test1\",\n                                             x_col = \"filename\",\n                                             y_col = None,\n                                             class_mode = None,\n                                             target_size = (224,224))","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:52:34.870442Z","iopub.execute_input":"2021-11-25T15:52:34.871094Z","iopub.status.idle":"2021-11-25T15:52:35.073221Z","shell.execute_reply.started":"2021-11-25T15:52:34.871044Z","shell.execute_reply":"2021-11-25T15:52:35.072063Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"predictions=model.predict(test_gen)\npredictions.size","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:52:35.075125Z","iopub.execute_input":"2021-11-25T15:52:35.075411Z","iopub.status.idle":"2021-11-25T15:54:40.595492Z","shell.execute_reply.started":"2021-11-25T15:52:35.07536Z","shell.execute_reply":"2021-11-25T15:54:40.594798Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import random\n\nprint(type(predictions))\nprint(len(predictions))\ni = random.randint(0,len(predictions))\nprint(predictions[i])\nif predictions[i] > 0.5:\n    print(\"Dog!\")\nelse:\n    print(\"Cat!\")\n\nimage = plt.imread(\"/kaggle/files/test1/\"+test_image[i])\n\nplt.imshow(image, cmap=plt.cm.binary)\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:54:40.596689Z","iopub.execute_input":"2021-11-25T15:54:40.596921Z","iopub.status.idle":"2021-11-25T15:54:40.851258Z","shell.execute_reply.started":"2021-11-25T15:54:40.596891Z","shell.execute_reply":"2021-11-25T15:54:40.850384Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"pred = []\nfor i in range(len(predictions)):\n    if predictions[i] > 0.5:\n        pred.append(1)\n    else:\n        pred.append(0)\n\noutput = pd.DataFrame({\"Id\": np.arange(1,12501), \"label\": pred})\noutput.to_csv(\"/kaggle/working/submission.csv\", index = False)\n\nprint(output)","metadata":{"execution":{"iopub.status.busy":"2021-11-25T15:54:40.852795Z","iopub.execute_input":"2021-11-25T15:54:40.853109Z","iopub.status.idle":"2021-11-25T15:54:40.933272Z","shell.execute_reply.started":"2021-11-25T15:54:40.853066Z","shell.execute_reply":"2021-11-25T15:54:40.932302Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}