if index == 10: warmup_t = time.time() data_line = data_line.decode('utf-8') substr = data_line.strip("\n").split("\t") img_path, label = data_dir + "/" + substr[0], substr[1] data = {'img_path': img_path, 'label': label} with open(data['img_path'], 'rb') as f: img = f.read() data['image'] = img st = time.time() batch = transform(data, ops) batch_pred = [0] * len(batch) for i in range(len(batch)): batch_pred[i] = paddle.to_tensor( np.expand_dims(batch[i], axis=0)) st = time.time() node, edge = model(batch_pred) node = F.softmax(node, -1) count_t.append(time.time() - st) draw_kie_result(batch, node, idx_to_cls, index) logger.info("success!") logger.info("It took {} s for predict {} images.".format( np.sum(count_t), len(count_t))) ips = len(count_t[warmup_times:]) / np.sum(count_t[warmup_times:]) logger.info("The ips is {} images/s".format(ips)) if __name__ == '__main__': config, device, logger, vdl_writer = program.preprocess() main()
]) logger.info( "The sensitivity analysis results of model parameters saved in sen.pickle" ) # calculate pruned params's ratio params_sensitive = pruner._get_ratios_by_loss(params_sensitive, loss=0.02) for key in params_sensitive.keys(): logger.info("{}, {}".format(key, params_sensitive[key])) #params_sensitive = {} #for param in model.parameters(): # if 'transpose' not in param.name and 'linear' not in param.name: # params_sensitive[param.name] = 0.1 plan = pruner.prune_vars(params_sensitive, [0]) flops = paddle.flops(model, [1, 3, 640, 640]) logger.info("FLOPs after pruning: {}".format(flops)) # start train program.train(config, train_dataloader, valid_dataloader, device, model, loss_class, optimizer, lr_scheduler, post_process_class, eval_class, pre_best_model_dict, logger, vdl_writer) if __name__ == '__main__': config, device, logger, vdl_writer = program.preprocess(is_train=True) main(config, device, logger, vdl_writer)