0
我做了一個Keras LSTM模型,它讀入二進制目標值並且應該輸出二進制預測。但是,預測不是二元的。我的X和Y值的樣本如下:二元Keras LSTM模型不輸出二進制預測
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,100,1)爲932個樣本,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])
我不知道它是這樣工作的。謝謝你的解釋! – user3910919