{"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":"# Imorting required libraries\nimport tensorflow as tf\nfrom tensorflow import keras\nfrom keras import Sequential\nfrom keras.layers import Dense, Conv2D, MaxPooling2D, BatchNormalization, Dropout","metadata":{"id":"HAlAAJX8xIKM","execution":{"iopub.status.busy":"2023-08-12T06:42:10.510017Z","iopub.execute_input":"2023-08-12T06:42:10.510394Z","iopub.status.idle":"2023-08-12T06:42:18.038092Z","shell.execute_reply.started":"2023-08-12T06:42:10.510362Z","shell.execute_reply":"2023-08-12T06:42:18.037039Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Fetching training data\ntrain_data = keras.utils.image_dataset_from_directory(directory='/kaggle/input/dogs-vs-cats/train',\n                                                      labels='inferred',\n                                                      label_mode='int',\n                                                      batch_size=32,\n                                                      image_size=(256, 256))\n\n# Fetching validation data\ntest_data = keras.utils.image_dataset_from_directory(directory='/kaggle/input/dogs-vs-cats/test',\n                                                      labels='inferred',\n                                                      label_mode='int',\n                                                      batch_size=32,\n                                                      image_size=(256, 256))","metadata":{"id":"75iZnaoXGv7a","outputId":"ce7853fb-3716-4ad5-e451-744096506e9c","execution":{"iopub.status.busy":"2023-08-12T06:42:21.474949Z","iopub.execute_input":"2023-08-12T06:42:21.475808Z","iopub.status.idle":"2023-08-12T06:42:56.120795Z","shell.execute_reply.started":"2023-08-12T06:42:21.475758Z","shell.execute_reply":"2023-08-12T06:42:56.119793Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Normalizing or images b/w 0 and 1\ndef normalize(image, label):\n  image = tf.cast(image/255.0, tf.float32)\n  return image, label\n\ntrain_data = train_data.map(normalize)\ntest_data = test_data.map(normalize)","metadata":{"id":"EjgnNxvsGv5m","execution":{"iopub.status.busy":"2023-08-12T06:43:02.068963Z","iopub.execute_input":"2023-08-12T06:43:02.069330Z","iopub.status.idle":"2023-08-12T06:43:02.135008Z","shell.execute_reply.started":"2023-08-12T06:43:02.069298Z","shell.execute_reply":"2023-08-12T06:43:02.134051Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from keras.layers.reshaping.flatten import Flatten\n# Creating our layers\n\nmodel = Sequential()\n# 1st Convo layer\nmodel.add(Conv2D(32, kernel_size=(3,3), padding=\"valid\", activation=\"relu\", input_shape=(256,256,3)))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2, 2), strides= 2, padding= \"valid\"))\n# 2nd Convo layer\nmodel.add(Conv2D(64, kernel_size=(3,3), padding=\"valid\", activation=\"relu\"))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2, 2), strides= 2, padding= \"valid\"))\n# 3rd Convo layer\nmodel.add(Conv2D(128, kernel_size=(3,3), padding=\"valid\", activation=\"relu\"))\nmodel.add(BatchNormalization())\nmodel.add(MaxPooling2D(pool_size=(2, 2), strides= 2, padding= \"valid\"))\n\nmodel.add(Flatten())\n\nmodel.add(Dense(128, activation=\"relu\"))\nmodel.add(Dropout(0.1))\nmodel.add(Dense(64, activation=\"relu\"))\nmodel.add(Dropout(0.1))\nmodel.add(Dense(1, activation=\"sigmoid\"))","metadata":{"id":"Wxja38FYGv2_","execution":{"iopub.status.busy":"2023-08-12T06:43:04.273328Z","iopub.execute_input":"2023-08-12T06:43:04.273712Z","iopub.status.idle":"2023-08-12T06:43:04.463004Z","shell.execute_reply.started":"2023-08-12T06:43:04.273680Z","shell.execute_reply":"2023-08-12T06:43:04.461912Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.summary()","metadata":{"id":"gpr6_heIGv0o","outputId":"bd11815c-4d22-4365-a4c0-8ad55ee3df97","execution":{"iopub.status.busy":"2023-08-12T06:43:05.942802Z","iopub.execute_input":"2023-08-12T06:43:05.943503Z","iopub.status.idle":"2023-08-12T06:43:05.981450Z","shell.execute_reply.started":"2023-08-12T06:43:05.943470Z","shell.execute_reply":"2023-08-12T06:43:05.980683Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.compile(optimizer=\"adam\", loss=\"binary_crossentropy\", metrics=[\"accuracy\"])","metadata":{"id":"49BWgDh-GvyE","execution":{"iopub.status.busy":"2023-08-12T06:43:07.479509Z","iopub.execute_input":"2023-08-12T06:43:07.480256Z","iopub.status.idle":"2023-08-12T06:43:07.500667Z","shell.execute_reply.started":"2023-08-12T06:43:07.480220Z","shell.execute_reply":"2023-08-12T06:43:07.499706Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"history = model.fit(train_data, epochs= 10, validation_data= test_data)","metadata":{"id":"jHVY3WqrGvum","outputId":"377aa5a5-20c6-498a-92a7-88f4b2cb1384","execution":{"iopub.status.busy":"2023-08-12T06:43:08.509394Z","iopub.execute_input":"2023-08-12T06:43:08.509762Z","iopub.status.idle":"2023-08-12T06:56:53.376517Z","shell.execute_reply.started":"2023-08-12T06:43:08.509731Z","shell.execute_reply":"2023-08-12T06:56:53.375433Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import matplotlib.pyplot as plt\n\nplt.plot(history.history['accuracy'],color= \"red\", label= \"train\")\nplt.plot(history.history['val_accuracy'],color= \"blue\", label= \"test\")\nplt.legend()\nplt.show()","metadata":{"id":"9UbZGvMP2nde","outputId":"648f9181-c77e-433c-e225-c8e08a414c6d","execution":{"iopub.status.busy":"2023-08-12T06:56:53.378506Z","iopub.execute_input":"2023-08-12T06:56:53.378974Z","iopub.status.idle":"2023-08-12T06:56:53.683011Z","shell.execute_reply.started":"2023-08-12T06:56:53.378940Z","shell.execute_reply":"2023-08-12T06:56:53.682106Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"plt.plot(history.history['loss'],color= \"red\", label= \"train\")\nplt.plot(history.history['val_loss'],color= \"blue\", label= \"test\")\nplt.legend()\nplt.show()","metadata":{"id":"e3wNzofq4HDZ","outputId":"f97c366c-19e7-46a0-a797-33904fef5d9e","execution":{"iopub.status.busy":"2023-08-12T06:56:53.684449Z","iopub.execute_input":"2023-08-12T06:56:53.685105Z","iopub.status.idle":"2023-08-12T06:56:53.921410Z","shell.execute_reply.started":"2023-08-12T06:56:53.685067Z","shell.execute_reply":"2023-08-12T06:56:53.920495Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"id":"11xVWMWrIuAz"},"execution_count":null,"outputs":[]}]}