예제 #1
0
    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)
예제 #2
0
파일: s2mr.py 프로젝트: sapekark/cogmods
 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))
예제 #3
0
    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)