реализация функции стоимости + функция активации - возвращено неверное значение - PullRequest
0 голосов
/ 06 октября 2018

Я работаю над учебным пособием по машинному обучению и застрял в разделе логистической регрессии, который требует вычисления значений активации и предоставления их функции стоимости.

Я застрял, потому что код больше не возвращает ошибку и, насколько я могу судить, код, который я написал, почти идентичен кодам из аналогичных постов (см. Ниже), но вывод неправильный.

Вот мой код:

#define a sigmoid function
def sigmoid(z):
     a = 1/(1+np.exp(-z))
     return a

    #define an empty array w, and integer b
def init_zeros(dim):
     w = np.zeros((dim,1))
     b = 0
     return w, b

   #define a function to perform forward and backwards passes of logistic regression

def forward_backward(X, Y, w, b):

    m = X.shape[1]
    A=sigmoid(np.dot(w.T,X)+b)
    cost =-1/m * np.sum(Y * np.log(A) + (1-Y) * (np.log(1-A)))

    dZ = A-Y
    dw = 1/m*np.dot(X,dZ.T)
    db = (1/m)*np.sum(dZ)

    cost = np.squeeze(cost)

    grads = {'dw': dw, 'db': db}

    return grads, cost

   #here is the data to be used for testing the results of the forward_backward function
X = np.array([[1,2,-3,0],[0.5,6,-5,0]])
Y = np.array([[1,0,1,0]])
w = np.array([[1],[2]])
b = 0
grads, cost = forward_backward(X, Y, w, b)

print('dw = {}'.format(grads['dw']))
print('db = {}'.format(grads['db']))
print('cost = {}'.format(cost))

Вывод должен быть таким: dw = [[1.22019716] [2.73509556]]

db = 0.09519962669353813

cost = 6.9550195708335805

Но я получаю:

dw = [[0.] [0.]]

db = 0.0

cost =27.8200782833

Извините, что задаю вопрос, действительно похожий на предыдущие, но я действительно в замешательстве.Вот ссылки на похожие посты, которые я использовал для генерации кода выше:

https://datascience.stackexchange.com/questions/22470/python-implementation-of-cost-function-in-logistic-regression-why-dot-multiplic

Функция стоимости логистической регрессии

Реализация сигмоидальной функции в python

...