Exemple #1
0
    def __init__(self,gm,accumulator=None,parameter=InfParam()):

        if accumulator is None:
            self.accumulator=defaultAccumulator(gm=gm)
        else:
            self.accumulator=accumulator
        kwargs=parameter.kwargs
        self.gm_=gm

        self.arg_  = None
        self.value_ = None
        self.initType = kwargs.get('initType', 'localOpt')
Exemple #2
0
    def __init__(self, gm, accumulator=None, parameter=InfParam()):

        if accumulator is None:
            self.accumulator = defaultAccumulator(gm=gm)
        else:
            self.accumulator = accumulator
        kwargs = parameter.kwargs
        self.gm_ = gm

        self.arg_ = None
        self.value_ = None
        self.initType = kwargs.get('initType', 'localOpt')
Exemple #3
0
    def __init__(self,gm,accumulator=None,parameter=InfParam()):
        print "fresh constructor "
        if accumulator is None:
            self.accumulator=defaultAccumulator(gm=gm)
        else:
            self.accumulator=accumulator
        kwargs=parameter.kwargs
        self.gm_=gm


        self.solverList    = kwargs.get('solvers', [])
        self.parameterList = kwargs.get('parameters', [])

        self.arg_ = numpy.zeros(gm.numberOfVariables,dtype=numpy.uint64)
Exemple #4
0
    def __init__(self, gm, accumulator=None, parameter=InfParam()):

        if accumulator is None:
            self.accumulator = defaultAccumulator(gm=gm)
        else:
            self.accumulator = accumulator
        kwargs = parameter.kwargs
        self.gm_ = gm

        self.steps = kwargs.get('steps', 100)
        self.fusionSolver = kwargs.get('fuisionSolver', 'lf2')

        self.arg_ = None
        self.value_ = None

        self.fusionMover = inference.adder.minimizer.FusionMover(self.gm_)

        self.nLabels = self.gm_.numberOfLabels(0)
        self.nVar = self.gm_.numberOfVariables
