def update_L_alpha(self): """ Update the GP's L matrix and alpha vector without recalculating the entire covariance matrix K. """ # Set L matrix and alpha if set_L_alpha has not been called yet if self.l_mat is None or np.array(self.ky_mat) is np.array(None): self.set_L_alpha() return _global_training_data[self.name] = self.training_data _global_training_labels[self.name] = self.training_labels_np ky_mat = get_ky_mat_update(self.ky_mat, self.hyps, self.name, self.kernel, cutoffs=self.cutoffs, hyps_mask=self.hyps_mask, n_cpus=self.n_cpus, n_sample=self.n_sample) l_mat = np.linalg.cholesky(ky_mat) l_mat_inv = np.linalg.inv(l_mat) ky_mat_inv = l_mat_inv.T @ l_mat_inv alpha = np.matmul(ky_mat_inv, self.training_labels_np) self.ky_mat = ky_mat self.l_mat = l_mat self.alpha = alpha self.ky_mat_inv = ky_mat_inv
def update_L_alpha(self): """ Update the GP's L matrix and alpha vector without recalculating the entire covariance matrix K. """ # Set L matrix and alpha if set_L_alpha has not been called yet if self.l_mat is None or np.array(self.ky_mat) is np.array(None): self.set_L_alpha() return # Reset global variables. self.sync_data() ky_mat = get_ky_mat_update(self.ky_mat, self.n_envs_prev, self.hyps, self.name, self.kernel, self.energy_kernel, self.energy_force_kernel, self.energy_noise, cutoffs=self.cutoffs, hyps_mask=self.hyps_mask, n_cpus=self.n_cpus, n_sample=self.n_sample) l_mat = np.linalg.cholesky(ky_mat) l_mat_inv = np.linalg.inv(l_mat) ky_mat_inv = l_mat_inv.T @ l_mat_inv alpha = np.matmul(ky_mat_inv, self.all_labels) self.ky_mat = ky_mat self.l_mat = l_mat self.alpha = alpha self.ky_mat_inv = ky_mat_inv self.n_envs_prev = len(self.training_data)
def update_L_alpha(self, expert_id: int): """ Update the GP's L matrix and alpha vector without recalculating the entire covariance matrix K. """ # Set L matrix and alpha if set_L_alpha has not been called yet if self.l_mat[expert_id] is None or np.array( self.ky_mat[expert_id]) is np.array(None): self.set_L_alpha_part(expert_id) return self.sync_experts_data(expert_id) ky_mat = get_ky_mat_update( self.ky_mat[expert_id], self.n_envs_prev[expert_id], self.hyps, f"{self.name}_{expert_id}", self.kernel, self.energy_kernel, self.energy_force_kernel, self.energy_noise, cutoffs=self.cutoffs, hyps_mask=self.hyps_mask, n_cpus=self.n_cpus, n_sample=self.n_sample, ) self.compute_experts_matrices(ky_mat, expert_id)
def update_L_alpha(self): """ Update the GP's L matrix and alpha vector without recalculating the entire covariance matrix K. """ # Set L matrix and alpha if set_L_alpha has not been called yet if self.l_mat is None: self.set_L_alpha() return ky_mat = get_ky_mat_update(np.copy(self.ky_mat), self.training_data, self.get_kernel_vector, self.hyps, self.no_cpus) l_mat = np.linalg.cholesky(ky_mat) l_mat_inv = np.linalg.inv(l_mat) ky_mat_inv = l_mat_inv.T @ l_mat_inv alpha = np.matmul(ky_mat_inv, self.training_labels_np) self.ky_mat = ky_mat self.l_mat = l_mat self.alpha = alpha self.ky_mat_inv = ky_mat_inv self.l_mat_inv = l_mat_inv