test_len = 40 for i in range(train_size, len(new_data_x)): # 要预测的是i' test_x = new_data_x[i - test_len:i, np.newaxis, :] test_x = preminmaxscaler(test_x, train_x_minmax[0], train_x_minmax[1]) batch_test_x = torch.tensor(test_x, dtype=torch.float32, device=device) if i == train_size: test_y, hc = net.output_y_hc(batch_test_x, (zero_ten, zero_ten)) else: test_y, hc = net.output_y_hc(batch_test_x, hc) # test_y = net(batch_test_x) predict_y = test_y[-1].item() predict_y = unminmaxscaler(predict_y, train_x_minmax[0], train_y_minmax[1]) new_data_x[i] = predict_y # 绘制图 plt.plot(new_data_x, 'r', label='pred') plt.plot(data_x, 'b', label='real', alpha=0.3) plt.legend(loc='best')
时间: 2023-07-15 19:13:15 浏览: 96
对一组数据进行预测
5星 · 资源好评率100%
这段代码看起来是一个时间序列预测模型的测试部分。首先定义了一个测试集的长度test_len,然后从训练数据之后的位置开始循环,每次取出test_len长度的数据作为输入,进行预处理和转换为tensor类型,再输入神经网络进行预测。首次进行预测时,初始化LSTM的隐状态为全0张量;之后每次预测后都会将隐状态更新为当前预测的隐状态,以保证后续预测的连续性。最后,将预测结果unminmaxscaler函数还原为实际值,并将其赋值给new_data_x中对应位置,绘制预测结果和真实结果的比较图。
阅读全文