【发布时间】:2022-01-06 18:05:32
【问题描述】:
我刚刚完成了有关如何构建神经网络的教程。现在我正在尝试为二进制分类构建一个成本敏感的神经网络。但不知何故,当我使用预测函数时,我的输出不是二进制,而是浮点数。我想我做错了什么,但我不知道是什么。
from keras.layers import Dense
from keras.layers import Dropout
cost_sensitive_NN = Sequential()
cost_sensitive_NN.add(Dense(12, activation = 'relu', input_dim=X_train_NN.shape[1]))
cost_sensitive_NN.add(Dropout(0.75))
cost_sensitive_NN.add(Dense(8, activation = 'relu'))
cost_sensitive_NN.add(Dense(1, activation = 'sigmoid'))
cost_sensitive_NN.compile(loss = 'binary_crossentropy',
optimizer = 'adam',metrics = ['AUC'])
cost_sensitive_NN.fit(X_train_NN, y_train_NN, class_weight = {0:1, 1:100}, epochs = 1)
【问题讨论】:
-
这是预期行为;输出代表 2 个类的 概率,因此它们确实应该是浮点数而不是整数。
-
@desertnaut 小心,只有在某些情况下,输出才代表概率,即便如此,它们也很少符合应有的水平。 arxiv.org/abs/1706.04599
-
@AndrewHolmgren 同意,进入校准问题和表示的细节不是我在这里的意图(也不是编程)主题。
标签: tensorflow machine-learning keras neural-network classification