{"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_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"Vamos a ver como trabaja con un poco de BatchNormalization() y dropout()\n\nPero sin DataAugmentation ","metadata":{}},{"cell_type":"code","source":"import tensorflow.keras as keras","metadata":{"execution":{"iopub.status.busy":"2023-06-22T20:07:17.732423Z","iopub.execute_input":"2023-06-22T20:07:17.73278Z","iopub.status.idle":"2023-06-22T20:07:17.737356Z","shell.execute_reply.started":"2023-06-22T20:07:17.732746Z","shell.execute_reply":"2023-06-22T20:07:17.736241Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"training = keras.preprocessing.image_dataset_from_directory(directory = '/kaggle/input/data-binary/data/train')","metadata":{"execution":{"iopub.status.busy":"2023-06-22T20:07:19.222297Z","iopub.execute_input":"2023-06-22T20:07:19.222661Z","iopub.status.idle":"2023-06-22T20:10:08.301392Z","shell.execute_reply.started":"2023-06-22T20:07:19.222627Z","shell.execute_reply":"2023-06-22T20:10:08.300587Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"validation = keras.preprocessing.image_dataset_from_directory(directory = '/kaggle/input/data-binary/data/valid')","metadata":{"execution":{"iopub.status.busy":"2023-06-22T20:10:08.30337Z","iopub.execute_input":"2023-06-22T20:10:08.303884Z","iopub.status.idle":"2023-06-22T20:17:21.187643Z","shell.execute_reply.started":"2023-06-22T20:10:08.303844Z","shell.execute_reply":"2023-06-22T20:17:21.186859Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"test = keras.preprocessing.image_dataset_from_directory(directory = '/kaggle/input/data-binary/data/test', shuffle=False)","metadata":{"execution":{"iopub.status.busy":"2023-06-22T20:17:21.189133Z","iopub.execute_input":"2023-06-22T20:17:21.189524Z","iopub.status.idle":"2023-06-22T20:26:14.575953Z","shell.execute_reply.started":"2023-06-22T20:17:21.189479Z","shell.execute_reply":"2023-06-22T20:26:14.575162Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from tensorflow.keras.models import Sequential, Model\nfrom tensorflow.keras.layers import Dense, Conv2D , MaxPool2D , Flatten , Dropout , BatchNormalization\n# from tensorflow.keras.preprocessing import Rescaling\n\nmodel = Sequential()\n# model.add(Rescaling(scale = 1/255, input_shape = ( 256, 256, 3)))\nmodel.add(Conv2D(32 , (3,3) , padding = 'same' , activation = 'relu' , input_shape = ( 256, 256, 3)))\nmodel.add(BatchNormalization())\n\n\nmodel.add(MaxPool2D((2,2)))\nmodel.add(Conv2D(64 , (3,3), activation = 'relu'))\nmodel.add(Dropout(0.1))\nmodel.add(BatchNormalization())\n\n\n\nmodel.add(MaxPool2D((2,2)))\nmodel.add(Conv2D(64 , (3,3), activation = 'relu'))\nmodel.add(BatchNormalization())\n\n\n\nmodel.add(MaxPool2D((2,2) ))\nmodel.add(Conv2D(128 , (3,3), activation = 'relu'))\nmodel.add(Dropout(0.2))\nmodel.add(BatchNormalization())\n\n\n\nmodel.add(MaxPool2D((2,2)))\nmodel.add(Conv2D(256 , (3,3), activation = 'relu'))\nmodel.add(Dropout(0.2))\nmodel.add(BatchNormalization())\n\n\n\nmodel.add(MaxPool2D((2,2)))\n\nmodel.add(Flatten())\n\nmodel.add(Dense(units = 128 , activation = 'relu'))\nmodel.add(Dropout(0.2))\nmodel.add(Dense(units = 1 , activation = 'sigmoid')) #clasificación binaria","metadata":{"execution":{"iopub.status.busy":"2023-06-22T20:26:46.802538Z","iopub.execute_input":"2023-06-22T20:26:46.802883Z","iopub.status.idle":"2023-06-22T20:26:47.025531Z","shell.execute_reply.started":"2023-06-22T20:26:46.802849Z","shell.execute_reply":"2023-06-22T20:26:47.024667Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"loss = keras.losses.BinaryCrossentropy()\nmodel.compile(loss=loss, \n              optimizer = keras.optimizers.Adam(1e-3),\n              metrics=[keras.metrics.AUC(),keras.metrics.Precision(),\n                       keras.metrics.Recall()])","metadata":{"execution":{"iopub.status.busy":"2023-06-22T20:26:50.57029Z","iopub.execute_input":"2023-06-22T20:26:50.570634Z","iopub.status.idle":"2023-06-22T20:26:50.765866Z","shell.execute_reply.started":"2023-06-22T20:26:50.5706Z","shell.execute_reply":"2023-06-22T20:26:50.764986Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.fit(\n      x = training,\n      epochs=7,\n      validation_data=validation,\n      verbose=1)","metadata":{"execution":{"iopub.status.busy":"2023-06-22T20:33:14.347916Z","iopub.execute_input":"2023-06-22T20:33:14.348302Z","iopub.status.idle":"2023-06-22T23:19:55.88747Z","shell.execute_reply.started":"2023-06-22T20:33:14.348265Z","shell.execute_reply":"2023-06-22T23:19:55.886621Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model.save('/kaggle/working/model-batchNormalization_Dropout.h5')","metadata":{"execution":{"iopub.status.busy":"2023-06-22T23:20:21.122826Z","iopub.execute_input":"2023-06-22T23:20:21.123192Z","iopub.status.idle":"2023-06-22T23:20:21.235743Z","shell.execute_reply.started":"2023-06-22T23:20:21.123157Z","shell.execute_reply":"2023-06-22T23:20:21.234851Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"results = model.evaluate(test, batch_size=128)","metadata":{"execution":{"iopub.status.busy":"2023-06-22T23:20:26.782013Z","iopub.execute_input":"2023-06-22T23:20:26.782674Z","iopub.status.idle":"2023-06-23T00:17:07.431707Z","shell.execute_reply.started":"2023-06-22T23:20:26.782623Z","shell.execute_reply":"2023-06-23T00:17:07.427641Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"print(\"test loss, test auc, test precision, test recall:\", results)","metadata":{"execution":{"iopub.status.busy":"2023-06-23T00:17:07.434988Z","iopub.execute_input":"2023-06-23T00:17:07.436299Z","iopub.status.idle":"2023-06-23T00:17:07.440705Z","shell.execute_reply.started":"2023-06-23T00:17:07.436263Z","shell.execute_reply":"2023-06-23T00:17:07.439859Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred = model.predict(test)","metadata":{"execution":{"iopub.status.busy":"2023-06-23T00:17:07.44273Z","iopub.execute_input":"2023-06-23T00:17:07.443112Z","iopub.status.idle":"2023-06-23T00:45:31.331489Z","shell.execute_reply.started":"2023-06-23T00:17:07.443059Z","shell.execute_reply":"2023-06-23T00:45:31.330464Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import numpy as np\n\ny_pred_binary = np.squeeze(np.round(y_pred)).astype(int)\ny_pred_binary","metadata":{"execution":{"iopub.status.busy":"2023-06-23T00:45:31.333116Z","iopub.execute_input":"2023-06-23T00:45:31.333464Z","iopub.status.idle":"2023-06-23T00:45:31.343369Z","shell.execute_reply.started":"2023-06-23T00:45:31.333427Z","shell.execute_reply":"2023-06-23T00:45:31.342355Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred_proba = model.predict_proba(test)","metadata":{"execution":{"iopub.status.busy":"2023-06-23T00:45:31.345891Z","iopub.execute_input":"2023-06-23T00:45:31.346348Z","iopub.status.idle":"2023-06-23T00:56:49.644744Z","shell.execute_reply.started":"2023-06-23T00:45:31.34631Z","shell.execute_reply":"2023-06-23T00:56:49.643801Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"y_pred_proba[:,0]","metadata":{"execution":{"iopub.status.busy":"2023-06-23T00:56:49.646516Z","iopub.execute_input":"2023-06-23T00:56:49.646864Z","iopub.status.idle":"2023-06-23T00:56:49.654437Z","shell.execute_reply.started":"2023-06-23T00:56:49.646825Z","shell.execute_reply":"2023-06-23T00:56:49.653568Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}