def pre_train_person(self, dataset_in): if len(OptPars.parsPerPers.keys()) <= 1: parameterDict = open(str(Path(__file__).absolute()).split('models')[0] + 'models/pars_other.txt', 'r').read() OptPars.parsPerPers = eval(parameterDict) if self.name in OptPars.parsPerPers.keys() and dataset_in[0]['item'].identifier in OptPars.parsPerPers[self.name].keys(): commandlist = OptPars.parsPerPers[self.name][dataset_in[0]['item'].identifier] else: #print('pre_train_person for model', self.name, 'person', str(dataset_in[0]['item'].identifier)) dataset = [] for a in dataset_in: a['aux']['id'] = a['item'].identifier for k in a['aux'].keys(): a[k] = a['aux'][k] dataset.append(a) #Optimpizing paramaters per person trialList = dataset if len(self.parameter.keys()) > 0: with np.errstate(divide='ignore'): bounds = [(-5,5)*len(self.parameter.keys())] bounded_step = RandomDisplacementBounds(np.array([b[0] for b in bounds]), np.array([b[1] for b in bounds])) personOptimum = basinhopping(self.itemsOnePersonThisModelPeformance, [1/len(self.parameter.keys())] * len(self.parameter.keys()), T=OptPars.T, take_step= bounded_step, niter= OptPars.iterations, minimizer_kwargs ={'args':tuple([trialList]), "method":"L-BFGS-B"}) optpars = personOptimum.x else: optpars = [] commandlist = self.toCommandList(optpars) if self.name not in OptPars.parsPerPers.keys(): OptPars.parsPerPers[self.name] = {} OptPars.parsPerPers[self.name][dataset[0]['item'].identifier] = commandlist self.executeCommands(commandlist)
def pre_train_person(self, dataset): #Optimpizing paramaters per person trialList = [] for pers in dataset: trialList.extend([pers]) if len(self.parameter.keys()) > 0: with np.errstate(divide='ignore'): personOptimum = basinhopping(self.itemsOnePersonThisModelPeformance, [1]*len(self.parameter.keys()), niter=OptPars.iterations, stepsize=3, T=4, minimizer_kwargs={"args" : (trialList)}) optpars = personOptimum.x else: optpars = [] self.executeCommands(self.toCommandList(optpars))
pylab.close('all') # Rough fit: method = 'Powell' fit_func = functools.partial( tmpl.image_distance, piece_idx=piece_idx, upsample = 1) p0 = minimize(fit_func, p0, method='Nelder-Mead', tol=0.1).x #fit_func = functools.partial( tmpl.image_distance, piece_idx=piece_idx, upsample = 1) #p0 = minimize(fit_func, p0, method=method, tol=0.1).x #fit_func = functools.partial( tmpl.image_distance, piece_idx=piece_idx, upsample = 1) #p0 = minimize(fit_func, p0, method='Anneal', tol=0.1).x fit_func = functools.partial( tmpl.image_distance, piece_idx=piece_idx, upsample = 2) minimizer_kwargs = {"method": "Nelder-Mead"} p0 = basinhopping(fit_func, p0, minimizer_kwargs=minimizer_kwargs, niter=200).x #print ret #assert(0) #fit_func = functools.partial( tmpl.image_distance, piece_idx=piece_idx, upsample = 3) #p0 = minimize(fit_func, p0, method='Nelder-Mead', tol=0.5).x ## Refine the fit: #fit_func = functools.partial( tmpl.image_distance, piece_idx=piece_idx, upsample = 5) #p = minimize(fit_func, p0, method='Nelder-Mead', tol=0.1).x p = p0 print p p_dash = tmpl.optvector_to_ctrl_points(p)