Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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