二进制Keras LSTM模型不输出二进制预测

2024-04-25 13:29:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一个Keras LSTM模型,它读取二进制目标值,并输出二进制预测。然而,这些预测并不是二元的。我的X和Y值示例如下:

X      Y
5.06   0
4.09   1
4.72   0
4.57   0
4.44   1
6.98   1 

我想预测的是Xt+1是否会高于或低于Xt。如果Xt+1大于Xt,则Xt的Y值为1。我的训练X值是932个样本的形状(932100,1),100个是“回首”序列,1个是特征。我得到的预测是:

Predictions
.512
.514
.513

我想这些可能是概率,因为我的模型准确率在51%左右。有什么办法让它们变成二进制的吗?完整型号代码如下:

# Defining network architecture
def build_model(layers):
    model = Sequential()

    model.add(LSTM(
        input_dim=layers[0],
        output_dim=layers[1],
        return_sequences=True))
    model.add(Dropout(0.2))

    model.add(LSTM(
        layers[2],
        return_sequences=False))
    model.add(Dropout(0.2))

    model.add(Dense(
        output_dim=layers[3]))
    model.add(Activation("sigmoid"))

    start = time.time()
    model.compile(loss="binary_crossentropy", optimizer="rmsprop",metrics=['accuracy'],class_mode="binary")
    print("> Compilation Time : ", time.time() - start)
    return model

# Compiling model
model = build_model([1, 100, 500, 1])

Tags: 模型buildaddoutputmodelreturntimelayers