コード例 #1
0
    def __init__(self, loc, covariance_matrix=None, precision_matrix=None,
                 scale_tril=None, name="Multivariate Normal", learnable=False, has_bias=False,
                 is_observed=False, is_policy=False, is_reward=False):
        self._type = "Multivariate Normal"
        if scale_tril is not None and covariance_matrix is None and precision_matrix is None:
            ranges = {"loc": geometric_ranges.UnboundedRange(),
                      "scale_tril": geometric_ranges.UnboundedRange()}
            super().__init__(name, loc=loc, scale_tril=scale_tril, learnable=learnable,
                             has_bias=has_bias, ranges=ranges, is_observed=is_observed, is_policy=is_policy, is_reward=is_reward)
            self.distribution = distributions.MultivariateNormalDistribution()

        elif scale_tril is None and covariance_matrix is not None and precision_matrix is None:
            ranges = {"loc": geometric_ranges.UnboundedRange(),
                      "covariance_matrix": geometric_ranges.PositiveDefiniteMatrix()}
            super().__init__(name, loc=loc, covariance_matrix=covariance_matrix, learnable=learnable,
                             has_bias=has_bias, ranges=ranges, is_observed=is_observed, is_policy=is_policy, is_reward=is_reward)
            self.distribution = distributions.MultivariateNormalDistribution()

        elif scale_tril is None and covariance_matrix is None and precision_matrix is not None:
            ranges = {"loc": geometric_ranges.UnboundedRange(),
                      "precision_matrix": geometric_ranges.PositiveDefiniteMatrix()}
            super().__init__(name, loc=loc, precision_matrix=precision_matrix, learnable=learnable,
                             has_bias=has_bias, ranges=ranges, is_observed=is_observed, is_policy=is_policy, is_reward=is_reward)
            self.distribution = distributions.MultivariateNormalDistribution()

        else:
            raise ValueError("Either covariance_matrix or precision_matrix or"+
                             "scale_tril needs to be provided as input")
コード例 #2
0
    def __init__(self,
                 loc,
                 covariance_matrix=None,
                 precision_matrix=None,
                 cholesky_factor=None,
                 name="Multivariate Normal",
                 learnable=False):
        self._type = "Multivariate Normal"
        if cholesky_factor is not None and covariance_matrix is None and precision_matrix is None:
            ranges = {
                "loc": geometric_ranges.UnboundedRange(),
                "cholesky_factor": geometric_ranges.UnboundedRange()
            }
            super().__init__(name,
                             loc=loc,
                             cholesky_factor=cholesky_factor,
                             learnable=learnable,
                             ranges=ranges)
            self.distribution = distributions.MultivariateNormalDistribution()

        elif cholesky_factor is None and covariance_matrix is not None and precision_matrix is None:
            ranges = {
                "loc": geometric_ranges.UnboundedRange(),
                "covariance_matrix": geometric_ranges.PositiveDefiniteMatrix()
            }
            super().__init__(name,
                             loc=loc,
                             covariance_matrix=covariance_matrix,
                             learnable=learnable,
                             ranges=ranges)
            self.distribution = distributions.MultivariateNormalDistribution()

        elif cholesky_factor is None and covariance_matrix is None and precision_matrix is not None:
            ranges = {
                "loc": geometric_ranges.UnboundedRange(),
                "precision_matrix": geometric_ranges.UnboundedRange()
            }
            super().__init__(name,
                             loc=loc,
                             precision_matrix=precision_matrix,
                             learnable=learnable,
                             ranges=ranges)
            self.distribution = distributions.MultivariateNormalDistribution()

        else:
            raise ValueError(
                "Either covariance_matrix or precision_matrix or" +
                "cholesky_factor needs to be provided as input")