{"cells":[{"metadata":{"trusted":true},"cell_type":"code","source":"import random\nimport os","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true},"cell_type":"code","source":"!unzip /kaggle/input/dogs-vs-cats/train.zip\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true,"collapsed":true},"cell_type":"code","source":"!unzip /kaggle/input/dogs-vs-cats/test1.zip","execution_count":null,"outputs":[]},{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import matplotlib.pyplot as plt\nfrom tensorflow.keras.layers import Input, Conv2D, BatchNormalization, Dropout, MaxPool2D, Flatten, Dense\nfrom tensorflow.keras.models import Model\nimport tensorflow.keras.backend as K\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator\nfrom tensorflow.keras.callbacks import EarlyStopping, ReduceLROnPlateau","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"files = os.listdir('./train')\nfiles[:5]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"target = []\nfor file in files:\n    s = file.split(\".\")\n    if s[0] == 'dog':\n        target.append('dog')\n    else :\n        target.append('cat')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df = pd.DataFrame({'filename':files, 'target':target})","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df.head()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df.target = df.target.astype('string')\ndf.filename = df.filename.astype('string')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df.info()","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"from sklearn.model_selection import train_test_split","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"#trainset_x, trainset_y, valset_x, valset_y = train_test_split(df.filename, df.target, test_size=0.3, random_state=123)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df_random = df.sample(frac=1.0)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"trainset = df_random.iloc[:15000, :]\nvalset = df_random.iloc[15000:,:]","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_generator = ImageDataGenerator(rescale=1./255, rotation_range=45, shear_range=20, \n                                     width_shift_range=0.1, height_shift_range=0.1)\nval_generator = ImageDataGenerator(rescale=1./255)\n","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"train_image_generator = train_generator.flow_from_dataframe(dataframe=train_set_x,directory='./train', \n                                                            y_col='target', class_mode='binary')\n\nvalidation_image_generator = val_generator.flow_from_dataframe(dataframe=valueset_x,directory='./train', \n                                                            y_col='target', class_mode='binary')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"image_shape = (256,256,3)\nK.clear_session()\ninp = Input(shape=image_shape, dtype=np.float32)\nx = Conv2D(8, kernel_size=3, padding='valid', activation='relu')(inp)\nx = Conv2D(16, kernel_size=3, padding='valid', activation='relu')(inp)\nx = Conv2D(32, kernel_size=3, padding='valid', activation='relu')(inp)\nx = MaxPool2D(pool_size=3)(x)\nx = BatchNormalization()(x)\nx = Conv2D(64, kernel_size=3, padding='valid', activation='relu')(inp)\nx = Conv2D(128, kernel_size=3, padding='valid', activation='relu')(inp)\nx = Conv2D(256, kernel_size=3, padding='valid', activation='relu')(inp)\nx = MaxPool2D(pool_size=3)(x)\nx = BatchNormalization()(x)\nx = Flatten()(x)\nx = Dense(16, activation='relu')(x)\nx = Dense(1, activation='sigmoid')(x)\nmodel = Model(inp, x)\nmodel.summary","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model.compile(loss='binary_crossentropy', metrics=['acc'])\nhist = model.fit(x=train_image_generator, batch_size=32, epochs=20, \n                 validation_data=validation_image_generator, validation_steps=32)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"","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}