数据训练 torch.manual_seed(101) model = CNNnetwork() 设置损失函数 均方差损失 criterion = nn.MSELoss() 设置优化函数、学习率 optimizer = torch.optim.Adam(model.parameters(), lr=0.001) epochs = 100 # 训练周期 model.train() start_time = time.time() for epoch in range(epochs): for seq, y_train in train_data: # 每次更新参数前都梯度归零和初始化 optimizer.zero_grad() # 注意这里要对样本进行reshape, # 转换成conv1d的input size(batch size, channel, series length) y_pred = model(seq.reshape(1, 1, -1)) loss = criterion(y_pred,y_train) loss.backward() optimizer.step() print(f'Epoch:{epoch+1:2} Loss:{loss.item():10.8f}') print(f'\nDuration:{time.time() - start_time:.0f} seconds') 数据预测 future = 12 选取序列最后12个值进行预测 preds = train_norm[-window_size:].tolist() 设置成eval模式 model.eval() 循环的每一步表示时间序列向后滑动一格 for i in range(future): seq = torch.FloatTensor(preds[-window_size:]) with torch.no_grad(): preds.append(model(seq.reshape(1, 1, -1)).item()) 返归一化还原真实值 true_predictions = scaler.inverse_transform(np.array(preds[window_size:]).reshape(-1,1)) 对比真实值与预测值 plt.figure(figsize=(12, 6)) plt.grid(True) plt.plot(df['S4248SM144NCEN']) x = np.arange('2018-02-01', '2019-02-01', dtype='datetime64[M]').astype('datetime64[D]') plt.plot(x,true_predictions) plt.show()
时间: 2024-04-22 08:26:29 浏览: 167
这段代码完成了对时间序列数据的训练和预测。首先,设置了随机种子并创建了一个CNN网络模型。
然后,定义了均方差损失函数和Adam优化器,并设置了学习率为0.001。
在训练阶段,使用一个循环来遍历训练数据集中的序列和目标值。在每个训练样本前,使用optimizer.zero_grad()将梯度归零,以防止梯度累积。然后,通过将序列进行reshape,转换为conv1d的输入尺寸(batch size,channel,series length),并将其传入模型中进行预测。计算预测值与真实值之间的均方差损失,并进行反向传播更新模型的参数。最后打印出每个epoch的损失值。
在预测阶段,首先设置模型为eval模式。然后,通过循环预测未来一段时间的值。每次预测时,将最后一部分序列作为输入,并使用模型进行预测。将预测值添加到preds列表中。最后,将预测值转换回原始比例,并将其与真实值进行可视化比较。
请注意,这段代码中使用了一些未定义的变量(例如train_data、train_norm、window_size),你需要在之前的代码中定义和初始化这些变量。
相关问题
请解释这段代码:criterion = torch.nn.MSELoss(size_average = False)
这段代码是在使用PyTorch库中的torch.nn.MSELoss类创建了一个名为criterion的对象。MSELoss代表均方误差损失函数,用于计算预测值与目标值之间的均方差。
在创建MSELoss对象时,可以传入参数size_average来指定是否对损失进行平均。在这段代码中,size_average被设置为False,表示不对损失进行平均,即返回每个样本的损失值而不是整个批次的平均损失。
这样设置有时可以更好地控制训练过程,特别是在处理不平衡的样本分布或需要更细粒度的损失计算时。根据具体的应用场景和需求,可以根据需要选择是否进行平均损失。
阅读全文
相关推荐















