def scoreUpdate(self, **kw): print "-------------" print kw id = kw['id'] value = kw['value'] score = Score.get(int(id)) crit = score.criterion assessment = score.assessment category = crit.category score.value = value user = identity.current.user eh = EditHistory.selectBy(assessmentID=assessment.id, category=category) if eh.count() > 0: eh[0].editor = user.firstlast() eh[0].program = user.program.name else: EditHistory(assessmentID=assessment.id, category=category, editor=user.firstlast(), program=user.program.name) if crit.prefix in ['Y','Z']: st_crit = Criterion.selectBy(level=assessment.level, category=category, prefix="Z")[0] na_crit = Criterion.selectBy(level=assessment.level, category=category, prefix="Y")[0] possible = util.scorePossible(category, assessment.level) subtotal = Score.selectBy(criterionID=st_crit.id, assessmentID=assessment.id)[0].value na = Score.selectBy(criterionID=na_crit.id, assessmentID=assessment.id)[0].value return str(util.percent(subtotal,possible,na)) return dict()
def __init__(self, parser_params, device): """ :param parser_params: parser args """ num_hidden = [int(x) for x in parser_params.num_hidden.split(',')] self.seq_length = parser_params.seq_length self.batch_size = parser_params.batch_size self.patch_size = parser_params.patch_size self.num_layers = len(num_hidden) networks_map = {'BiLSTM': BiLSTM.RNN, 'Bi-LSTM3': BiLSTM3.RNN} if parser_params.model_name in networks_map: if parser_params.LSTM_pretrained: print("Loading LSTM pretrained model...") Network = networks_map[parser_params.model_name] self.network = Network( self.num_layers, num_hidden, parser_params.seq_length, parser_params.patch_size, parser_params.batch_size, parser_params.img_size, parser_params.img_channel, parser_params.filter_size, parser_params.stride) self.network.load_state_dict( torch.load(parser_params.LSTM_pretrained)) self.network = DataParallel(self.network, device_ids=[0, 1, 2]) self.network.to(device) ### freeze weight for param in self.network.parameters(): param.requires_grad = False else: Network = networks_map[parser_params.model_name] self.network = Network( self.num_layers, num_hidden, parser_params.seq_length, parser_params.patch_size, parser_params.batch_size, parser_params.img_size, parser_params.img_channel, parser_params.filter_size, parser_params.stride) self.network = DataParallel(self.network, device_ids=[0, 1, 2]) self.network.to(device) # Fine tune network Network2 = networks_map[parser_params.model_name] self.network2 = Network2( self.num_layers, num_hidden, parser_params.seq_length, parser_params.patch_size, parser_params.batch_size, parser_params.img_size, parser_params.img_channel, parser_params.filter_size, parser_params.stride) self.network2 = DataParallel(self.network2, device_ids=[0, 1, 2]) self.network2.to(device) else: raise ValueError('Name of network unknown {}'.format( parser_params.model_name)) self.criterion = Criterion.Loss() self.optimizer2 = Adam(self.network2.parameters(), lr=parser_params.lr)
def fillUpdate(self, **kw): assessment = Assessment.get(cherrypy.session['current_assessment']) category = cherrypy.session['current_category'] fill = kw['fill'] value = kw['values'] cherrypy.session['fill'] = fill cherrypy.session['values'] = value scores = assessment.scores criteria = Criterion.selectBy(category=category, level=assessment.level) if value == 'previous': sorted_assessments = Assessment.select(AND(Assessment.q.childID==assessment.childID, Assessment.q.id!=assessment.id), orderBy='-dateEntered') previous = sorted_assessments[0] for c in criteria: score = Score.selectBy(criterionID=c.id, assessmentID=assessment.id, type='score') if score.count() == 0: if value == 'previous': temp = Score.selectBy(criterionID=c.id, assessmentID=previous.id, type='score') if temp.count() > 0: Score(value=temp[0].value, criterionID=c.id, assessmentID=assessment.id, type='score') elif value == 'zeros': Score(value="0", criterionID=c.id, assessmentID=assessment.id, type='score') elif value == 'twos': Score(value="2", criterionID=c.id, assessmentID=assessment.id, type='score') elif score[0].value not in ['0','1','2','#'] or fill == 'all': if value == 'previous': temp = Score.selectBy(criterionID=c.id, assessmentID=previous.id, type='score') if temp.count() > 0: score[0].value = temp[0].value elif value == 'zeros': score[0].value = "0" elif value == 'twos': score[0].value = "2" user = identity.current.user eh = EditHistory.selectBy(assessmentID=assessment.id, category=category) if eh.count() > 0: eh[0].editor = user.firstlast() eh[0].program = user.program.name else: EditHistory(assessmentID=assessment.id, category=category, editor=user.firstlast(), program=user.program.name) raise redirect("/assessment")
def __init__(self, parser_params, device): """ :param parser_params: parser args """ num_hidden = [int(x) for x in parser_params.num_hidden.split(',')] self.seq_length = parser_params.seq_length self.batch_size = parser_params.batch_size self.patch_size = parser_params.patch_size self.num_layers = len(num_hidden) self.CA_patch_size = parser_params.CA_patch_size networks_map = {'BiLSTM': BiLSTM.RNN, 'Bi-LSTM3': BiLSTM3.RNN} if parser_params.model_name in networks_map: if parser_params.LSTM_pretrained: print("Loading LSTM pretrained model...") self.network = torch.load(parser_params.LSTM_pretrained) #### freeze weight for param in self.network.parameters(): param.requires_grad = False else: Network = networks_map[parser_params.model_name] self.network = Network( self.num_layers, num_hidden, parser_params.seq_length, parser_params.patch_size, parser_params.batch_size, parser_params.img_size, parser_params.img_channel, parser_params.filter_size, parser_params.stride) self.network = DataParallel(self.network, device_ids=[0, 1]) self.network.to(device) self.CA = ResModule.RES(n_resgroups=parser_params.n_resgroups, n_resblocks=parser_params.n_resblocks, n_channel=parser_params.img_channel * (parser_params.CA_patch_size**2)) self.CA = DataParallel(self.CA, device_ids=[0, 1]) self.CA.to(device) else: raise ValueError('Name of network unknown {}'.format( parser_params.model_name)) # self.optimizer = Adam(self.network.parameters(), lr=parser_params.lr) self.criterion = Criterion.Loss() self.optimizer_CA = Adam(self.CA.parameters(), lr=parser_params.lr)
def __main__(): args = get_args_parser() dist.init_process_group(backend='nccl') torch.backends.cudnn.enabled = True torch.backends.cudnn.benchmark = True set_random_seed(args.random_seed + dist.get_rank()) torch.cuda.set_device(torch.device('cuda:{}'.format(dist.get_rank()))) dist_logger = DistributedLogger(args.name, args.output_base_path, args.master_rank, args.use_tensorboard) train_dataset = TrainDataset(args.dataset_root, args.dataset_year, (args.input_size_h, args.input_size_w), args.pooler_size) train_sampler = data.distributed.DistributedSampler(train_dataset) train_dataloader = data.DataLoader(train_dataset, batch_size=args.batch_size, num_workers=args.num_workers, sampler=train_sampler, pin_memory=True, drop_last=True) val_dataset = ValDataset(args.dataset_root, args.dataset_year, (args.input_size_h, args.input_size_w)) val_sampler = data.distributed.DistributedSampler(val_dataset) val_dataloader = data.DataLoader(val_dataset, batch_size=args.batch_size, num_workers=args.num_workers, pin_memory=True, sampler=val_sampler) model = BlendMask(len(COCO_CLASSES), args.fpn_channels, args.bases_module_channels, args.num_bases, args.atten_size, args.pooler_size).cuda() # model.load_state_dict(torch.load(f'./output/{args.name}/model/param.pth')) model = parallel.DistributedDataParallel(model, device_ids=[dist.get_rank()], find_unused_parameters=True) criterion = Criterion(args.focal_alpha, args.focal_gamma) optim_parameters = [{ 'params': [ p for n, p in model.module.named_parameters() if not n.endswith('bias') and p.requires_grad ] }, { 'params': [ p for n, p in model.module.named_parameters() if n.endswith('bias') and p.requires_grad ], 'lr': args.lr * args.bias_lr_mul, 'weight_decay': args.weight_decay * args.bias_weight_decay_mul }] optimizer = optim.SGD(optim_parameters, lr=args.lr, momentum=args.momentum, weight_decay=args.weight_decay) lr_lambda = utils.lr_lambda.get_warm_up_multi_step_lr_lambda( len(train_dataloader), args.warm_up_epoch, args.warm_up_ratio, args.milestones, args.step_gamma) lr_scheduler = optim.lr_scheduler.LambdaLR(optimizer, lr_lambda) nms_cfg = { 'nms_pre': args.nms_pre, 'cls_score_thr': args.nms_cls_score_thr, 'iou_thr': args.nms_iou_thr } for epoch_idx in range(args.epochs): train_sampler.set_epoch(epoch_idx) val_sampler.set_epoch(epoch_idx) engine.train_one_epoch(model, criterion, optimizer, lr_scheduler, train_dataloader, epoch_idx, dist_logger)
def index1(self, id=None, category=None, osep='None', print_area='false'): if identity.current.user.basketmode: raise redirect(url("index2",id=id,category=category,osep=osep,print_area=print_area)) osep = True if print_area == 'true': print_area = True else: print_area = False id = util.session('current_assessment', 0, id) category = util.session('current_category', 'Fine Motor', category) osep = util.session('osep', False, osep) child = util.session('current_child', 0) if id == 0: # no id given raise redirect("/") try: current_assessment = Assessment.get(id) except SQLObjectNotFound: # Child with given id does not exist raise redirect("/") current_child = current_assessment.child all_assessments = current_child.assessments sorted_assessments = Assessment.select(AND(Assessment.q.childID==current_assessment.childID, Assessment.q.id!=id, Assessment.q.level==current_assessment.level), orderBy='-dateEntered') old = list(sorted_assessments[:7]) if osep: criteria = Criterion.selectBy(category=category, level=current_assessment.level, osep=True) else: criteria = Criterion.selectBy(category=category, level=current_assessment.level) criteria = criteria.orderBy('sort_order') crit_ids = [c.id for c in criteria] sums = {} for t in old: sum = 0; for s in t.scores: if s.criterionID in crit_ids and s.criterion.rank != "1": try: sum += int(s.value) except: pass sums[t.id] = sum sum = 0; for s in current_assessment.scores: if s.criterionID in crit_ids and s.criterion.rank != "1": try: sum += int(s.value) except: pass sums[current_assessment.id] = sum util.session('fill', 'missing') if len(old) == 0: temp = util.session('values', 'zeros') if temp == 'previous': cherrypy.session['values'] = 'zeros' else: util.session('values', 'previous') subtotal = Criterion.selectBy(category=category, level=current_assessment.level, prefix='Z')[0] _na = Criterion.selectBy(category=category, level=current_assessment.level, prefix='Y')[0] oldtotals = {} oldna = {} percents = {} for t in old: stscore = Score.selectBy(assessmentID=t.id, criterionID=subtotal.id) if stscore.count() > 0: stscore = stscore[0] else: stscore = Score(assessmentID=t.id, criterionID=subtotal.id, value="0", type='subtotal') oldtotals[t.id] = stscore.value nascore = Score.selectBy(assessmentID=t.id, criterionID=_na.id) if nascore.count() > 0: nascore = nascore[0] else: nascore = Score(assessmentID=t.id, criterionID=_na.id, value="0", type='na') oldna[t.id] = nascore.value percents[t.id] = util.percent(stscore.value, util.scorePossible(category, current_assessment.level), nascore.value) stscore = Score.selectBy(assessmentID=id, criterionID=subtotal.id) nascore = Score.selectBy(assessmentID=id, criterionID=_na.id) if stscore.count() > 0: stscore = stscore[0] else: stscore = Score(assessmentID=id, criterionID=subtotal.id, value="0", type='subtotal') if nascore.count() > 0: nascore = nascore[0] else: nascore = Score(assessmentID=id, criterionID=_na.id, value="0", type='na') percent = util.percent(stscore.value, util.scorePossible(category, current_assessment.level), nascore.value) return dict(child=current_child, id=id, a=current_assessment, old=old, oldtotals=oldtotals, \ stc=subtotal, subtotal=stscore, criteria=criteria, osep=osep, sums=sums, \ catlist=self.category_list, category=category, nextCategory=self.nextCategory, \ print_area=print_area, getEditor=self.getEditor, pcheck=self.persistCheck, \ shaded=util.shaded, scoreclass=util.color, scorePossible=util.scorePossible, \ nac=_na, na=nascore, oldna=oldna, percents=percents, percent=percent)
def index2(self, id=None, category=None, osep='None', print_area='false'): if not identity.current.user.basketmode: raise redirect(url("index1",id=id,category=category,osep=osep,print_area=print_area)) osep = True if print_area == 'true': print_area = True else: print_area = False id = util.session('current_assessment', 0, id) child = util.session('current_child', 0) if id == 0: # no id given raise redirect("/") try: current_assessment = Assessment.get(id) except SQLObjectNotFound: # Child with given id does not exist raise redirect("/") current_child = current_assessment.child all_assessments = current_child.assessments sorted_assessments = Assessment.select(AND(Assessment.q.childID==current_assessment.childID, Assessment.q.id!=id, Assessment.q.level==current_assessment.level), orderBy='-dateEntered') old = list(sorted_assessments[:7]) categories = self.category_list data = {} for c in categories: cdata = {} subtotal = Criterion.selectBy(category=c, level=current_assessment.level, prefix='Z')[0] _na = Criterion.selectBy(category=c, level=current_assessment.level, prefix='Y')[0] cdata['subtotal'] = subtotal cdata['na'] = _na oldtotals = {} oldna = {} percents = {} for t in old: stscore = Score.selectBy(assessmentID=t.id, criterionID=subtotal.id) if stscore.count() > 0: stscore = stscore[0] else: stscore = Score(assessmentID=t.id, criterionID=subtotal.id, value="0", type='subtotal') oldtotals[t.id] = stscore.value nascore = Score.selectBy(assessmentID=t.id, criterionID=_na.id) if nascore.count() > 0: nascore = nascore[0] else: nascore = Score(assessmentID=t.id, criterionID=_na.id, value="0", type='na') oldna[t.id] = nascore.value percents[t.id] = util.percent(stscore.value, util.scorePossible(c, current_assessment.level), nascore.value) cdata['oldtotals'] = oldtotals cdata['oldna'] = oldna cdata['percents'] = percents stscore = Score.selectBy(assessmentID=id, criterionID=subtotal.id) nascore = Score.selectBy(assessmentID=id, criterionID=_na.id) if stscore.count() > 0: stscore = stscore[0] else: stscore = Score(assessmentID=id, criterionID=subtotal.id, value="0", type='subtotal') if nascore.count() > 0: nascore = nascore[0] else: nascore = Score(assessmentID=id, criterionID=_na.id, value="0", type='na') percent = util.percent(stscore.value, util.scorePossible(c, current_assessment.level), nascore.value) cdata['stscore'] = stscore cdata['nascore'] = nascore cdata['percent'] = percent data[c] = cdata baskets = [] for i in [1,2,3]: bdata = {} prefix = "B" + str(i) b = Criterion.selectBy(level=current_assessment.level, prefix=prefix)[0] oldb = {} for t in old: bscore = Score.selectBy(assessmentID=t.id, criterionID=b.id) if bscore.count() > 0: bscore = bscore[0] else: bscore = Score(assessmentID=t.id, criterionID=b.id, value="0", type='basket') oldb[t.id] = bscore bdata['old'] = oldb bscore = Score.selectBy(assessmentID=id, criterionID=b.id) if bscore.count() > 0: bscore = bscore[0] else: bscore = Score(assessmentID=id, criterionID=b.id, value="0", type='basket') bdata['val'] = bscore baskets.append(bdata) return dict(child=current_child, id=id, a=current_assessment, old=old, categories=categories, \ print_area=print_area, getEditor=self.getEditor, pcheck=self.persistCheck, \ shaded=util.shaded, scoreclass=util.color, scorePossible=util.scorePossible, \ data=data, baskets=baskets)