我目前正在学习使用一个非常简单的数据集预测时间序列,该数据集有8列(所有数字),总共795个样本用于训练,89个样本用于测试(无NaN值)
数据已通过以下方式标准化:
scaler = MinMaxScaler(feature_range=(0,1))
scaled_data = scaler.fit_transform(dataset_to_train)
后来,在将目标与特征分离后,我使用Keras创建了一个LSTM(x_序列是缩放的,没有目标列):
lstm_net = Sequential()
lstm_net.add(LSTM(20, input_shape=(x_train.shape[1],1), return_sequences=True))
lstm_net.add(LSTM(10,return_sequences=False))
lstm_net.add(Dense(5))
lstm_net.add(Dense(1))
对于编译(已经尝试了其他编译器,如adam或rmsprop,但没有任何更改):
lstm_net.compile(optimizer = 'sgd', loss = 'mean_squared_error', metrics=['accuracy'])
对于配件:
lstm_net.fit(x_train,y_train, epochs=50 , batch_size=1)
它表明:
Epoch 30/50
795/795 [==============================] - 2s 2ms/step - loss: nan - accuracy: 0.0474
它的精度很低,而且一直都有损耗
要获得最终预测,请执行以下操作:
predictions = lstm_net.predict(x_test)
print(predictions)
它会打印出整个[nan]数组
关于如何解决这个问题,有什么建议吗?我尝试了我在其他帖子或论坛上找到的所有东西,大多数人都指出这可能是由于梯度问题,甚至尝试了不同的定标器,但没有结果,所以我迷路了
目前没有回答
相关问题 更多 >
编程相关推荐