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)
Example #2
0
def compute_ATA_blas_dsyr(N):
    '''
    Compute only the lower or upper part of ATA
    by using the scipy wrraper for BLAS dsyr.
    '''
    ATA = np.zeros((N, N))
    for i in range(N):
        ai = compute_v(N)
        ATA = bla.dsyr(alpha=1, x=ai, lower=1, n=N, a=ATA, overwrite_a=1)
    return ATA
Example #3
0
def DSYR_blas(A, x, alpha=1.):
    """
    Performs a symmetric rank-1 update operation:
    A <- A + alpha * np.dot(x,x.T)

    :param A: Symmetric NxN np.array
    :param x: Nx1 np.array
    :param alpha: scalar

    """
    A = blas.dsyr(lower=0, x=x, a=A, alpha=alpha, overwrite_a=True)
    symmetrify(A, upper=True)
Example #4
0
def DSYR_blas(A, x, alpha=1.):
    """
    Performs a symmetric rank-1 update operation:
    A <- A + alpha * np.dot(x,x.T)

    :param A: Symmetric NxN np.array
    :param x: Nx1 np.array
    :param alpha: scalar

    """
    A = blas.dsyr(lower=0, x=x, a=A, alpha=alpha, overwrite_a=True)
    symmetrify(A, upper=True)
Example #5
0
def DSYR_blas(A, x, alpha=1.):
    """
    Performs a symmetric rank-1 update operation:
    A <- A + alpha * np.dot(x,x.T)

    :param A: Symmetric NxN np.array
    :param x: Nx1 np.array
    :param alpha: scalar

    """
    At = blas.dsyr(lower=0, x=x, a=A, alpha=alpha, overwrite_a=False) #See https://github.com/scipy/scipy/issues/8155
    A[:] = At
    symmetrify(A, upper=True)