解释 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 之间,彼此独立。
我正在使用 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 之间,彼此独立。