Esempio n. 1
0
 def calculate_objective_function(
         self, param: parametrization.Parametrization) -> np.ndarray:
     # TODO(logansu): Remove hack. This is hack because multiple
     # parametrizations are currently handled as a single composite
     # parametrization.
     if isinstance(param, parametrization.CompositeParam):
         constraints = []
         for subparam in param._params:
             constraints += self._build_constraints(subparam.to_vector(),
                                                    subparam._num_pixels)
     else:
         constraints = self._build_constraints(param.to_vector(),
                                               param._num_pixels)
     return np.hstack(constraints)
Esempio n. 2
0
    def calculate_gradient(
            self, param: parametrization.Parametrization) -> np.ndarray:
        # TODO(logansu): Remove hack. This is hack because multiple
        # parametrizations are currently handled as a single composite
        # parametrization.
        if isinstance(param, parametrization.CompositeParam):
            # The gradient is block-diagonal, with one block per
            # sub-parametrization.
            grad_blocks = []

            for subparam in param._params:
                grad_blocks.append(
                    self._build_constraint_grads(subparam.to_vector()))

            return scipy.linalg.block_diag(*grad_blocks)

        return self._build_constraint_grads(param.to_vector())
Esempio n. 3
0
 def calculate_gradient(self, param: Parametrization) -> float:
     """Returns zero. """
     return np.zeros(self.value_shape + (len(param.to_vector()), ))