1
我正在嘗試使用CVXPY來模擬一個精確的行搜索實驗。最小化cvxpy中的日誌功能
objective = cvx.Minimize(func(x+s*grad(x)))
s = cvx.Variable()
constraints = [ s >= 0]
prob = cvx.Problem(objective, constraints)
obj = cvx.Minimize(prob)
上述等式是我的輸入目標函數。
def func(x):
np.random.seed(1235813)
A = np.asmatrix(np.random.randint(-1,1, size=(n, m)))
b = np.asmatrix(np.random.randint(50,100,size=(m,1)))
c = np.asmatrix(np.random.randint(1,50,size=(n,1)))
fx = c.transpose()*x - sum(np.log((b - A.transpose()* x)))
return fx
梯度功能
def grad(x):
np.random.seed(1235813)
A = np.asmatrix(np.random.randint(-1,1, size=(n, m)))
b = np.asmatrix(np.random.randint(50,100,size=(m,1)))
c = np.asmatrix(np.random.randint(1,50,size=(n,1)))
gradient = A * (1.0/(b - A.transpose()*x)) + c
return gradient
以此來找到T「步長」在一個錯誤「AddExpression」對象有沒有屬性「登錄」最小化目標函數的結果。
我是CVXPY和優化的新手。如果有人能指導如何解決錯誤,我將不勝感激。
感謝