【发布时间】:2021-08-09 09:26:08
【问题描述】:
我正在使用 Raw python 实现 Binary Cross-Entropy 损失函数,但它给了我与 Tensorflow 截然不同的答案。 这是我从 Tensorflow 得到的答案:-
import numpy as np
from tensorflow.keras.losses import BinaryCrossentropy
y_true = np.array([1., 1., 1.])
y_pred = np.array([1., 1., 0.])
bce = BinaryCrossentropy()
loss = bce(y_true, y_pred)
print(loss.numpy())
输出:
>>> 5.1416497230529785
据我所知,二元交叉熵的公式是这样的:
我用原始 python 实现了相同的功能,如下所示:
def BinaryCrossEntropy(y_true, y_pred):
m = y_true.shape[1]
y_pred = np.clip(y_pred, 1e-7, 1 - 1e-7)
# Calculating loss
loss = -1/m * (np.dot(y_true.T, np.log(y_pred)) + np.dot((1 - y_true).T, np.log(1 - y_pred)))
return loss
print(BinaryCrossEntropy(np.array([1, 1, 1]).reshape(-1, 1), np.array([1, 1, 0]).reshape(-1, 1)))
但是从这个函数中我得到的损失值是:
>>> [[16.11809585]]
我怎样才能得到正确的答案?
【问题讨论】:
标签: python tensorflow keras loss-function