具体代码错误:
Traceback (most recent call last):
File "C:\Users\zss\Desktop\光伏\综合模型评估,预测,预警\时序预测_边坡\LSTM_Time_sequence_displacement_training.py", line 163, in <module>
epoch_loss, epoch_test_loss = fit(epoch, model, loss_function, optimizer, train_loader, test_loader, bst_loss)
File "C:\Users\zss\Desktop\光伏\综合模型评估,预测,预警\时序预测_边坡\LSTM_Time_sequence_displacement_training.py", line 114, in fit
y_train_pred = model(x_train) # 前向传播求出预测的值
File "C:\Users\zss\anaconda3\envs\zss3\lib\site-packages\torch\nn\modules\module.py", line 727, in _call_impl
result = self.forward(*input, **kwargs)
File "C:\Users\zss\Desktop\光伏\综合模型评估,预测,预警\时序预测_边坡\LSTM_Time_sequence_displacement_training.py", line 81, in forward
out, _ = self.lstm(x, (h0, c0))
File "C:\Users\zss\anaconda3\envs\zss3\lib\site-packages\torch\nn\modules\module.py", line 727, in _call_impl
result = self.forward(*input, **kwargs)
File "C:\Users\zss\anaconda3\envs\zss3\lib\site-packages\torch\nn\modules\rnn.py", line 579, in forward
self.check_forward_args(input, hx, batch_sizes)
File "C:\Users\zss\anaconda3\envs\zss3\lib\site-packages\torch\nn\modules\rnn.py", line 530, in check_forward_args
self.check_input(input, batch_sizes)
File "C:\Users\zss\anaconda3\envs\zss3\lib\site-packages\torch\nn\modules\rnn.py", line 180, in check_input
self.input_size, input.size(-1)))
RuntimeError: input.size(-1) must be equal to input_size. Expected 3, got 2
原因:
我之前设置了时间序列:却写成了
# 选取第二、第三和第四列作为特征输入
input_features = data.iloc[:, 1:4] # 假设第一列是时间,从第二列开始取到第四列
target_columns = data.iloc[:, 2:4] # 目标列只包括第三和第四列
解决措施:
# 假设data已经将'时间'列设置为索引,您应该选择第一、第二和第三列作为输入特征
input_features = data.iloc[:, 0:3] # 选择第一列到第三列
target_columns = data.iloc[:, 1:3] # 目标列为第二列和第三列