{"cells":[{"metadata":{"_uuid":"d629ff2d2480ee46fbb7e2d37f6b5fab8052498a","_cell_guid":"79c7e3d0-c299-4dcb-8224-4455121ee9b0","trusted":true},"cell_type":"code","source":"import numpy as np\nimport pandas as pd \nimport math, re, os\nimport random\nimport gc\nimport tensorflow as tf\nimport numpy as np\nimport pandas as pd\nfrom sklearn.model_selection import KFold\nimport matplotlib.pyplot as plt\nfrom kaggle_datasets import KaggleDatasets\nfrom tensorflow import keras\nfrom functools import partial\nfrom tensorflow.keras import backend as K\nfrom sklearn.metrics import classification_report, accuracy_score\nfrom sklearn.model_selection import train_test_split\nprint(\"Tensorflow version \" + tf.__version__)\nfrom sklearn.metrics import accuracy_score\nfrom collections import Counter\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"class FixedDropout(tf.keras.layers.Dropout):\n    def _get_noise_shape(self, inputs):\n        if self.noise_shape is None:\n            return self.noise_shape\n        symbolic_shape = K.shape(inputs)\n        noise_shape = [symbolic_shape[axis] if shape is None else shape\n        for axis, shape in enumerate(self.noise_shape)]\n        return tuple(noise_shape)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"dense201 = tf.keras.models.load_model('../input/trained-models/densenet201_40.h5')\ninception = tf.keras.models.load_model('../input/trained-models/inceptionv3_40.h5')\nefficient_net = tf.keras.models.load_model(\n    '../input/trained-models/efficient_netb3_40.h5',\n    compile=False,\n    custom_objects={'FixedDropout':FixedDropout}\n)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"JPEG_PATH = \"../input/cassava-leaf-disease-classification/test_images\"\n\nimport cv2\n\ndef load_image(jpeg_path, image_id):\n    img = cv2.imread(os.path.join(jpeg_path, image_id))/255.0\n    img = cv2.resize(img, (512, 512))[:, :, ::-1]\n\n    return img\ndef generator(filepath, paths, batch_size=32):\n    i=0\n    print(len(paths))\n    while i <= len(paths):\n        batch = []\n        for cpt in range(batch_size):\n            if i + cpt >= len(paths):\n                i += batch_size\n                break\n            batch.append(load_image(filepath, paths[i+cpt]))\n            \n        i += batch_size\n        yield np.stack(batch)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission = pd.read_csv('../input/cassava-leaf-disease-classification/sample_submission.csv')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def vote_in_ensemble(v1, v2, v3):\n    if v1 == v2:\n        return v1\n    if v2 == v3:\n        return v2\n    if v1 == v3:\n        return v3\n    return v1","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"def predict_for_pretrained(model):\n    ds_test = generator(JPEG_PATH,np.sort(submission.image_id.values)) \n    preds = np.argmax(model.predict(ds_test, verbose=True), axis=-1)\n    return preds\n\ndense_preds = predict_for_pretrained(dense201)\ninception_preds = predict_for_pretrained(inception)\nefficient_net_preds = predict_for_pretrained(efficient_net)\n\nresult = []\n\nfor idx, val in enumerate(dense_preds):\n    result.append(\n        vote_in_ensemble(\n            dense_preds[idx],\n            inception_preds[idx],\n            efficient_net_preds[idx]\n        )\n    )","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"submission[\"label\"] = result\nsubmission.to_csv(\"submission.csv\", index=False)","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}