{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":5441,"databundleVersionId":38425,"sourceType":"competition"},{"sourceId":1731857,"sourceType":"datasetVersion","datasetId":1027483},{"sourceId":1003830,"sourceType":"datasetVersion","datasetId":550917},{"sourceId":28903,"sourceType":"datasetVersion","datasetId":22535}],"dockerImageVersionId":30615,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"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\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 read-only \"../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# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import keras,os\nfrom keras.models import Sequential\nfrom keras.layers import Dense, Conv2D, MaxPool2D , Flatten\nfrom keras.preprocessing.image import ImageDataGenerator\nimport numpy as np","metadata":{"execution":{"iopub.status.busy":"2023-12-07T23:35:46.569762Z","iopub.execute_input":"2023-12-07T23:35:46.57037Z","iopub.status.idle":"2023-12-07T23:36:00.567418Z","shell.execute_reply.started":"2023-12-07T23:35:46.570331Z","shell.execute_reply":"2023-12-07T23:36:00.566282Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"trdata = ImageDataGenerator()\ntraindata = trdata.flow_from_directory(directory=\"/kaggle/input/dogs-cats-images/\",target_size=(224,224))\ntsdata = ImageDataGenerator()\ntestdata = tsdata.flow_from_directory(directory=\"/kaggle/input/dogs-cats-images/\", target_size=(224,224))","metadata":{"execution":{"iopub.status.busy":"2023-12-07T23:52:31.910207Z","iopub.execute_input":"2023-12-07T23:52:31.910659Z","iopub.status.idle":"2023-12-07T23:52:50.632434Z","shell.execute_reply.started":"2023-12-07T23:52:31.910623Z","shell.execute_reply":"2023-12-07T23:52:50.631492Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model = Sequential()\nmodel.add(Conv2D(input_shape=(224,224,3),filters=64,kernel_size=(3,3),padding=\"same\", activation=\"relu\"))\nmodel.add(Conv2D(filters=64,kernel_size=(3,3),padding=\"same\", activation=\"relu\"))\nmodel.add(MaxPool2D(pool_size=(2,2),strides=(2,2)))\nmodel.add(Conv2D(filters=128, kernel_size=(3,3), padding=\"same\", activation=\"relu\"))\nmodel.add(Conv2D(filters=128, kernel_size=(3,3), padding=\"same\", activation=\"relu\"))\nmodel.add(MaxPool2D(pool_size=(2,2),strides=(2,2)))\nmodel.add(Conv2D(filters=256, kernel_size=(3,3), padding=\"same\", activation=\"relu\"))\nmodel.add(Conv2D(filters=256, kernel_size=(3,3), padding=\"same\", activation=\"relu\"))\nmodel.add(Conv2D(filters=256, kernel_size=(3,3), padding=\"same\", activation=\"relu\"))\nmodel.add(MaxPool2D(pool_size=(2,2),strides=(2,2)))\nmodel.add(Conv2D(filters=512, kernel_size=(3,3), padding=\"same\", activation=\"relu\"))\nmodel.add(Conv2D(filters=512, kernel_size=(3,3), padding=\"same\", activation=\"relu\"))\nmodel.add(Conv2D(filters=512, kernel_size=(3,3), padding=\"same\", activation=\"relu\"))\nmodel.add(MaxPool2D(pool_size=(2,2),strides=(2,2)))\nmodel.add(Conv2D(filters=512, kernel_size=(3,3), padding=\"same\", activation=\"relu\"))\nmodel.add(Conv2D(filters=512, kernel_size=(3,3), padding=\"same\", activation=\"relu\"))\nmodel.add(Conv2D(filters=512, kernel_size=(3,3), padding=\"same\", activation=\"relu\"))\nmodel.add(MaxPool2D(pool_size=(2,2),strides=(2,2)))","metadata":{"execution":{"iopub.status.busy":"2023-12-07T23:53:42.757006Z","iopub.execute_input":"2023-12-07T23:53:42.757635Z","iopub.status.idle":"2023-12-07T23:53:43.060195Z","shell.execute_reply.started":"2023-12-07T23:53:42.7576Z","shell.execute_reply":"2023-12-07T23:53:43.058883Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.add(Flatten())\nmodel.add(Dense(units=4096,activation=\"relu\"))\nmodel.add(Dense(units=4096,activation=\"relu\"))\nmodel.add(Dense(units=2, activation=\"softmax\"))","metadata":{"execution":{"iopub.status.busy":"2023-12-07T23:53:54.550221Z","iopub.execute_input":"2023-12-07T23:53:54.550656Z","iopub.status.idle":"2023-12-07T23:53:55.565857Z","shell.execute_reply.started":"2023-12-07T23:53:54.550621Z","shell.execute_reply":"2023-12-07T23:53:55.565012Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from keras.optimizers import Adam\nopt = Adam(lr=0.001)\nmodel.compile(optimizer=opt, loss=keras.losses.categorical_crossentropy, metrics=['accuracy'])","metadata":{"execution":{"iopub.status.busy":"2023-12-07T23:54:14.523803Z","iopub.execute_input":"2023-12-07T23:54:14.524174Z","iopub.status.idle":"2023-12-07T23:54:14.539373Z","shell.execute_reply.started":"2023-12-07T23:54:14.524146Z","shell.execute_reply":"2023-12-07T23:54:14.538434Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.summary()","metadata":{"execution":{"iopub.status.busy":"2023-12-07T23:54:26.094412Z","iopub.execute_input":"2023-12-07T23:54:26.094826Z","iopub.status.idle":"2023-12-07T23:54:26.15729Z","shell.execute_reply.started":"2023-12-07T23:54:26.094795Z","shell.execute_reply":"2023-12-07T23:54:26.156264Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tensorflow.keras.callbacks import ModelCheckpoint, EarlyStopping\n\ncheckpoint = ModelCheckpoint(\"vgg16_1.keras\", monitor='val_accuracy', verbose=1, save_best_only=True, save_weights_only=False, mode='auto', period=1)\nearly = EarlyStopping(monitor='val_accuracy', min_delta=0, patience=20, verbose=1, mode='auto')\n\nhist = model.fit(traindata, steps_per_epoch=100, validation_data=testdata, validation_steps=10, epochs=100, callbacks=[checkpoint, early])","metadata":{"execution":{"iopub.status.busy":"2023-12-07T23:54:54.421158Z","iopub.execute_input":"2023-12-07T23:54:54.421631Z"},"trusted":true},"execution_count":null,"outputs":[]}]}