python类logpdf()的实例源码

laplaceCg.py 文件源码 项目:preconditioned_GPs 作者: mauriziofilippone 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def __init__(self, K, Y, init=None, threshold=1e-9):

        N = np.shape(K)[0]
        f = np.zeros((N,1))
        converged = False
        k = 0
        innerC = 0

        for i in xrange(N):
            pdfDiff = norm.logpdf(f) - norm.logcdf(Y*f)
            W = np.exp(2*pdfDiff) + Y*f*np.exp(pdfDiff)
            Wsqrt = np.sqrt(W)
            Wdiag= np.diag(Wsqrt.flatten())

            B = np.identity(N) + np.dot(Wdiag, np.dot(K, Wdiag))
            grad = Y*np.exp(pdfDiff)
            b = W*f + grad
            interim = np.dot(Wdiag, np.dot(K, b))

            cgRes = Cg(B, interim, threshold=threshold)
            s1 = cgRes.result
            innerC = innerC + cgRes.iterations
            a = b - Wsqrt*s1

            if(converged):
                break
            f_prev = f
            f = np.dot(K, a)
            diff = f - f_prev
            if (np.dot(diff.T,diff).flatten() < threshold*N or innerC>15000):
                converged = True
            k = k+1

        self.result = f
        self.iterations = k + innerC
laplacePcg.py 文件源码 项目:preconditioned_GPs 作者: mauriziofilippone 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def __init__(self, K, Y, P, init=None, threshold=1e-9, precon=None):

        N = np.shape(K)[0]
        f = np.zeros((N,1))
        converged = False
        k = 0
        innerC = 0


        for i in xrange(N):
            pdfDiff = norm.logpdf(f) - norm.logcdf(Y*f)
            W = np.exp(2*pdfDiff) + Y*f*np.exp(pdfDiff)
            Wsqrt = np.sqrt(W)
            Wdiag= np.diag(Wsqrt.flatten())

            B = np.identity(N) + np.dot(Wdiag, np.dot(K, Wdiag))
            grad = Y*np.exp(pdfDiff)
            b = W*f + grad
            interim = np.dot(Wdiag, np.dot(K, b))

            pcgRes = RegularPcg(B, interim, None, threshold=threshold, preconInv=P.get_laplace_inversion(W,Wsqrt))
            s1 = pcgRes.result
            innerC = innerC + pcgRes.iterations
            a = b - Wsqrt*s1

            if(converged):
                break
            f_prev = f
            f = np.dot(K, a)
            diff = f - f_prev
            if (np.dot(diff.T,diff).flatten() < threshold*N or innerC>15000):
                converged = True
            k = k+1

        self.result = f
        self.iterations = k + innerC
laplaceCg.py 文件源码 项目:preconditioned_GPs 作者: mauriziofilippone 项目源码 文件源码 阅读 21 收藏 0 点赞 0 评论 0
def __init__(self, K, Y, init=None, threshold=1e-9):

        N = np.shape(K)[0]
        f = np.zeros((N,1))
        converged = False
        k = 0
        innerC = 0

        for i in xrange(N):
            pdfDiff = norm.logpdf(f) - norm.logcdf(Y*f)
            W = np.exp(2*pdfDiff) + Y*f*np.exp(pdfDiff)
            Wsqrt = np.sqrt(W)
            Wdiag= np.diag(Wsqrt.flatten())

            B = np.identity(N) + np.dot(Wdiag, np.dot(K, Wdiag))
            grad = Y*np.exp(pdfDiff)
            b = W*f + grad
            interim = np.dot(Wdiag, np.dot(K, b))

            cgRes = Cg(B, interim, threshold=threshold)
            s1 = cgRes.result
            innerC = innerC + cgRes.iterations
            a = b - Wsqrt*s1

            if(converged):
                break
            f_prev = f
            f = np.dot(K, a)
            diff = f - f_prev
            if (np.dot(diff.T,diff).flatten() < threshold*N or innerC>15000):
                converged = True
            k = k+1

        self.result = f
        self.iterations = k + innerC
laplacePcg.py 文件源码 项目:preconditioned_GPs 作者: mauriziofilippone 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def __init__(self, K, Y, P, init=None, threshold=1e-9, precon=None):

        N = np.shape(K)[0]
        f = np.zeros((N,1))
        converged = False
        k = 0
        innerC = 0


        for i in xrange(N):
            pdfDiff = norm.logpdf(f) - norm.logcdf(Y*f)
            W = np.exp(2*pdfDiff) + Y*f*np.exp(pdfDiff)
            Wsqrt = np.sqrt(W)
            Wdiag= np.diag(Wsqrt.flatten())

            B = np.identity(N) + np.dot(Wdiag, np.dot(K, Wdiag))
            grad = Y*np.exp(pdfDiff)
            b = W*f + grad
            interim = np.dot(Wdiag, np.dot(K, b))

            pcgRes = RegularPcg(B, interim, None, threshold=threshold, preconInv=P.get_laplace_inversion(W,Wsqrt))
            s1 = pcgRes.result
            innerC = innerC + pcgRes.iterations
            a = b - Wsqrt*s1

            if(converged):
                break
            f_prev = f
            f = np.dot(K, a)
            diff = f - f_prev
            if (np.dot(diff.T,diff).flatten() < threshold*N or innerC>15000):
                converged = True
            k = k+1

        self.result = f
        self.iterations = k + innerC


问题


面经


文章

微信
公众号

扫码关注公众号