{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import os\nimport logging\nimport keras\n\n# CODEBASE LINK: https://gitlab.com/tolparow/pned/-/archive/dev/pned-dev.zip\n\n# Change directory to import main code\nos.chdir('/kaggle/input/pnedcode/pned-dev/pned-dev/')\n\nlogging.basicConfig()\nlogger = logging.getLogger('my')\nlogger.warning(str(os.listdir()))\n\nfrom framework.data.generator import DataGenerator\nfrom framework.data.source import DataSource\n\nfrom framework.model.evaluation import intersection_over_union, mean_intersection_over_union\nfrom framework.model.network import SimpleCNN\n\n# Reset to working directory\nos.chdir(\"/kaggle/working/\")\n\n\ndata_source = DataSource(\n    '/kaggle/input/rsna-pneumonia-detection-challenge/stage_2_train_images',\n    '/kaggle/input/rsna-pneumonia-detection-challenge/stage_2_train_labels.csv'\n)\ndata_source.split_dataset()\n\ntrain_data_generator = DataGenerator(\n    data_source,\n    batch_size=64,\n    augment=True,\n    dataset=1\n)\n\nvalidate_data_generator = DataGenerator(\n    data_source,\n    batch_size=16,\n    augment=True,\n    dataset=2\n)\n\nnetwork = SimpleCNN(optimizer='adam',\n                    loss=intersection_over_union,\n                    metrics=[mean_intersection_over_union, keras.losses.binary_crossentropy],\n                    input_size=256,\n                    channels=32,\n                    n_blocks=2,\n                    depth=4)\n\nmodel = network.get_compiled_model()\n\nsave_epochs_callback = keras.callbacks.ModelCheckpoint('weights.{epoch:02d}-{val_loss:.2f}.h5',\n                                                       monitor='val_loss',\n                                                       verbose=1,\n                                                       save_best_only=True,\n                                                       save_weights_only=False,\n                                                       mode='auto',\n                                                       period=1)\n\nhistory = model.fit_generator(train_data_generator,\n                              validation_data=validate_data_generator,\n                              callbacks=[save_epochs_callback],\n                              epochs=15)\n\nmodel.save('model.h5')\n\nlogger.warning(str(os.listdir()))\n","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.6.6","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":1}