我正在尝试使用一系列数字(固定长度)来预测使用 Keras 和循环神经网络的二进制输出(1 或 0)。
每个训练示例/序列有 10 个时间步长,每个时间步长包含一个由 5 个数字组成的向量,每个训练输出由 1 或 0 组成。1 与 0 的比例约为 1:3。大约有 100,000 个训练示例。
我曾尝试使用 Keras 来实现这一点,但在第一个训练阶段后损失停止减少。我也尝试过修改超参数,但无济于事。我在这里缺少什么吗?
训练输入如下:(零填充)
array([[[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
...,
[1.24829336, 0.96461449, 3.35142857, 0.74675 , 0.776075 ],
[1.248303 , 0.96427925, 0. , 1.317225 , 1.317225 ],
[1.24831488, 0.96409169, 2.74857143, 1.353775 , 1.377825 ]],
[[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
...,
[1.24969672, 0.96336315, 0. , 1.319725 , 1.319725 ],
[1.24968077, 0.96331624, 0. , 1.33535 , 1.33535 ],
[1.24969598, 0.96330252, 5.01714286, 1.3508 , 1.3947 ]],
[[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
...,
[0. , 0. , 0. , 0. , 0. ],
[1.25715364, 0.95520672, 2.57714286, 1.04565 , 1.0682 ],
[1.25291274, 0.96879701, 7.76 , 1.311875 , 1.379775 ]],
...,
[[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
[0. , 0. , 0. , 0. , 0. ],
...,
[1.24791079, 0.96561021, 4.44 , 0.7199 , 0.75875 ],
[1.25265263, 0.96117379, 2.09714286, 0.7636 , 0.78195 ],
[1.25868651, 0.96001674, 3.01142857, 1.35235 , 1.3787 ]]])
训练输出如下:
array([[0.],
[0.],
[0.],
...,
[1.],
[0.],
[0.]])
这是我尝试训练的模型:
#Model
model = Sequential()
model.add(LSTM(100, input_shape= (10, 5)))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
print(model.summary())
model.fit(X_train, y_train, validation_data = (X_test, y_test), epochs = 100, batch_size = 1000)