def _generate(l, k, g, beta, M, e, A, mu, intercept): p = beta.shape[0] if intercept: gradL1 = grad_l1(beta[1:, :]) gradL2 = grad_l2_squared(beta[1:, :]) gradTVmu = grad_tvmu(beta[1:, :], A, mu) else: gradL1 = grad_l1(beta) gradL2 = grad_l2_squared(beta) gradTVmu = grad_tvmu(beta, A, mu) alpha = -(l * gradL1 + k * gradL2 + g * gradTVmu) Mte = np.dot(M.T, e) if intercept: alpha = np.divide(alpha, Mte[1:, :]) else: alpha = np.divide(alpha, Mte) X = np.ones(M.shape) if intercept: for i in xrange(p - 1): X[:, i + 1] = M[:, i + 1] * alpha[i, 0] else: for i in xrange(p): X[:, i] = M[:, i] * alpha[i, 0] y = np.dot(X, beta) - e return X, y
def _generate(l, k, g, beta, M, e, mu, shape): p = np.prod(shape) gradL1mu = grad_l1mu(beta, mu) gradL2 = grad_l2_squared(beta) gradTVmu = grad_tvmu(beta, shape, mu) alpha = -(l * gradL1mu + k * gradL2 + g * gradTVmu) alpha = np.divide(alpha, np.dot(M.T, e)) X = np.zeros(M.shape) for i in xrange(p): X[:, i] = M[:, i] * alpha[i, 0] y = np.dot(X, beta) - e return X, y