{"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":"I am trying to submit a random scoring tflite model, and all my submissions are failed stuck at \"Submission Scoring Error\"\n\nI've been trying to stick to the framework of last competition (https://www.kaggle.com/code/hoyso48/1st-place-solution-inferencehttps://www.kaggle.com/code/hoyso48/1st-place-solution-inference)\n\nFollowing the (quite sparse) documentation https://www.kaggle.com/competitions/asl-signs/overview/evaluationhttps://www.kaggle.com/competitions/asl-signs/overview/evaluation\n\nWhat did not work :\n - changing input type and tflite compression to tf.float32, tf.float16\n - playing with output batch size unbatched (1, n_chars, len_character_map), squeezed (n_chars, len_character_map), (bs, n_chars, len_character_map),\n - changing output signature 'REQUIRED_OUTPUT' is not defined in the docs to output / outputs\n\n\nEDIT : working now, I am not sure why","metadata":{}},{"cell_type":"code","source":"import os\nimport tensorflow as tf\nfrom keras.layers import Input, Lambda\nfrom keras.models import Model\nimport numpy as np\nimport json\n\nbasedir = \"/kaggle/working/\"\n\nd = {\"selected_columns\":[\"x_right_hand_0\"]}\n\nwith open(f\"{basedir}/inference_args.json\", \"w\") as f:\n    json.dump(d, f)\n    \nclass RandomScoreLayer(tf.keras.layers.Layer):\n    def __init__(self, num_outputs=59, **kwargs):\n        super(RandomScoreLayer, self).__init__(**kwargs)\n        self.num_outputs = num_outputs\n\n    def build(self, input_shape=None):\n        pass\n    def call(self, inputs):\n        return tf.random.uniform(shape = [1,self.num_outputs])\n\nmodel = tf.keras.Sequential(\n    [\n        tf.keras.layers.Input((None, 1), name=\"inputs\"),\n        RandomScoreLayer(name=\"outputs\")\n    ]\n)\nframes = np.zeros((1,160,1))\nframes=tf.convert_to_tensor(frames, dtype=tf.float16)\nmodel(frames)\nmodel.summary()\n\n\nkeras_model_converter = tf.lite.TFLiteConverter.from_keras_model(model)\nkeras_model_converter.optimizations = [tf.lite.Optimize.DEFAULT]\nkeras_model_converter.experimental_new_converter=True\nkeras_model_converter.target_spec.supported_ops = [tf.lite.OpsSet.TFLITE_BUILTINS,\n                                       tf.lite.OpsSet.SELECT_TF_OPS]\ntflite_model = keras_model_converter.convert()\n\nwith open(f'{basedir}/model.tflite', 'wb') as f:\n    f.write(tflite_model)\n\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2023-05-17T13:13:24.917336Z","iopub.execute_input":"2023-05-17T13:13:24.917734Z","iopub.status.idle":"2023-05-17T13:13:25.376091Z","shell.execute_reply.started":"2023-05-17T13:13:24.917703Z","shell.execute_reply":"2023-05-17T13:13:25.375184Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!zip /kaggle/working/submission.zip  '/kaggle/working/model.tflite' '/kaggle/working/inference_args.json'","metadata":{"execution":{"iopub.status.busy":"2023-05-17T13:13:30.290653Z","iopub.execute_input":"2023-05-17T13:13:30.291275Z","iopub.status.idle":"2023-05-17T13:13:31.396181Z","shell.execute_reply.started":"2023-05-17T13:13:30.291238Z","shell.execute_reply":"2023-05-17T13:13:31.394816Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}