{"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":"# 모듈 불러오기\nimport sys\nsys.path.append('../input/birdclefdata')\n\nfrom Classes import BirdSoundDataset_te as DSET\nfrom Classes import BirdRecognition as MODEL\nfrom pathlib import Path\nfrom tqdm.notebook import tqdm\nimport pandas as pd\nimport torch\nimport json\nimport pickle\n\n# Device 설정\nif torch.cuda.is_available(): DEVICE = 'cuda'\nelse                        : DEVICE = 'cpu'","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2022-05-24T13:49:56.837859Z","iopub.execute_input":"2022-05-24T13:49:56.838573Z","iopub.status.idle":"2022-05-24T13:49:58.630808Z","shell.execute_reply.started":"2022-05-24T13:49:56.838468Z","shell.execute_reply":"2022-05-24T13:49:58.629619Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Load dataset, model","metadata":{}},{"cell_type":"code","source":"with open('../input/birdclef-2022/scored_birds.json', 'r') as file:  # Bird classes for score\n    classes = json.load(file)\n\ntestset = DSET(Path('../input/birdclef-2022/test_soundscapes'), classes)      # test datset\n\nmodel = MODEL(classes)\n\nparam_path = list(Path('../input/birdclefdata/').glob('*.params'))   # prameter list\nparam_path.sort()\nparam_path = param_path[-1]                     # last (newest) parameter\nwith open(param_path, 'rb') as file:\n    param = pickle.load(file)                   # load parameter\nmodel.load_state_dict(param)","metadata":{"execution":{"iopub.status.busy":"2022-05-24T13:49:58.632985Z","iopub.execute_input":"2022-05-24T13:49:58.63323Z","iopub.status.idle":"2022-05-24T13:49:58.752473Z","shell.execute_reply.started":"2022-05-24T13:49:58.6332Z","shell.execute_reply":"2022-05-24T13:49:58.751215Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"# Test","metadata":{}},{"cell_type":"code","source":"answers = { 'row_id': [], 'target': [] }\n\nfor data in tqdm(testset):\n    inputs = data[1].tolist()\n    \n    for idx, input_ in enumerate(inputs):\n        input_ = torch.Tensor(input_)\n        out = model(input_).tolist()\n\n        for bidx, class_ in enumerate(classes):\n            answer_ = True if out[bidx] >= 0.2 else False\n            id_ = f'{data[0]}_{class_}_{5 * (idx+1)}'\n            answers['row_id'].append(id_)\n            answers['target'].append(answer_)\n\nanswers = pd.DataFrame(answers)\nanswers.sort_values(by='row_id', inplace=True)\nanswers.to_csv('submission.csv', index=False)","metadata":{"execution":{"iopub.status.busy":"2022-05-24T13:49:58.753347Z","iopub.status.idle":"2022-05-24T13:49:58.753709Z","shell.execute_reply.started":"2022-05-24T13:49:58.753511Z","shell.execute_reply":"2022-05-24T13:49:58.753537Z"},"trusted":true},"execution_count":null,"outputs":[]}]}