{"cells":[{"metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true},"cell_type":"code","source":"import tensorflow as tf\nimport os\nimport numpy as np\nimport pandas as pd\nimport datetime\nprint(tf.__version__)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"import keras.backend as K\ndef f1(y_true, y_pred): #taken from old keras source code\n    true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))\n    possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))\n    predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))\n    precision = true_positives / (predicted_positives + K.epsilon())\n    recall = true_positives / (possible_positives + K.epsilon())\n    f1_val = 2*(precision*recall)/(precision+recall+K.epsilon())\n    return f1_val","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"model = tf.keras.models.load_model('../input/plant-pathology-01/mobilenet_plant_v1.h5',custom_objects={'f1': f1})\n#'somefile', custom_objects={'x': x}","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"names = os.listdir('../input/plant-pathology-2021-fgvc8/test_images')","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"IMSIZE = 128\ndef _parse(name):\n    image_string = tf.io.read_file('../input/plant-pathology-2021-fgvc8/test_images/' + name)\n    image_decoded = tf.image.decode_jpeg(image_string)\n    imgs = tf.image.resize(image_decoded, [IMSIZE, IMSIZE])\n    return imgs/255\n\n\n\ndataset = tf.data.Dataset.from_tensor_slices((tf.constant(names)))\\\n                               .map(_parse, num_parallel_calls=tf.data.AUTOTUNE)\\\n                               .batch(32)\\\n                               .prefetch(tf.data.AUTOTUNE)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"y_pred = model.predict(dataset, verbose=1)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"label_names=['complex','frog_eye_leaf_spot','frog_eye_leaf_spot complex','healthy','powdery_mildew','powdery_mildew complex','rust','rust complex','rust frog_eye_leaf_spot','scab','scab frog_eye_leaf_spot','scab frog_eye_leaf_spot complex']\ny = np.around(y_pred)\ni = 0\nlabels = []\nfor i in range(len(y)):\n    vec = str()\n    for j in range(len(label_names)):\n        if(y[i][j]==1):\n            vec = vec + label_names[j] + \" \"\n    labels.append(vec)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"df = pd.DataFrame({'image':names, 'labels':labels})","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.to_csv('./submission.csv', index=False)","execution_count":null,"outputs":[]},{"metadata":{"trusted":true},"cell_type":"code","source":"!cat \"/kaggle/working/submission.csv\"","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}