解释 keras.predict 的奇怪输出

interpreting strange output from keras.predict

我正在使用 keras 解决一个多 class 文本评论分类问题,这个问题,准确地说: https://www.kaggle.com/c/jigsaw-toxic-comment-classification-challenge

有六个 classes,观测值可能落在所有这些中。我已经训练了我的模型(LSTM),使用二元交叉熵作为我的损失函数

model.compile(loss = 'binary_crossentropy', 
          optimizer = 'adam', 
          metrics = ['accuracy'])

现在,对于我正在写的报告,我希望能够做出一些具体的预测。所以我使用 predict() 来尝试让它做一些 classifications

 y_pred = model.predict(padded_test,verbose=1)

"padded_test" 这里是一个经过预处理的测试数据集。问题是当我调用这个方法时,然后对于这个评论:

Why the edits made under my username Hardcore Metallica Fan were reverted? They weren't vandalisms,        just closure on some GAs after I voted at New York Dolls FAC. And please don't remove the template from the talk page since I'm retired now.89.205.38.27

我得到了一些非常奇怪的预测值:

array([7.9924166e-03, 2.0393365e-05, 1.5081263e-03, 2.9950817e-05,

在这里,我可以看到许多偏离 class 的预测值都有指数,而且高得离谱。这是为什么?我该如何解读这些数字?

之前我尝试使用 "categorical cross entropy",它只给了我 0-1 之间的值,这正是我要寻找的,但是这完全搞砸了预测 1.9759631e-03, 2.7330496e-04], dtype=float32)

您看到的预测值不是很高的数字。相反,它们是负指数,例如第一个等于 0.0079924166。

为了正确解释这些值,有必要知道模型在输出层使用的激活函数。例如:

  • 如果您使用的是 softmax 激活函数,输出值将表示输入样本属于每个 类 的概率,它们总和为 1。
  • 如果您使用的是 sigmoid 激活函数(在本例中看起来像),输出值将介于 0 和 1 之间,彼此独立。