C1_W3_Logistic_Regression_Potential problem

Hi @VladimirFokow, I think you do make a point here about the np.inf problem, and I think you might also be interested in how popular ML packages take care of that while keeping the loss formula the way it is most well-known today which is -y\log(f)-(1-y)\log(1-f).

In tensorflow, if you trace through the source code from this beginning, you will end up seeing these lines:

  output = tf.clip_by_value(output, epsilon_, 1. - epsilon_)
  return -tf.reduce_sum(target * tf.math.log(output), axis)

The first line will clip the values of f and 1-f such that they will both always remain between epsilon_ and 1-epsilon_, and epsilon_ is a very small number 1e-07, so it avoids the np.inf problem.

sklearn’s implementation has this line as well:

    y_pred = np.clip(y_pred, eps, 1 - eps)

and their eps = 1e-15.

So I believe it will be good if we stick with the formula the way it is, as it is indeed how popular implementation uses it, and just be consistent with the way we learn it.

I did the assignment as well and I didn’t encounter the np.inf problem using the formula so I think it had been designed to avoid the problem that you described.