def get_jacs( self, input_data: InputDataGLM ): if self.noise_model is None: raise ValueError("noise_model is None") else: if self.noise_model == "nb": from batchglm.api.models.tf1.glm_nb import Estimator elif self.noise_model == "norm": from batchglm.api.models import Estimator elif self.noise_model == "beta": from batchglm.api.models.tf1.glm_beta import Estimator else: raise ValueError("noise_model not recognized") provide_optimizers = {"gd": True, "adam": True, "adagrad": True, "rmsprop": True, "nr": False, "nr_tr": False, "irls": False, "irls_gd": False, "irls_tr": False, "irls_gd_tr": False} estimator = Estimator( input_data=input_data, quick_scale=False, provide_optimizers=provide_optimizers, provide_fim=False, provide_hessian=False, init_a="standard", init_b="standard" ) estimator.initialize() # Do not train, evaluate at initialization! estimator.train_sequence(training_strategy=[ { "convergence_criteria": "step", "stopping_criteria": 0, "use_batching": False, "optim_algo": "gd", "train_mu": False, "train_r": False }, ]) estimator_store = estimator.finalize() return estimator_store.gradients.values
def get_hessians(self, input_data: InputDataGLM): if self.noise_model is None: raise ValueError("noise_model is None") else: if self.noise_model == "nb": from batchglm.api.models.tf1.glm_nb import Estimator elif self.noise_model == "norm": from batchglm.api.models import Estimator elif self.noise_model == "beta": from batchglm.api.models.tf1.glm_beta import Estimator else: raise ValueError("noise_model not recognized") provide_optimizers = { "gd": True, "adam": True, "adagrad": True, "rmsprop": True, "nr": False, "nr_tr": False, "irls": False, "irls_gd": False, "irls_tr": False, "irls_gd_tr": False } estimator = Estimator(input_data=input_data, quick_scale=False, provide_optimizers=provide_optimizers, provide_fim=False, provide_hessian=False, init_a="standard", init_b="standard") estimator.initialize() estimator_store = estimator.finalize() return -estimator_store.fisher_inv