コード例 #1
0
    def __init__(self,
                 likelihood_or_Y_list,
                 input_dim,
                 num_inducing=10,
                 names=None,
                 kernels=None,
                 initx='PCA',
                 initz='permute',
                 _debug=False,
                 **kw):
        if names is None:
            self.names = [
                "{}".format(i + 1) for i in range(len(likelihood_or_Y_list))
            ]

        # sort out the kernels
        if kernels is None:
            kernels = [None] * len(likelihood_or_Y_list)
        elif isinstance(kernels, kern):
            kernels = [
                kernels.copy() for i in range(len(likelihood_or_Y_list))
            ]
        else:
            assert len(kernels) == len(
                likelihood_or_Y_list), "need one kernel per output"
            assert all([isinstance(k, kern)
                        for k in kernels]), "invalid kernel object detected!"
        assert not ('kernel' in kw), "pass kernels through `kernels` argument"

        self.input_dim = input_dim
        self.num_inducing = num_inducing
        self._debug = _debug

        self._init = True
        X = self._init_X(initx, likelihood_or_Y_list)
        Z = self._init_Z(initz, X)
        self.bgplvms = [
            BayesianGPLVM(l,
                          input_dim=input_dim,
                          kernel=k,
                          X=X,
                          Z=Z,
                          num_inducing=self.num_inducing,
                          **kw) for l, k in zip(likelihood_or_Y_list, kernels)
        ]
        del self._init

        self.gref = self.bgplvms[0]
        nparams = numpy.array(
            [0] +
            [SparseGP._get_params(g).size - g.Z.size for g in self.bgplvms])
        self.nparams = nparams.cumsum()

        self.num_data = self.gref.num_data
        self.NQ = self.num_data * self.input_dim
        self.MQ = self.num_inducing * self.input_dim

        Model.__init__(self)
        self.ensure_default_constraints()
コード例 #2
0
ファイル: mrd.py プロジェクト: andymiller/GPy
 def setstate(self, state):
     self.MQ = state.pop()
     self.NQ = state.pop()
     self.num_data = state.pop()
     self.num_inducing = state.pop()
     self.input_dim = state.pop()
     self.nparams = state.pop()
     self.gref = state.pop()
     self.bgplvms = state.pop()
     self.names = state.pop()
     Model.setstate(self, state)
コード例 #3
0
ファイル: mrd.py プロジェクト: Dalar/GPy
 def setstate(self, state):
     self.MQ = state.pop()
     self.NQ = state.pop()
     self.num_data = state.pop()
     self.num_inducing = state.pop()
     self.input_dim = state.pop()
     self.nparams = state.pop()
     self.gref = state.pop()
     self.bgplvms = state.pop()
     self.names = state.pop()
     Model.setstate(self, state)
コード例 #4
0
ファイル: mrd.py プロジェクト: Dalar/GPy
 def getstate(self):
     return Model.getstate(self) + [self.names,
             self.bgplvms,
             self.gref,
             self.nparams,
             self.input_dim,
             self.num_inducing,
             self.num_data,
             self.NQ,
             self.MQ]
コード例 #5
0
ファイル: mrd.py プロジェクト: Dalar/GPy
    def __init__(self, likelihood_or_Y_list, input_dim, num_inducing=10, names=None,
                 kernels=None, initx='PCA',
                 initz='permute', _debug=False, **kw):
        if names is None:
            self.names = ["{}".format(i) for i in range(len(likelihood_or_Y_list))]
        else:
            self.names = names
            assert len(names) == len(likelihood_or_Y_list), "one name per data set required"
        # sort out the kernels
        if kernels is None:
            kernels = [None] * len(likelihood_or_Y_list)
        elif isinstance(kernels, kern):
            kernels = [kernels.copy() for i in range(len(likelihood_or_Y_list))]
        else:
            assert len(kernels) == len(likelihood_or_Y_list), "need one kernel per output"
            assert all([isinstance(k, kern) for k in kernels]), "invalid kernel object detected!"
        assert not ('kernel' in kw), "pass kernels through `kernels` argument"

        self.input_dim = input_dim
        self._debug = _debug
        self.num_inducing = num_inducing

        self._init = True
        X = self._init_X(initx, likelihood_or_Y_list)
        Z = self._init_Z(initz, X)
        self.num_inducing = Z.shape[0] # ensure M==N if M>N

        self.bgplvms = [BayesianGPLVM(l, input_dim=input_dim, kernel=k, X=X, Z=Z, num_inducing=self.num_inducing, **kw) for l, k in zip(likelihood_or_Y_list, kernels)]
        del self._init

        self.gref = self.bgplvms[0]
        nparams = numpy.array([0] + [SparseGP._get_params(g).size - g.Z.size for g in self.bgplvms])
        self.nparams = nparams.cumsum()

        self.num_data = self.gref.num_data

        self.NQ = self.num_data * self.input_dim
        self.MQ = self.num_inducing * self.input_dim

        Model.__init__(self)
        self.ensure_default_constraints()
コード例 #6
0
ファイル: mrd.py プロジェクト: andymiller/GPy
 def getstate(self):
     return Model.getstate(self) + [
         self.names, self.bgplvms, self.gref, self.nparams, self.input_dim,
         self.num_inducing, self.num_data, self.NQ, self.MQ
     ]