{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "9KsncGm-p90B", "outputId": "adf91a72-da16-45d1-d7c0-81d03f8c05ca" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cp: cannot stat 'kaggle.json': No such file or directory\n" ] } ], "source": [ "!mkdir -p ~/.kaggle\n", "!cp kaggle.json ~/.kaggle/" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "epMkM_TppxYe", "outputId": "5d8294fe-628f-4b35-fa21-ddffabc275d3" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Dataset URL: https://www.kaggle.com/datasets/salader/dogs-vs-cats\n", "License(s): unknown\n", "Downloading dogs-vs-cats.zip to /content\n", "100% 1.06G/1.06G [00:07<00:00, 102MB/s] \n", "100% 1.06G/1.06G [00:07<00:00, 147MB/s]\n" ] } ], "source": [ "#kallge ka api command hai ..isse ka use kerke kaggle ka data directly fetch ker sakte hai\n", "!kaggle datasets download -d salader/dogs-vs-cats" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "QvlIgcpto4Yq" }, "outputs": [], "source": [ "#ab humare pass jo data aaaya hai ushko unzip kerna padega\n", "import zipfile\n", "zip_ref = zipfile.ZipFile('/content/dogs-vs-cats.zip', \"r\")\n", "zip_ref.extractall('/content')\n", "zip_ref.close()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Rk5hM0ffrMcY" }, "outputs": [], "source": [ "import tensorflow as tf\n", "from tensorflow import keras\n", "from keras import Sequential\n", "from keras.layers import Dense,Conv2D, MaxPooling2D ,Flatten" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "UzXicNVEro9K", "outputId": "07a616bd-0efe-4614-9feb-ab0d7499a89a" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Found 20000 files belonging to 2 classes.\n", "Found 5000 files belonging to 2 classes.\n" ] } ], "source": [ "import tensorflow as tf\n", "from tensorflow import keras\n", "\n", "train_ds = keras.utils.image_dataset_from_directory(\n", " directory='/content/train',\n", " labels='inferred', # Fixed spelling\n", " label_mode='int',\n", " batch_size=32,\n", " image_size=(256, 256)\n", ")\n", "\n", "validation_ds = keras.utils.image_dataset_from_directory(\n", " directory='/content/test',\n", " labels='inferred', # Fixed spelling\n", " label_mode='int',\n", " batch_size=32,\n", " image_size=(256, 256)\n", ")\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "qp8_aex6tz41" }, "outputs": [], "source": [ "#normalize\n", "def process(image, label):\n", " image = tf.cast(image/255. , tf.float32)\n", " return image, label\n", "\n", "train_ds= train_ds.map(process)\n", "validation_ds = validation_ds.map(process)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "kDJ2DOJXu_TC", "outputId": "599d1759-18cb-42ce-cf5c-b34cc5947b2e" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.11/dist-packages/keras/src/layers/convolutional/base_conv.py:107: UserWarning: Do not pass an `input_shape`/`input_dim` argument to a layer. When using Sequential models, prefer using an `Input(shape)` object as the first layer in the model instead.\n", " super().__init__(activity_regularizer=activity_regularizer, **kwargs)\n" ] } ], "source": [ "#create cnn model\n", "model = Sequential()\n", "model.add(Conv2D(32, kernel_size =(3,3), activation = 'relu', padding = \"valid\", input_shape = (256,256,3) ))\n", "model.add(MaxPooling2D(pool_size = (2,2),strides = 2, padding = 'valid' ))\n", "\n", "model.add(Conv2D(64, kernel_size =(3,3), activation = 'relu', padding = \"valid\" ))\n", "model.add(MaxPooling2D(pool_size = (2,2),strides = 2, padding = 'valid' ))\n", "\n", "model.add(Conv2D(128, kernel_size =(3,3), activation = 'relu', padding = \"valid\"))\n", "model.add(MaxPooling2D(pool_size = (2,2),strides = 2, padding = 'valid' ))\n", "\n", "model.add(Flatten())\n", "model.add(Dense(128,activation = 'relu'))\n", "model.add(Dense(64, activation = 'relu'))\n", "model.add(Dense(1, activation = 'sigmoid'))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 476 }, "id": "DwLn_WKvvUL9", "outputId": "399fd888-3031-4f08-effa-d407527d3fa0" }, "outputs": [ { "data": { "text/html": [ "
Model: \"sequential\"\n",
              "
\n" ], "text/plain": [ "\u001b[1mModel: \"sequential\"\u001b[0m\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n",
              "┃ Layer (type)                          Output Shape                         Param # ┃\n",
              "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n",
              "│ conv2d (Conv2D)                      │ (None, 254, 254, 32)        │             896 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ max_pooling2d (MaxPooling2D)         │ (None, 127, 127, 32)        │               0 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ conv2d_1 (Conv2D)                    │ (None, 125, 125, 64)        │          18,496 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ max_pooling2d_1 (MaxPooling2D)       │ (None, 62, 62, 64)          │               0 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ conv2d_2 (Conv2D)                    │ (None, 60, 60, 128)         │          73,856 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ max_pooling2d_2 (MaxPooling2D)       │ (None, 30, 30, 128)         │               0 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ flatten (Flatten)                    │ (None, 115200)              │               0 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dense (Dense)                        │ (None, 128)                 │      14,745,728 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dense_1 (Dense)                      │ (None, 64)                  │           8,256 │\n",
              "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n",
              "│ dense_2 (Dense)                      │ (None, 1)                   │              65 │\n",
              "└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n",
              "
\n" ], "text/plain": [ "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┓\n", "┃\u001b[1m \u001b[0m\u001b[1mLayer (type) \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1mOutput Shape \u001b[0m\u001b[1m \u001b[0m┃\u001b[1m \u001b[0m\u001b[1m Param #\u001b[0m\u001b[1m \u001b[0m┃\n", "┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━┩\n", "│ conv2d (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m254\u001b[0m, \u001b[38;5;34m254\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m896\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ max_pooling2d (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m127\u001b[0m, \u001b[38;5;34m127\u001b[0m, \u001b[38;5;34m32\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ conv2d_1 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m125\u001b[0m, \u001b[38;5;34m125\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m18,496\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ max_pooling2d_1 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m62\u001b[0m, \u001b[38;5;34m62\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ conv2d_2 (\u001b[38;5;33mConv2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m60\u001b[0m, \u001b[38;5;34m60\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m73,856\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ max_pooling2d_2 (\u001b[38;5;33mMaxPooling2D\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m30\u001b[0m, \u001b[38;5;34m30\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ flatten (\u001b[38;5;33mFlatten\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m115200\u001b[0m) │ \u001b[38;5;34m0\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ dense (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m128\u001b[0m) │ \u001b[38;5;34m14,745,728\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ dense_1 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m64\u001b[0m) │ \u001b[38;5;34m8,256\u001b[0m │\n", "├──────────────────────────────────────┼─────────────────────────────┼─────────────────┤\n", "│ dense_2 (\u001b[38;5;33mDense\u001b[0m) │ (\u001b[38;5;45mNone\u001b[0m, \u001b[38;5;34m1\u001b[0m) │ \u001b[38;5;34m65\u001b[0m │\n", "└──────────────────────────────────────┴─────────────────────────────┴─────────────────┘\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Total params: 14,847,297 (56.64 MB)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Total params: \u001b[0m\u001b[38;5;34m14,847,297\u001b[0m (56.64 MB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Trainable params: 14,847,297 (56.64 MB)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Trainable params: \u001b[0m\u001b[38;5;34m14,847,297\u001b[0m (56.64 MB)\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "
 Non-trainable params: 0 (0.00 B)\n",
              "
\n" ], "text/plain": [ "\u001b[1m Non-trainable params: \u001b[0m\u001b[38;5;34m0\u001b[0m (0.00 B)\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "model.summary()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "j-xdy5DMwwCn" }, "outputs": [], "source": [ "model.compile(optimizer = 'adam', loss= 'binary_crossentropy', metrics = ['accuracy'])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "kHV41wadxMTf", "outputId": "b89c05a9-3f69-4077-ff9a-753bb0d7eeb0" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m54s\u001b[0m 73ms/step - accuracy: 0.5726 - loss: 0.7222 - val_accuracy: 0.7048 - val_loss: 0.5793\n", "Epoch 2/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m66s\u001b[0m 106ms/step - accuracy: 0.7254 - loss: 0.5430 - val_accuracy: 0.7702 - val_loss: 0.4906\n", "Epoch 3/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m64s\u001b[0m 77ms/step - accuracy: 0.8056 - loss: 0.4145 - val_accuracy: 0.7622 - val_loss: 0.5422\n", "Epoch 4/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m76s\u001b[0m 67ms/step - accuracy: 0.8870 - loss: 0.2681 - val_accuracy: 0.7612 - val_loss: 0.7744\n", "Epoch 5/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m81s\u001b[0m 66ms/step - accuracy: 0.9457 - loss: 0.1373 - val_accuracy: 0.7468 - val_loss: 0.9700\n", "Epoch 6/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m86s\u001b[0m 73ms/step - accuracy: 0.9667 - loss: 0.0934 - val_accuracy: 0.7558 - val_loss: 1.2279\n", "Epoch 7/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m78s\u001b[0m 66ms/step - accuracy: 0.9813 - loss: 0.0573 - val_accuracy: 0.7586 - val_loss: 1.3820\n", "Epoch 8/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m86s\u001b[0m 73ms/step - accuracy: 0.9836 - loss: 0.0475 - val_accuracy: 0.7562 - val_loss: 1.3795\n", "Epoch 9/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m42s\u001b[0m 67ms/step - accuracy: 0.9863 - loss: 0.0418 - val_accuracy: 0.7522 - val_loss: 1.3611\n", "Epoch 10/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m41s\u001b[0m 65ms/step - accuracy: 0.9909 - loss: 0.0282 - val_accuracy: 0.7594 - val_loss: 1.5585\n", "Epoch 11/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m41s\u001b[0m 65ms/step - accuracy: 0.9946 - loss: 0.0210 - val_accuracy: 0.7674 - val_loss: 1.5576\n", "Epoch 12/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m42s\u001b[0m 67ms/step - accuracy: 0.9935 - loss: 0.0191 - val_accuracy: 0.7464 - val_loss: 1.8050\n", "Epoch 13/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m41s\u001b[0m 66ms/step - accuracy: 0.9924 - loss: 0.0314 - val_accuracy: 0.7656 - val_loss: 1.6694\n", "Epoch 14/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m86s\u001b[0m 73ms/step - accuracy: 0.9935 - loss: 0.0176 - val_accuracy: 0.7572 - val_loss: 2.0530\n", "Epoch 15/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m78s\u001b[0m 66ms/step - accuracy: 0.9917 - loss: 0.0262 - val_accuracy: 0.7676 - val_loss: 1.5757\n", "Epoch 16/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m46s\u001b[0m 74ms/step - accuracy: 0.9946 - loss: 0.0140 - val_accuracy: 0.7572 - val_loss: 1.7711\n", "Epoch 17/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m46s\u001b[0m 73ms/step - accuracy: 0.9926 - loss: 0.0222 - val_accuracy: 0.7648 - val_loss: 1.9376\n", "Epoch 18/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m82s\u001b[0m 73ms/step - accuracy: 0.9961 - loss: 0.0124 - val_accuracy: 0.7518 - val_loss: 2.0122\n", "Epoch 19/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m82s\u001b[0m 73ms/step - accuracy: 0.9952 - loss: 0.0169 - val_accuracy: 0.7546 - val_loss: 1.7739\n", "Epoch 20/20\n", "\u001b[1m625/625\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m46s\u001b[0m 73ms/step - accuracy: 0.9938 - loss: 0.0188 - val_accuracy: 0.7584 - val_loss: 1.9832\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "history = model.fit(train_ds, epochs = 10, validation_data = validation_ds)\n", "history" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "background_save": true }, "id": "SVku8fIrxZGf", "outputId": "3275efa6-576d-4564-8ecd-1f74768aaf54" }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "plt.plot(history.history['accuracy'], color = 'red', label = 'train')\n", "plt.plot(history.history['val_accuracy'], color = 'blue', label = 'validation')\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "GwmcZ0N7ywfe" }, "outputs": [], "source": [] } ], "metadata": { "accelerator": "GPU", "colab": { "gpuType": "T4", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 0 }