Exemple #1
0
def FALMopt( objective , u, v2 , mus=np.array([30.,3.,0.3])): #mus=np.array([0.1,1.,10.])): #
    lambdas = np.zeros(v2.size)
    data = {'STAs':np.vstack(R['statistics']['stimulus']['STA']) , 
            'STCs':np.vstack([stc[np.newaxis,:] for stc in R['statistics']['stimulus']['STC']]), 
            'V2':v2 , 'U': u , 'N':NRGC , 'N_spikes':R['N_spikes'] ,
            'Ncones':Ncones , 'centers':centers , 'indices':indices , 'lam':lam , 'lambdas':lambdas }
    obj_V1 = objective.where(**data).with_callback(callback)
    optimize_L2 = FALMS.add_L2_term( obj_V1 , gtol=1e-3 )
    init = (0.001 + 0.01 * Rand.rand(NRGC,u.shape[0])).flatten()
    r = {}
    def falms_callback(falmer):  print '   L0: ', falmer[1][falmer[1]<>0].shape[0]
    for mu in mus:
        print
        print
        print 'mu: ', mu
        reg_L1 = FALMS.L1_L2( mu )
        params = FALMS.falms(init,optimize_L2,reg_L1,mu=0.01,ftol=2e-7,callback=falms_callback)
        r[mu] = params
        print [ (mu,par['M'][par['M']<>0].shape[0]) for mu,par in sorted(r.items())]
    return r
Exemple #2
0

data  = [{ 'STA':STA[i] , \
           'STC':STC[i] } for i in range(NRGC)]
init_params = [{'theta':data[i]['STA'] * 0.1 , \
                'M':data[i]['STC'] * 0.1} for i in range(NRGC)]

# quadratic Poisson LL in theta,M:
objective = kolia_theano.Objective(init_params=init_params[0],differentiate=['f'],
                                   f=quadratic_Poisson, barrier=eig_barrier) 

# fix particular data:
obj = objective.where(**data[0])

# LL + quadratic optimizer, for FALMS
optimize_L2 = FALMS.add_L2_term( obj )

# callback after each FALMS iteration:
def falms_callback(falmer):  print '   L0: ', falmer[1][falmer[1]<>0].shape[0]

r = {'L1':[{} for _ in init_params] , 'true':true}

def save():
    savefile = open('../../../Desktop/results.pyckle','w')
    cPickle.dump(r,savefile)  
    savefile.close()


r['ML'] = MaxLike(init_params,data)

r['analytical'] = analytical_ML(data)
Exemple #3
0
#        p.subplot(3,1,2)
#        p.imshow(dM)
#        p.title('dM')
#        p.draw()
#        p.subplot(3,1,3)
#        p.imshow(objective.inflate(pk)[0]['M'])
#        p.title('pk')
#        p.draw()
#        p.show()
#        raw_input('Press any key to continue..')
#    return (ip,gfk,pk)
#    return (symm(pp),symm(objective.inflate(gfk)),symm(objective.inflate(pk)))

objective = kolia_theano.sum_objective(terms,callback=callback_one)

objective = FALMS.set_argument( objective , data )

#optimize  = optimize.optimizer( objective , callback=callback_one )

mu  = 1
rho = 1

true   = [{ 'theta' : np.dot( U.T , V1[i,:] ) , 'M' : 0.1*np.dot( U.T * V1[i,:] , U ) } for i in range(iii)]

def nuclearMatrix(params):
    return np.reshape(params,(Ncones,-1))

optimize_L2 = FALMS.add_L2_term( objective )

falmer = FALMS.initialize( objective.flatten(true) )