我正在尝试训练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单元的数量,损失函数和优化器,但仍然无法正常工作。
答案 0 :(得分:0)
将最后一层的激活功能从softmax更改为sigmoid可使模型正常工作。感谢@giser_yugang @Ashwin Geet D'Sa