Sigmoid 作为 LSTM 中的最后一层

问题描述

我有一个带有 LSTM 的分类 (Keras),用于将 4 个属性标记为 2 个类(安全和不安全)的数据集。将 sigmoid 放在最后一层,我得到了 98% 的准确率,而不是 softmax。 我的问题是:
1)如果我在最后一层使用softmax: 在基于 2 个神经元作为其他代码末尾输出softmax 中,我可以比较分数并说出数据属于哪个。 例如 score_safe= 1.2945 和 score_unsafe= -9.0 那么我可以说这行数据集属于安全类。 2)如果我在最后一层使用 Sigmid: 然后我只需要把一个神经元作为 up 输出,我怎么能比较分数,怎么能说这行数据集属于哪个类?

model = Sequential()
model.add(LSTM(256,input_shape=(x_train.shape[1:]),activation='tanh',return_sequences=True))
#model.add(Batchnormalization())
model.add(Dense(128,activation='tanh'))
#model.add(Batchnormalization())
model.add(Dense(128,activation='tanh'))
model.add(Dense(1,activation='sigmoid'))

解决方法

sigmoid 的输出是一个介于 0. 和 1 之间的浮点数。

通常设置为,如果输出低于 0.5,则模型将分类为第一类(无论哪个类在您的数据集中表示为 0)。如果输出高于 0.5,模型将归类为第二类(在您的数据集中表示为 1)。

可以改变 0.5 阈值以引入对一个或另一个类别的偏见。