(cfg, loader, model, device, mode, epoch, work_dir, recoder)
| 3 | from tqdm import tqdm |
| 4 | |
| 5 | def seq_eval(cfg, loader, model, device, mode, epoch, work_dir, recoder): |
| 6 | model.eval() |
| 7 | total_sent = [] |
| 8 | total_info = [] |
| 9 | for data in tqdm(loader): |
| 10 | recoder.record_timer("device") |
| 11 | vid = device.data_to_device(data[0]) |
| 12 | vid_lgt = device.data_to_device(data[1]) |
| 13 | with torch.no_grad(): |
| 14 | ret_dict = model.eval_network(vid, vid_lgt) |
| 15 | |
| 16 | total_info += [file_name.split("|")[0] for file_name in data[-1]] |
| 17 | total_sent += ret_dict['recognized_sents'] |
| 18 | |
| 19 | write2file(work_dir + "output-hypothesis-{}.ctm".format(mode), total_info, total_sent) |
| 20 | ret = evaluate( |
| 21 | prefix=work_dir, mode=mode, output_file="output-hypothesis-{}.ctm".format(mode), |
| 22 | evaluate_dir=cfg.dataset_info['evaluation_dir'], |
| 23 | evaluate_prefix=cfg.dataset_info['evaluation_prefix'] |
| 24 | ) |
| 25 | |
| 26 | recoder.print_log(f"Epoch {epoch}, {mode} {ret: 2.2f}%", f"{work_dir}/{mode}.txt") |
| 27 | return ret |
| 28 | |
| 29 | |
| 30 | def write2file(path, info, output): |
no test coverage detected