Я пробовал следующий код, но не нашел разницы между np.dot и np.multiply с np.sum
Вот код np.dot
logprobs = np.dot(Y, (np.log(A2)).T) + np.dot((1.0-Y),(np.log(1 - A2)).T)
print(logprobs.shape)
print(logprobs)
cost = (-1/m) * logprobs
print(cost.shape)
print(type(cost))
print(cost)
Его выход
(1, 1)
[[-2.07917628]]
(1, 1)
<class 'numpy.ndarray'>
[[ 0.693058761039 ]]
Вот код для np.multiply с np.sum
logprobs = np.sum(np.multiply(np.log(A2), Y) + np.multiply((1 - Y), np.log(1 - A2)))
print(logprobs.shape)
print(logprobs)
cost = - logprobs / m
print(cost.shape)
print(type(cost))
print(cost)
Его выход
()
-2.07917628312
()
<class 'numpy.float64'>
0.693058761039
Я не могу понять разницу типов и форм, тогда как значение результата одинаково в обоих случаях
Даже в случае сжимания прежнего значения стоимости кода становятся такими же, как и позже, но тип остается таким же
cost = np.squeeze(cost)
print(type(cost))
print(cost)
выход
<class 'numpy.ndarray'>
0.6930587610394646