{"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":"import numpy as np\nimport pandas as pd\nfrom zipfile import ZipFile\n\ndata = '/kaggle/input/dogs-vs-cats/train.zip'\n\nZipFile(data, 'r').extractall()\n\nprint('extracted')","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-05-14T00:46:22.545094Z","iopub.execute_input":"2023-05-14T00:46:22.545517Z","iopub.status.idle":"2023-05-14T00:46:31.072167Z","shell.execute_reply.started":"2023-05-14T00:46:22.545483Z","shell.execute_reply":"2023-05-14T00:46:31.071126Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import os\n\nos.mkdir('/kaggle/working/data')\nos.mkdir('/kaggle/working/data/dogs')\nos.mkdir('/kaggle/working/data/cats')\n\nfor f in os.listdir('/kaggle/working/train'):\n    if f[0:3] == 'dog':\n        os.rename('/kaggle/working/train/' + f, '/kaggle/working/data/dogs/' + f)\n    else:\n        os.rename('/kaggle/working/train/' + f, '/kaggle/working/data/cats/' + f)\n        \n","metadata":{"execution":{"iopub.status.busy":"2023-05-14T00:46:31.074118Z","iopub.execute_input":"2023-05-14T00:46:31.074433Z","iopub.status.idle":"2023-05-14T00:46:31.746036Z","shell.execute_reply.started":"2023-05-14T00:46:31.074405Z","shell.execute_reply":"2023-05-14T00:46:31.745013Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from keras.preprocessing.image import ImageDataGenerator\nimport pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom keras.models import Sequential\nimport keras.layers\n\nimport matplotlib.pyplot as plt\n\ndata_gen = ImageDataGenerator(rescale = 1.0 / 255, validation_split = 0.2)\n\ntrain = data_gen.flow_from_directory('/kaggle/working/data', target_size = (50, 50), class_mode = 'binary', subset = 'training')\n\ntest = data_gen.flow_from_directory('/kaggle/working/data', target_size = (64, 64), class_mode = 'binary', subset = 'validation')\n\nmodel = Sequential()\nmodel.add(keras.layers.Convolution2D(32, (3, 3), activation = 'relu'))\nmodel.add(keras.layers.MaxPooling2D())\nmodel.add(keras.layers.Dropout(0.2))\nmodel.add(keras.layers.Convolution2D(64, (3, 3), activation = 'relu'))\nmodel.add(keras.layers.MaxPooling2D())\nmodel.add(keras.layers.Dropout(0.2))\nmodel.add(keras.layers.Convolution2D(128, (3, 3), activation = 'relu'))\nmodel.add(keras.layers.MaxPooling2D())\nmodel.add(keras.layers.Dropout(0.2))\nmodel.add(keras.layers.Flatten())\nmodel.add(keras.layers.Dense(128, activation = 'relu'))\nmodel.add(keras.layers.Dropout(0.4))\nmodel.add(keras.layers.Dense(1, activation = 'sigmoid'))\n\nmodel.compile(optimizer = 'adam', loss = 'MSE', metrics = 'accuracy')\n\nhistory = model.fit_generator(train, validation_data = test, epochs = 3)\n\nacc = history.history['accuracy']\nval_acc = history.history['val_accuracy']\n\nepochs = range(1, len(acc) + 1)\n\nplt.plot(epochs, acc, 'r', label = 'Training Accuracy')\nplt.plot(epochs, val_acc, 'b', label = 'Testing Accuracy')\nplt.title('Accuracy')\nplt.legend()\n\nplt.show()","metadata":{"execution":{"iopub.status.busy":"2023-05-14T00:46:31.747495Z","iopub.execute_input":"2023-05-14T00:46:31.748149Z","iopub.status.idle":"2023-05-14T00:47:00.440186Z","shell.execute_reply.started":"2023-05-14T00:46:31.748106Z","shell.execute_reply":"2023-05-14T00:47:00.438538Z"},"trusted":true},"execution_count":null,"outputs":[]}]}