LSTM仅使用keras训练一次

时间:2019-07-17 01:46:51

标签: keras lstm recurrent-neural-network

我正在尝试训练LSTM模型来预测温度,但是该模型仅在最初的几个时期得到训练。

我在大约20小时内从服务器获得了cpu的使用情况和温度作为数据集。我想通过之前使用10m的数据来预测10m之后的cpu温度,因此我将数据集重塑为(1301、10、2 ),因为我有1301个样本,10m个时间步长和2个特征,然后将其分为1201和100作为训练数据集和验证数据集。

我手动检查数据集,所以应该正确。

我如下创建LSTM模型

    model = Sequential()
    model.add(LSTM(10, activation="relu", input_shape=(train_x.shape[1], train_x.shape[2]),return_sequences=True))
    model.add(Flatten())
    model.add(Dense(1, activation="softmax"))
    model.compile(loss='mean_absolute_error', optimizer='RMSprop')

并尝试使其适应

    model.fit(train_x, train_y, epochs=50, batch_size=32, validation_data=(test_x, test_y), verbose=2)

我得到了这样的日志:

Epoch 1/50
 - 1s - loss: 0.8016 - val_loss: 0.8147
Epoch 2/50
 - 0s - loss: 0.8016 - val_loss: 0.8147
Epoch 3/50
 - 0s - loss: 0.8016 - val_loss: 0.8147
Epoch 4/50
 - 0s - loss: 0.8016 - val_loss: 0.8147
Epoch 5/50
 - 0s - loss: 0.8016 - val_loss: 0.8147
Epoch 6/50
 - 0s - loss: 0.8016 - val_loss: 0.8147
Epoch 7/50
 - 0s - loss: 0.8016 - val_loss: 0.8147
Epoch 8/50
 - 0s - loss: 0.8016 - val_loss: 0.8147
Epoch 9/50
 - 0s - loss: 0.8016 - val_loss: 0.8147

每个时期的训练时间为0,期望第一个时期,并且损失永远不会减少。我试图更改LSTM单元的数量,损失函数和优化器,但仍然无法正常工作。

1 个答案:

答案 0 :(得分:0)

将最后一层的激活功能从softmax更改为sigmoid可使模型正常工作。感谢@giser_yugang @Ashwin Geet D'Sa