rank = 0 max_captcha_digits = cf.max_captcha_digits input_size = m.ceil(cf.captcha_height / 64) * 64 * 3 # create dataset dataset = create_dataset(dataset_path=args_opt.dataset_path, batch_size=cf.batch_size, num_shards=device_num, shard_id=rank, device_target=args_opt.platform) step_size = dataset.get_dataset_size() # define lr lr_init = cf.learning_rate if not args_opt.run_distribute else cf.learning_rate * device_num * lr_scale lr = get_lr(cf.epoch_size, step_size, lr_init) loss = CTCLoss(max_sequence_length=cf.captcha_width, max_label_length=max_captcha_digits, batch_size=cf.batch_size) if args_opt.platform == 'Ascend': net = StackedRNN(input_size=input_size, batch_size=cf.batch_size, hidden_size=cf.hidden_size) else: net = StackedRNNForGPU(input_size=input_size, batch_size=cf.batch_size, hidden_size=cf.hidden_size) opt = nn.SGD(params=net.trainable_params(), learning_rate=lr, momentum=cf.momentum) net = WithLossCell(net, loss) net = TrainOneStepCellWithGradClip(net, opt).set_train()
if args_opt.platform == 'Ascend': device_id = int(os.getenv('DEVICE_ID')) context.set_context(device_id=device_id) if __name__ == '__main__': config.batch_size = 1 max_text_length = config.max_text_length input_size = config.input_size # create dataset dataset = create_dataset(name=args_opt.dataset, dataset_path=args_opt.dataset_path, batch_size=config.batch_size, is_training=False, config=config) step_size = dataset.get_dataset_size() loss = CTCLoss(max_sequence_length=config.num_step, max_label_length=max_text_length, batch_size=config.batch_size) net = CRNN(config) # load checkpoint param_dict = load_checkpoint(args_opt.checkpoint_path) load_param_into_net(net, param_dict) net.set_train(False) # define model model = Model(net, loss_fn=loss, metrics={'CRNNAccuracy': CRNNAccuracy(config)}) # start evaluation res = model.eval(dataset, dataset_sink_mode=args_opt.platform == 'Ascend') print("result:", res, flush=True)