pytorch lstm时间序列预测问题踩坑

1.做时间序列问题

2.问题

1.数据集自己做,为多个输入对应多个或一个输出

2.损失函数

注意:不能用交叉熵 nn.CrossEntropyLoss()

nn.CrossEntropyLoss()要求target目标值即真实值是标签,是torch.int64类型数据,即整数,不允许小数,如果输入小数会强行取整,
应该用

nn.MSELoss()

我在这个问题上纠结了很久,总是显示

RuntimeError: expected scalar type Long but found Float

导致我找了很久怎么样才能把torch.float64保留小数的情况下转成long,后来查资料torch.long就是torch.int64,简直变态
后来一点一点往上找才知道的这个错误

注意2:真实值(目标值)必须是两个维度,否则会警告,不会报错

增加维度方法:
1.torch.unsqueeze(tensor, dim)
2.numpy_array = .numpy_array [np.newaxis, :, :]  # 原来维度(10, 13)——(1, 10, 13)
补充
np.unaqueeze总是报错,不明白为什么

3.准确率

分类问题是有准确率这个评价的,但是我训练的rnn,loss一直降低,但是准确率为0,才反应过来,回归问题很难达到完全一致

3.结果

这是测试集预测结果,前10步预测后1步,勉强可以
请添加图片描述

训练集结果:
请添加图片描述
之后需要
0.5. 根据上一步预测结果预测下一个——做不到,x为13个变量,y只有1个,无法用y作为下一个x

  1. 找一个预测结果评价指标
  2. transformer编码解码
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值