def calc_ll(self,theta): """ Computes the ll per measurments. """ cpa_space = self.cpa_space src = self.src dst = self.dst params_flow_int = self.params_flow_int transformed = self.transformed sigma_lm = self.sigma_lm ll = self.ll if src.shape[1]!=cpa_space.dim_domain: raise ValueError(src.shape) cpa_space.theta2Avees(theta) cpa_space.update_pat() cpa_space.calc_T_fwd(pts = src, out=transformed, **params_flow_int) if transformed.shape != src.shape: raise ValueError(transformed.shape , src.shape) if 1: calc_err_per_sample(transformed.gpu,dst.gpu,self.err.gpu) # print np.allclose(transformed.gpu.get()-dst.gpu.get(), # self.err.gpu.get()) calc_ll_per_sample(self.err.gpu,sigma_lm ,ll.gpu) # print np.allclose((-0.5/(sigma_lm**2)* # (transformed.gpu.get()-dst.gpu.get())**2).sum(axis=1), # ll.gpu.get()) # idx = (dst.cpu<0.5).nonzero()[0][-1] # idx = 499 # # weight_it(ll.gpu,np.int32(idx)) # ipshell('hi') # 1/0 else: raise Exception("BAD IDEA") ll_by_der = self.ll_by_der der_dt = 0.002 calc_err_by_der_per_sample(transformed.gpu,dst.gpu,self.err_by_der.gpu, der_dt) calc_ll_by_der_per_sample(self.err_by_der.gpu,.1 ,ll_by_der.gpu) ll = ll_by_der
def calc_ll(self,theta): """ Returns the ll per measurments. """ cpa_space = self.cpa_space src = self.src dst = self.dst params_flow_int = self.params_flow_int transformed = self.transformed sigma_lm = self.sigma_lm ll = self.ll if src.shape[1]!=cpa_space.dim_domain: raise ValueError(src.shape) # Avees = cpa_space.theta2Avees(theta) # pat = self._pat # pat.update(Avees=Avees) # cpa_space.calc_T(pat,pts = src, mysign=1,out=transformed, # **params_flow_int) cpa_space.theta2Avees(theta) cpa_space.update_pat() cpa_space.calc_T_fwd(pts = src,out=transformed, **params_flow_int) if transformed.shape != src.shape: raise ValueError(transformed.shape , src.shape) calc_err_per_sample(transformed.gpu,dst.gpu,self.err.gpu) # print np.allclose(transformed.gpu.get()-dst.gpu.get(), # self.err.gpu.get()) calc_ll_per_sample(self.err.gpu,sigma_lm ,ll.gpu) # print np.allclose((-0.5/(sigma_lm**2)* # (transformed.gpu.get()-dst.gpu.get())**2).sum(axis=1), # ll.gpu.get()) return ll
def calc_ll(self, theta): """ Returns the ll per measurments. """ cpa_space = self.cpa_space src = self.src dst = self.dst params_flow_int = self.params_flow_int transformed = self.transformed sigma_lm = self.sigma_lm ll = self.ll if src.shape[1] != cpa_space.dim_domain: raise ValueError(src.shape) # Avees = cpa_space.theta2Avees(theta) # pat = self._pat # pat.update(Avees=Avees) # cpa_space.calc_T(pat,pts = src, mysign=1,out=transformed, # **params_flow_int) cpa_space.theta2Avees(theta) cpa_space.update_pat() cpa_space.calc_T_fwd(pts=src, out=transformed, **params_flow_int) if transformed.shape != src.shape: raise ValueError(transformed.shape, src.shape) calc_err_per_sample(transformed.gpu, dst.gpu, self.err.gpu) # print np.allclose(transformed.gpu.get()-dst.gpu.get(), # self.err.gpu.get()) calc_ll_per_sample(self.err.gpu, sigma_lm, ll.gpu) # print np.allclose((-0.5/(sigma_lm**2)* # (transformed.gpu.get()-dst.gpu.get())**2).sum(axis=1), # ll.gpu.get()) return ll