{"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":"code","source":"import numpy as np\nimport pandas as pd\nimport tensorflow as tf\nimport os","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Verify TFLite model can be loaded and used for prediction\n!pip install tflite-runtime","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# 构建要保存为 JSON 的数据\ndata = {\n    \"test\": [\n        \n    ]\n}\n\nROWS_PER_FRAME = 543  # number of landmarks per frame每帧的标记数量\n\n\n# `load_relevant_data_subset 加载相关数据子集\n# 提取数据集中的x、y、z三列数据，将数据集按照每帧的地标数量进行切分，返回一个三维数组。\n# 其中第一维表示帧数，第二维表示每帧的地标数量，第三维表示x、y、z三个坐标轴。\ndef load_relevant_data_subset(pq_path):\n    data_columns = ['x', 'y', 'z']\n    data1 = pd.read_parquet(pq_path, columns=data_columns)\n    n_frames = int(len(data1) / ROWS_PER_FRAME)\n    data1 = data1.values.reshape(n_frames, ROWS_PER_FRAME, len(data_columns))\n    return data1.astype(np.float32)\n\n\n# 指定包含Parquet文件的文件夹路径\nfolder_path = '/kaggle/input/data18796'\n# 用于存储Parquet文件路径的列表\nparquet_paths = []\n# 遍历文件夹及其子文件夹\nfor root, dirs, files in os.walk(folder_path):\n    # 遍历当前文件夹中的文件\n    for file in files:\n        # 检查文件是否是Parquet文件\n        if file.endswith('.parquet'):\n            # 构建Parquet文件的完整路径\n            file_path = os.path.join(root, file)\n            # 将文件路径添加到列表中\n            parquet_paths.append(file_path)\n\n# 打印生成的Parquet文件路径列表\n# print(parquet_paths)\n# print(data)\n","metadata":{"_kg_hide-input":true,"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import tflite_runtime.interpreter as tflite\n\ninterpreter = tflite.Interpreter(\"/kaggle/input/testmodel2/modelimprove.tflite\")\nfound_signatures = list(interpreter.get_signature_list().keys())\nprediction_fn = interpreter.get_signature_runner(\"serving_default\")\n","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for file_path in parquet_paths:\n    path = file_path.replace(\"\\\\\", \"/\")\n    demo_raw_data = load_relevant_data_subset(path)\n    output = prediction_fn(inputs=demo_raw_data)\n    sign = output['outputs'].argmax()\n    # 要添加的新数据项\n    new_item = {\"seq_id\": file_path.replace(\"/kaggle/input/data18796/\", \"\"), \"label\": str(sign)}\n    # 将新数据项添加到 \"test\" 列表中\n    data[\"test\"].append(new_item)\n\n# i = 0\n# while i < 1000:\n#     file_path = parquet_paths[i]\n#     path = file_path.replace(\"\\\\\", \"/\")\n#     # print(path)\n#     demo_raw_data = load_relevant_data_subset(path)\n#     output = prediction_fn(inputs=demo_raw_data)\n#     sign = output['outputs'].argmax()\n#     # print(output)\n#     # print(sign)\n#     i = i+1\n#     # 要添加的新数据项\n#     new_item = {\"seq_id\": file_path.replace(\"/kaggle/input/asl-signs/train_landmark_files/\", \"\"), \"label\": str(sign)}\n#     # 将新数据项添加到 \"test\" 列表中\n#     data[\"test\"].append(new_item)\nprint(data)    ","metadata":{"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import json\n# 将数据转换为 JSON 格式\njson_data = json.dumps(data)\n\n# 指定要保存的文件路径\noutput_file = \"18796.json\"\n\n# 将 JSON 数据写入文件\nwith open(output_file, \"w\") as file:\n    file.write(json_data)","metadata":{"trusted":true},"execution_count":null,"outputs":[]}]}