def main(): args = parser.parse_args() # Load a config file (.yml) params = load_config(join(args.model_path, 'config.yml'), is_eval=True) # Setting for logging logger = set_logger(args.model_path) for i, data_type in enumerate(['dev', 'test']): # Load dataset dataset = Dataset(data_save_path=args.data_save_path, backend=params['backend'], input_freq=params['input_freq'], use_delta=params['use_delta'], use_double_delta=params['use_double_delta'], data_type=data_type, label_type=params['label_type'], batch_size=args.eval_batch_size, splice=params['splice'], num_stack=params['num_stack'], num_skip=params['num_skip'], sort_utt=False, tool=params['tool']) if i == 0: params['num_classes'] = dataset.num_classes # Load model model = load(model_type=params['model_type'], params=params, backend=params['backend']) # Restore the saved parameters epoch, _, _, _ = model.load_checkpoint(save_path=args.model_path, epoch=args.epoch) # GPU setting model.set_cuda(deterministic=False, benchmark=True) logger.info('beam width: %d' % args.beam_width) logger.info('epoch: %d' % (epoch - 1)) per, df = eval_phone(model=model, dataset=dataset, map_file_path='./conf/phones.60-48-39.map', eval_batch_size=args.eval_batch_size, beam_width=args.beam_width, max_decode_len=MAX_DECODE_LEN_PHONE, min_decode_len=MIN_DECODE_LEN_PHONE, length_penalty=args.length_penalty, coverage_penalty=args.coverage_penalty, progressbar=True) logger.info(' PER (%s): %.3f %%' % (data_type, (per * 100))) logger.info(df)
def main(): args = parser.parse_args() # Load a config file (.yml) params = load_config(join(args.model_path, 'config.yml'), is_eval=True) logger = set_logger(args.model_path) for i, data_type in enumerate( ['dev_clean', 'dev_other', 'test_clean', 'test_other']): # Load dataset dataset = Dataset(data_save_path=args.data_save_path, backend=params['backend'], input_freq=params['input_freq'], use_delta=params['use_delta'], use_double_delta=params['use_double_delta'], data_type=data_type, data_size=params['data_size'], label_type=params['label_type'], batch_size=args.eval_batch_size, splice=params['splice'], num_stack=params['num_stack'], num_skip=params['num_skip'], sort_utt=False, tool=params['tool']) if i == 0: params['num_classes'] = dataset.num_classes # Load model model = load(model_type=params['model_type'], params=params, backend=params['backend']) # Restore the saved parameters epoch, _, _, _ = model.load_checkpoint(save_path=args.model_path, epoch=args.epoch) # GPU setting model.set_cuda(deterministic=False, benchmark=True) logger.info('beam width: %d' % args.beam_width) logger.info('epoch: %d' % (epoch - 1)) if params['label_type'] == 'word': wer, df = eval_word(models=[model], dataset=dataset, eval_batch_size=args.eval_batch_size, beam_width=args.beam_width, max_decode_len=MAX_DECODE_LEN_WORD, min_decode_len=MIN_DECODE_LEN_WORD, length_penalty=args.length_penalty, coverage_penalty=args.coverage_penalty, progressbar=True) logger.info(' WER (%s): %.3f %%' % (dataset.label_type, (wer * 100))) logger.info(df) else: wer, cer, df = eval_char(models=[model], dataset=dataset, eval_batch_size=args.eval_batch_size, beam_width=args.beam_width, max_decode_len=MAX_DECODE_LEN_CHAR, min_decode_len=MIN_DECODE_LEN_CHAR, length_penalty=args.length_penalty, coverage_penalty=args.coverage_penalty, progressbar=True) logger.info(' WER / CER (%s): %.3f / %.3f %%' % (dataset.label_type, (wer * 100), (cer * 100))) logger.info(df)
def main(): args = parser.parse_args() # Load a config file (.yml) params = load_config(join(args.model_path, 'config.yml'), is_eval=True) # Setting for logging logger = set_logger(args.model_path) wer_mean, wer_sub_mean, cer_sub_mean = 0, 0, 0 for i, data_type in enumerate(['eval1', 'eval2', 'eval3']): # Load dataset dataset = Dataset(data_save_path=args.data_save_path, backend=params['backend'], input_freq=params['input_freq'], use_delta=params['use_delta'], use_double_delta=params['use_double_delta'], data_type=data_type, data_size=params['data_size'], label_type=params['label_type'], label_type_sub=params['label_type_sub'], batch_size=args.eval_batch_size, splice=params['splice'], num_stack=params['num_stack'], num_skip=params['num_skip'], shuffle=False, tool=params['tool']) if i == 0: params['num_classes'] = dataset.num_classes params['num_classes_sub'] = dataset.num_classes_sub # Load model model = load(model_type=params['model_type'], params=params, backend=params['backend']) # Restore the saved parameters epoch, _, _, _ = model.load_checkpoint(save_path=args.model_path, epoch=args.epoch) # GPU setting model.set_cuda(deterministic=False, benchmark=True) logger.info('beam width (main): %d\n' % args.beam_width) logger.info('beam width (sub) : %d\n' % args.beam_width_sub) logger.info('epoch: %d' % (epoch - 1)) logger.info('a2c oracle: %s\n' % str(args.a2c_oracle)) logger.info('resolving_unk: %s\n' % str(args.resolving_unk)) logger.info('joint_decoding: %s\n' % str(args.joint_decoding)) logger.info('score_sub_weight : %f' % args.score_sub_weight) wer, df = eval_word(models=[model], dataset=dataset, eval_batch_size=args.eval_batch_size, beam_width=args.beam_width, max_decode_len=MAX_DECODE_LEN_WORD, min_decode_len=MIN_DECODE_LEN_WORD, beam_width_sub=args.beam_width_sub, max_decode_len_sub=MAX_DECODE_LEN_CHAR, min_decode_len_sub=MIN_DECODE_LEN_CHAR, length_penalty=args.length_penalty, coverage_penalty=args.coverage_penalty, progressbar=True, resolving_unk=args.resolving_unk, a2c_oracle=args.a2c_oracle, joint_decoding=args.joint_decoding, score_sub_weight=args.score_sub_weight) wer_mean += wer logger.info(' WER (%s, main): %.3f %%' % (data_type, (wer * 100))) logger.info(df) wer_sub, cer_sub, df_sub = eval_char( models=[model], dataset=dataset, eval_batch_size=args.eval_batch_size, beam_width=args.beam_width_sub, max_decode_len=MAX_DECODE_LEN_CHAR, min_decode_len=MIN_DECODE_LEN_CHAR, length_penalty=args.length_penalty, coverage_penalty=args.coverage_penalty, progressbar=True) wer_sub_mean += wer_sub cer_sub_mean += cer_sub logger.info(' WER / CER (%s, sub): %.3f / %.3f %%' % (data_type, (wer_sub * 100), (cer_sub * 100))) logger.info(df_sub) logger.info(' WER (mean, main): %.3f %%' % (wer_mean * 100 / 3)) logger.info(' WER / CER (mean, sub): %.3f / %.3f %%' % ((wer_sub_mean * 100 / 3), (cer_sub_mean * 100 / 3)))