kernels.py 文件源码

python
阅读 39 收藏 0 点赞 0 评论 0

项目:MKLMM 作者: omerwe 项目源码 文件源码
def deriveKernel(self, params, i):
        self.checkParamsI(params, i)
        params_kernels = params[len(self.kernels):]

        #sf2 derivatives
        if (i < len(self.kernels)):
            EE = self.getEE(params_kernels)         
            #if (i==2): Z = 2*np.exp(2*params[i]) * EE[:,:,i+1]; print i, Z[:5, :5]; sys.exit(0)
            return 2*np.exp(2*params[i]) * EE[:,:,i+1]

        #params_kernel derivatives
        else:
            params_ind = len(self.kernels)
            for k_i, k in enumerate(self.kernels):
                numHyp = k.getNumParams()
                if (i not in xrange(params_ind, params_ind+numHyp)):
                    params_ind += numHyp
                    continue            

                #now we found our kernel
                dKj = k.deriveKernel(params[params_ind:params_ind+numHyp], i-params_ind)                
                Kd = self.Kdim(params_kernels)
                range1 = np.array(xrange(0,k_i), dtype=np.int)
                range2 = np.array(xrange(k_i+1, len(self.kernels)), dtype=np.int)
                Kd_nocov = Kd[:, :, np.concatenate((range1, range2))]
                E = elsympol(Kd_nocov, len(self.kernels)-1)  #R-1th elementary sym polyn                
                K=0
                for ii in xrange(len(self.kernels)):
                    K += E[:,:,ii]*np.exp(2*params[ii])             
                #if (i==5): Z = dKj * K; print i, Z[:5, :5]; sys.exit(0)
                return dKj * K

        raise Exception('Invalid parameter')
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号