Одним из решений может быть добавление epsilon << 1
к вашим выражениям в журнале. Таким образом, если y_train == 0
, выражение в журнале будет очень маленьким, но не NaN.
Например, возьмите epsilon = 1e-5
и измените выражение следующим образом:
def compute_cost(y_model,y_train):
m = y_train.shape[0]
eps = 1e-5
cost = - (1 / m) * np.sum(np.multiply(y_train, np.log(y_model + eps)) + np.multiply(1 - y_train, np.log(1 - y_model + eps)))
return cost
L = compute_cost(y_model,y_train)
Таким образом, вы можете получить желаемый результат без NaN.