示例#1
0
        def grad_stability(X):
            (dim, _) = np.shape(X)
            G = np.zeros(np.shape(X))
            A_1 = get_entries(X, A_1_cds)
            diff1 = 2 * np.dot(A_1, mu)
            grad1 = np.tile(mu.T, (block_dim, 1))
            # (block_dim,1) * (block_dim,block_dim) across rows
            grad1 = diff1 * grad1
            set_entries(G, A_1_cds, grad1)

            A_T_1 = get_entries(X, A_T_1_cds)
            diffT1 = 2 * np.dot(A_T_1.T, mu)
            gradT1 = np.tile(mu.T, (block_dim, 1))
            gradT1 = diffT1 * gradT1
            set_entries(G, A_T_1_cds, gradT1.T)

            A_2 = get_entries(X, A_2_cds)
            diff2 = 2 * np.dot(A_2, mu)
            grad2 = np.tile(mu.T, (block_dim, 1))
            grad2 = diff2 * grad2
            set_entries(G, A_2_cds, grad2)

            A_T_2 = get_entries(X, A_T_2_cds)
            diffT2 = 2 * np.dot(A_T_2.T, mu)
            gradT2 = np.tile(mu.T, (block_dim, 1))
            gradT2 = diffT2 * gradT2
            set_entries(G, A_T_2_cds, gradT2.T)
            return (1./dim**2) * G
示例#2
0
def grad_l2_batch_equals(X, A, coord):
    # Upper right
    grad_piece = 2*(get_entries(X,coord) - A)
    grad = np.zeros(np.shape(X))
    set_entries(grad, coord, grad_piece)
    return grad