Ejemplo n.º 1
0
 def update(self, x, y):
     x = self.phi(x)
     A_inv_dot_x = sclb.dsymv(1, self.A_inv.T, x)
     #A_inv_dot_x = np.dot(self.A_inv,x)
     sclb.dsyr(-1 / (1 + np.dot(x, A_inv_dot_x)),
               A_inv_dot_x,
               a=self.A_inv.T,
               overwrite_a=True)
     #self.A_inv -= np.outer(A_inv_dot_x, A_inv_dot_x)
     sclb.dsymv(-(np.dot(self.w, x) - y),
                self.A_inv.T,
                x,
                beta=1,
                y=self.w,
                overwrite_y=True)
Ejemplo n.º 2
0
 def cholesky_grad_python(g):
     dL = anp.tril(g)
     dL[-1,-1] /= 2 * L[-1,-1]
     for k in range(N-2, -1, -1):
         dL[k+1:,k] -= dsymv(1., dL[k+1:,k+1:], L[k+1:,k], lower=True)
         dL[k+1:,k] -= anp.diag(dL[k+1:,k+1:]) * L[k+1:,k]
         dL[k+1:,k] /= L[k,k]
         dL[k,k] -= anp.dot(dL[k+1:,k], L[k+1:,k])
         dL[k,k] /= 2 * L[k,k]
     return (dL + dL.T)/2.
Ejemplo n.º 3
0
 def cholesky_grad(g):
     dL = onp.tril(g)
     dL[...,-1,-1] /= 2 * L[...,-1,-1]
     for k in range(N-2, -1, -1):
         dL[...,k+1:,k] -= dsymv(1., dL[...,k+1:,k+1:], L[...,k+1:,k], lower=True)
         dL[...,k+1:,k] -= diag(dL[...,k+1:,k+1:]) * L[...,k+1:,k]
         dL[...,k+1:,k] /= L[...,k:k+1,k]
         dL[...,k,k] -= dot(dL[...,k+1:,k], L[...,k+1:,k])
         dL[...,k,k] /= 2 * L[...,k,k]
     return (dL + T(dL))/2.
Ejemplo n.º 4
0
 def cholesky_grad(g):
     dL = onp.tril(g)
     dL[..., -1, -1] /= 2 * L[..., -1, -1]
     for k in range(N - 2, -1, -1):
         dL[..., k + 1:, k] -= dsymv(1.,
                                     dL[..., k + 1:, k + 1:],
                                     L[..., k + 1:, k],
                                     lower=True)
         dL[..., k + 1:,
            k] -= diag(dL[..., k + 1:, k + 1:]) * L[..., k + 1:, k]
         dL[..., k + 1:, k] /= L[..., k:k + 1, k]
         dL[..., k, k] -= dot(dL[..., k + 1:, k], L[..., k + 1:, k])
         dL[..., k, k] /= 2 * L[..., k, k]
     return (dL + T(dL)) / 2.