{"cells":[{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import zipfile\nimport os\nimport pandas as pd\n\nzip_ref = zipfile.ZipFile('/kaggle/input/dogs-vs-cats/train.zip', 'r')\nzip_ref.extractall()\nzip_ref.close()\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"labels = []\nimg_path = []\n\n\nfor img in os.listdir('train/'):\n    img_path.append(os.path.join('train/',img))\n    \n    if img.startswith(\"cat\"):\n        labels.append(\"cat\")\n    \n    elif img.startswith(\"dog\"):\n        labels.append(\"dog\")","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df = pd.DataFrame({\n    'image' : img_path,\n    'class' : labels\n})","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import tensorflow as tf\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\nfrom tensorflow.keras.optimizers import RMSprop,Adam","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_datagen = ImageDataGenerator( rescale = 1.0/255. )\ntrain_generator = train_datagen.flow_from_dataframe(dataframe = df,\n                                                   x_col = 'image',\n                                                   y_col = 'class',\n                                                   batch_size = 20,\n                                                   class_mode = 'binary',\n                                                   target_size=(150, 150),\n                                                   shuffle = True)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"asd = pd.DataFrame( {   \n    'image' : img_path,\n    'label' : train_generator.classes})","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"asd.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = tf.keras.models.Sequential([\n    \n    tf.keras.layers.Conv2D(16, (3,3), activation='relu', input_shape=(150, 150, 3)),\n    tf.keras.layers.MaxPooling2D(2,2),\n    \n    tf.keras.layers.Conv2D(32, (3,3), activation='relu'),\n    tf.keras.layers.MaxPooling2D(2,2),\n    \n    tf.keras.layers.Conv2D(64, (3,3), activation='relu'), \n    tf.keras.layers.MaxPooling2D(2,2),\n    \n    tf.keras.layers.Flatten(), \n    tf.keras.layers.Dense(512, activation='relu'), \n    tf.keras.layers.Dense(1, activation='sigmoid')  \n    \n])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.summary()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.compile(optimizer=RMSprop(lr=0.001),\n              loss='binary_crossentropy',\n              metrics = ['accuracy'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.fit_generator(train_generator,\n                   steps_per_epoch=100,\n                   epochs=15,\n                   verbose=2)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"zip_ref = zipfile.ZipFile('/kaggle/input/dogs-vs-cats/test1.zip', 'r')\nzip_ref.extractall()\nzip_ref.close()\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"img_pa = []\n\nfor img in os.listdir('test1/'):\n    img_pa.append(os.path.join('test1/', img))\n    \ndf_test = pd.DataFrame({'image_path':img_pa})","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_datagen = ImageDataGenerator(rescale=1.0/255)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"test_data_generator =  test_datagen.flow_from_dataframe(dataframe=df_test,\n                                                       x_col='image_path',\n                                                       y_col=None,\n                                                       batch_size=20,\n                                                       target_size=(150,150),\n                                                       class_mode=None)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"pred = model.predict(test_data_generator,verbose=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"prediction = 1*(pred >0.5)\nprediction","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"%matplotlib inline\nimport matplotlib.pyplot as plt\nimport matplotlib.image as mpimg","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"fig = plt.figure(figsize = (20,20))\nfig.suptitle(\"predction\", fontsize = 16)\n\n\nfor i, img in enumerate(df_test.image_path[:10]):\n    plt.subplot(5, 5, i + 1)\n    img = mpimg.imread(img)\n    plt.imshow(img)\n    if prediction[i] == 1:\n        a = \"dog\"\n    else:\n        a = \"cat\"\n    plt.title(a)\n    plt.xticks([])\n    plt.yticks([])\n    ","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":4}