{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"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 in \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 \"../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# Any results you write to the current directory are saved as output.","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import tensorflow as tf\nfrom tensorflow import keras\nimport matplotlib.pyplot as plt\nimport cv2\nimport random\nimport shutil\nimport zipfile","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"local_zip = '/kaggle/input/dogs-vs-cats/train.zip'\nzip_ref = zipfile.ZipFile(local_zip , 'r')\nzip_ref.extractall()\nzip_ref.close()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_images=[]\n#test_images=[]\ntrain_path = '/kaggle/working/train/'\n#test_path = '/kaggle/working/test1/'\ntrain_images_list = os.listdir(train_path)\n#test_images_list = os.listdir(test_path)\nprint(train_images_list[: 10])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"try:\n    os.mkdir(os.path.join(train_path , 'cats'))\n    os.mkdir(os.path.join(train_path , 'dogs'))\nexcept FileExistsError :\n    print(\"file already exists\")\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"count_cats = 0\ncount_dogs = 0\n\nfor a in train_images_list:\n    file_name = a.split('.')\n    if(file_name[0] == 'cat'):\n        shutil.move(os.path.join(train_path , a) , os.path.join(train_path , 'cats/cat{}.jpg'.format(count_cats)))\n        count_cats = count_cats + 1 \n    else:\n        shutil.move(os.path.join(train_path , a) , os.path.join(train_path , 'dogs/dog{}.jpg'.format(count_dogs)))\n        count_dogs = count_dogs + 1","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"cat_images = []\ndog_images = []\n\ncats_img_dir = os.path.join(train_path , 'cats')\ndogs_img_dir = os.path.join(train_path , 'dogs')\ncat_img_list = os.listdir(cats_img_dir)\ndog_img_list = os.listdir(dogs_img_dir)\n\n\nfor a in cat_img_list:\n    cat_images.append(os.path.join(cats_img_dir , a))\nfor a in dog_img_list:\n    dog_images.append(os.path.join(dogs_img_dir , a))\n\nsample = plt.imread(cat_images[0])\nprint(sample.shape)\nplt.imshow(sample)\nplt.show()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"fig , x = plt.subplots(4,4)\nfor i in range (0 , 4 , 1):\n    for j in range (0 , 4, 1):\n        if(i==0 or i==1):\n            x[i][j].imshow(plt.imread(cat_images[random.randint(0 , 12500)]))\n        else:\n            x[i][j].imshow(plt.imread(dog_images[random.randint(0 , 12500)]))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from tensorflow.keras.preprocessing.image import ImageDataGenerator\n\ntrain_datagen = ImageDataGenerator(rescale = 1.0/255.0)\n\ntrain_generator = train_datagen.flow_from_directory(\n                                '/kaggle/working/train',\n                                batch_size=1000,\n                                class_mode='binary',\n                                target_size=(150,150))","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = tf.keras.Sequential([\n    tf.keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(150,150,3)),\n    tf.keras.layers.MaxPooling2D(2,2),\n    tf.keras.layers.Dropout(0.3),\n    \n    tf.keras.layers.Conv2D(64, (3,3), activation='relu'),\n    tf.keras.layers.MaxPooling2D(2,2),\n    tf.keras.layers.Dropout(0.3),\n    \n    tf.keras.layers.Conv2D(128, (3,3), activation='relu'),\n    tf.keras.layers.MaxPooling2D(2,2),\n    tf.keras.layers.Dropout(0.3),\n    \n    tf.keras.layers.Flatten(),\n    tf.keras.layers.Dense(512, activation='relu'),\n    tf.keras.layers.Dense(1 , activation='sigmoid')\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='adam' , loss='binary_crossentropy', metrics=['acc'])","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"history = model.fit_generator(train_generator,\n                             epochs=15,\n                             steps_per_epoch=25,\n                             verbose=2\n                             )","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.save(\"rock-paper-scissor.h5\")    ","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.4","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":4}