TypeError: объект 'module' не вызывается для одного кода, но не для другого - PullRequest
0 голосов
/ 24 августа 2018

Здравствуйте, когда пишете код вроде:

log_likelihood = np.sum(np.dot(Y.T, log(AL)), axis=0)

У меня ошибка как:

TypeError                                 Traceback (most recent call last)
<ipython-input-888-ac02c17e518d> in <module>()
----> 1 parameters = L_layer_model(train_x, train_y, layers_dims, num_iterations = 7, print_cost = True)

<ipython-input-887-d06b73757846> in L_layer_model(X, Y, layers_dims, learning_rate, num_iterations, print_cost)
     37         # Compute cost.
     38         ### START CODE HERE ### (≈ 1 line of code)
---> 39         cost = compute_cost(AL, Y)
     40         ### END CODE HERE ###
     41 

<ipython-input-880-a836c239755d> in compute_cost(AL, Y)
     81 
     82     #log_likelihood = -np.log(AL[range(m),(Y.argmax(axis=1))])
---> 83     log_likelihood = np.sum(np.dot(Y.T, log(AL)), axis=0)
     84         #log_likelihood = -1 * np.sum(1 * np.log(AL[range(m),(Y.argmax(axis=1))]))
     85     #print("Y argmax = " + str(Y.argmax(axis=1)))

TypeError: 'module' object is not callable

Но при написании моего кода:

log_likelihood = -np.log(AL[range(m),(Y.argmax(axis=1))])

Тогда моя программа выполняется без ошибок. Поверх программы я уже добавил

import math
import logging as log

Но, похоже, это не решает мою проблему! Кто-нибудь знает в чем проблема?

1 Ответ

0 голосов
/ 25 августа 2018

Здравствуйте, проблема была решена.Мы должны использовать:

log_likelihood = np.sum(np.dot(Y.T, np.log(AL)), axis=0)

Вместо:

log_likelihood = np.sum(np.dot(Y.T, log(AL)), axis=0)

Таким образом, используя np перед логом.Пояснение: имя функции журнала в numpy: np.log

...