Scipy.optimize.fmin_cg с сообщением TypeError: неподдерживаемые типы операндов для -: 'tuple' и 'tuple' - PullRequest
0 голосов
/ 25 марта 2019

Я строю классификатор oneVsAll в python и использую scipy.optimize.fmin_cg для получения оптимального значения тета-вектора.Это моя функция классификатора.

def oneVsAll(X, y, K, reg_parameter):
    X = np.hstack((np.ones((X.shape[0],1)), X))
    theta = initialiseTheta((K,X.shape[1]))
    print(theta[0].shape)
    for i in range(K):
        print("In for loop")
        digit_class = i if i else 10
        theta[i] = opt.fmin_cg(f = lrCostFunction, fprime=None, x0=theta[i], args = (X, (y==digit_class).flatten() , reg_parameter), maxiter=50)

    return theta

Это моя функция стоимости

def lrCostFunction(theta, X, y, reg_parameter):
    m = y.shape[0]  #number of training examples
    J =0
    grad = np.zeros(theta.shape)
    Z = np.dot(X, theta)
    print("Z shape", Z.shape)
    hx = sigmoid(Z)
    print("hx - y shape", (hx-y).shape)
    print("X shape",(X[:,0].T).shape )
    print("dot product shape", np.dot(X[:,0].T, (hx -y)))
    J = -(1/m)*(np.sum(np.multiply(y, np.log(hx)) + np.multiply((1-y), np.log(1-hx)))) + (reg_parameter/(2*m))*(np.sum(np.power(theta[1:], 2)))
    grad_unregularized = (1/m)*(np.dot(X[:,1:].T, (hx -y)))
    grad[0] = (1/m)*(np.dot(X[:,0].T, (hx -y)))
    grad[1:] = grad_unregularized + (reg_parameter/m)*(theta[1:])

    return (J, grad)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...