Почему матрица не увеличивается даже после явной строки, написанной для того же самого в numpy? - PullRequest
0 голосов
/ 02 мая 2020
def inti():
    ini = {'theta' : np.array((1e6 , 1e7 , 1e7, 1e7 , 1e7) , dtype = 'float64').reshape(5 , 1) , 
       'b' : 1.2}
    return ini

def sigmoid(x):
    return 1 / (1 + np.exp(-x)) 

def net_input(theta, x):
# Computes the weighted sum of inputs
    return np.dot(x , theta)

def prob(theta , x):
    return sigmoid(np.array(net_input(theta , x)) + inti()['b'])

def loss(theta , x , y):
    temp1 = np.dot(y.T , np.log(prob(theta , x)))
    temp2 = np.dot((1- y).T ,(1 - np.log(pdef grad(theta , x , y):
    return (np.dot(x.T , prob(theta , x ) - y))
    #temp = (-1/m)* temp
    return ((-1/m)* temp[0])

def grad(theta , x , y):
    return (np.dot(x.T , prob(theta , x ) - y))

cost =[]
#inti()
def params(x , y , theta , learning_rate):
    theta = inti()['theta']
    for i in np.arange(10000):
        cost.append((loss(theta , x, y)))
        theta = theta + (learning_rate) * grad(theta , x , y)
        print(grad(theta , x, y))
    return theta
# Function to get theta matrix 
parameters = params(X_train , y_train , inti()['theta'] , 20)`

Я новичок в Python и ML, и у меня есть написанные выше функции для выполнения Logisti c Регрессия. Все размеры матрицы правильно определены таким образом, чтобы при умножении матрицы не возникало ошибок. Я столкнулся с довольно странной проблемой здесь. Тета-матрица не просто увеличивается. Я напечатал стоимость каждой эпохи, чтобы увидеть, насколько хорошо была инициализация, но стоимость оказалась одинаковой все время без градиента матрицы, равной нулю. Матрица градиента также была постоянной в каждую эпоху.

Я думал, что это может быть из-за низкой скорости обучения. Но даже после увеличения скорости обучения до 20 я обнаружил, что она не меняется.

Я просмотрел код, и он кажется логически правильным.

Размеры матрицы:
X_train: (700, 5) y_train: (700, 1) тета: (5, 1)

...