Exemple #5
0
    def __init__(self, gm, accumulator=None, parameter=InfParam()):

        if accumulator is None:
            self.accumulator = defaultAccumulator(gm=gm)
        else:
            self.accumulator = accumulator
        kwargs = parameter.kwargs
        self.gm_ = gm

        self.steps = kwargs.get("steps", 100)
        self.fusionSolver = kwargs.get("fuisionSolver", "lf2")

        self.arg_ = None
        self.value_ = None

        self.fusionMover = inference.adder.minimizer.FusionMover(self.gm_)

        self.nLabels = self.gm_.numberOfLabels(0)
        self.nVar = self.gm_.numberOfVariables
    def inference_init(self, gm, accumulator=None, parameter=None):
        # self._old_init()
        # set up basic properties
        self.gm = gm
        self.operator = gm.operator
        if accumulator is None:
            self.accumulator = defaultAccumulator(gm)
        else:
            self.accumulator = accumulator
        self._meta_parameter = parameter
        # get hyper parameter (as minStCut for graphcut, or the subsolver for
        # dualdec.)
        hyperParamKeywords = self._infClasses.hyperParameterKeywords
        numHyperParams = len(hyperParamKeywords)
        userHyperParams = [None] * numHyperParams
        collectedHyperParameters = 0
        # get the users hyper parameter ( if given)

        if (self._meta_parameter is not None):
            for hpIndex, hyperParamKeyword in enumerate(hyperParamKeywords):
                if hyperParamKeyword in self._meta_parameter.kwargs:
                    userHyperParams[hpIndex] = self._meta_parameter.kwargs.pop(
                        hyperParamKeyword)
                    collectedHyperParameters += 1

            # check if ZERO or ALL hyperParamerts have been collected
            if collectedHyperParameters != 0 and collectedHyperParameters != numHyperParams:
                raise RuntimeError("All or none hyper-parameter must be given")

        # check if the WHOLE tuple of hyperParameters is allowed
        if collectedHyperParameters != 0:
            if tuple(
                    str(x)
                    for x in userHyperParams) not in inferenceClasses.implDict:
                raise RuntimeError(
                    "%s is not an allowed hyperParameter\nAllowed hyperParameters are %s"
                    % (repr(userHyperParams),
                       repr(inferenceClasses.implDict.keys())))
        else:
            userHyperParams = defaultHyperParams

        try:
            # get the selected inference class and the parameter
            if (numHyperParams == 0):

                self._selectedInfClass, self._selectedInfParamClass = inferenceClasses.implDict[
                    "__NONE__"][(self.operator, self.accumulator)]
            else:
                hp = tuple(str(x) for x in userHyperParams)
                self._selectedInfClass, self._selectedInfParamClass = inferenceClasses.implDict[
                    hp][(self.operator, self.accumulator)]
        except:
            dictStr = str(inferenceClasses.implDict)
            raise RuntimeError("given seminring (operator = %s ,accumulator = %s) is not implemented for this solver\n %s" % \
                (self.operator, self.accumulator,dictStr))

        if self._meta_parameter is None:
            self.parameter = self._selectedInfClass._parameter()
            self.parameter.set()
        else:
            self.parameter = to_native_class_converter(
                givenValue=self._meta_parameter,
                nativeClass=self._selectedInfParamClass)
            assert self.parameter is not None

        self.inference = self._selectedInfClass(self.gm, self.parameter)
    def inference_init(self, gm, accumulator=None, parameter=None):
        # self._old_init()
        # set up basic properties
        self.gm = gm
        self.operator = gm.operator
        if accumulator is None:
            self.accumulator = defaultAccumulator(gm)
        else:
            self.accumulator = accumulator
        self._meta_parameter = parameter
        # get hyper parameter (as minStCut for graphcut, or the subsolver for
        # dualdec.)
        hyperParamKeywords = self._infClasses.hyperParameterKeywords
        numHyperParams = len(hyperParamKeywords)
        userHyperParams = [None]*numHyperParams
        collectedHyperParameters = 0
        # get the users hyper parameter ( if given)

        if(self._meta_parameter is not None):
            for hpIndex, hyperParamKeyword in enumerate(hyperParamKeywords):
                if hyperParamKeyword in self._meta_parameter.kwargs:
                    userHyperParams[hpIndex] = self._meta_parameter.kwargs.pop(
                        hyperParamKeyword)
                    collectedHyperParameters += 1

            # check if ZERO or ALL hyperParamerts have been collected
            if collectedHyperParameters != 0 and collectedHyperParameters != numHyperParams:
                raise RuntimeError("All or none hyper-parameter must be given")

        # check if the WHOLE tuple of hyperParameters is allowed
        if collectedHyperParameters != 0:
            if tuple(str(x) for x in userHyperParams) not in inferenceClasses.implDict:
                raise RuntimeError("%s is not an allowed hyperParameter\nAllowed hyperParameters are %s" % (
                    repr(userHyperParams), repr(inferenceClasses.implDict.keys())))
        else:
            userHyperParams = defaultHyperParams

        try:
            # get the selected inference class and the parameter
            if(numHyperParams == 0):
                
                self._selectedInfClass, self._selectedInfParamClass = inferenceClasses.implDict[
                        "__NONE__"][(self.operator, self.accumulator)]
            else:
                hp = tuple(str(x) for x in userHyperParams)
                self._selectedInfClass, self._selectedInfParamClass = inferenceClasses.implDict[
                    hp][(self.operator, self.accumulator)]
        except:
            dictStr=str(inferenceClasses.implDict)
            raise RuntimeError("given seminring (operator = %s ,accumulator = %s) is not implemented for this solver\n %s" % \
                (self.operator, self.accumulator,dictStr))

        if self._meta_parameter is None:
            self.parameter = self._selectedInfClass._parameter()
            self.parameter.set()
        else:
            self.parameter = to_native_class_converter(
                givenValue=self._meta_parameter, nativeClass=self._selectedInfParamClass)
            assert self.parameter is not None

        self.inference = self._selectedInfClass(self.gm, self.parameter)