Autoformer pytorch代码解读(3)dataloader部分 transformer学习笔记

到这里产生一个疑问,为什么传入的x_dec只用到了他的维度,并没有用到这个数据本身呢?

从train开始进入,看看数据是怎么样的。

(1)进入了exp_main中的def train中。

(2)进入了exp_main中的这个get data中。

 这个get data这个函数,调用的是data provider这个方法,他需要的参数是args和,flag。flag代表着是训练还是测试还是验证。

(3)进入到了这个datafactory这个里面

(4) self.seq_len = 96   self.label_len = 48    self.pred_len = 96

(5)到了data_loader的read_data这里。

这里最先获得的df_raw是(17420,8)维度的。

border1s[0,8544,11424],border2s[8640,11520,1440]。

broder1最后是0,broder2是8640。

 到了这一步,这个df_data就是这个原始的数据。只不过是从第1列开始,也就是说没有第0列。

 这里是得到标准化后的训练数据和测试数据。

 为什么要这样呢?

 对应的就是下面的三行。

 接下来是对时间进行时间戳编码

data_stamp这个的维度是(8640,4),如下图所示。

 这个data_x和这个data_y的维度都是(8640,7)的维度的数据。这个data_stamp的维度是(8640,4)的维度。

 

<think>好的,用户想了解DLinear模型的相关信息,特别是模型介绍和使用方法。首先,我需要确认DLinear的基本背景。根据引用[2]中的内容,DLinear是一个时间序列预测模型,原文作者声称其效果可能超越了一些复杂的Transformer模型,比如Informer和Autoformer。这说明DLinear可能具有结构简单但性能优越的特点。 接下来,我需要整理DLinear的核心结构。根据资料,DLinear由三个主要组件构成:分解层、线性趋势预测和季节性残差预测。分解层可能使用移动平均来将时间序列分解为趋势和季节性成分。线性部分处理趋势,而季节性残差部分可能通过线性层来捕捉剩余的模式。这样的设计可能减少了模型的复杂性,同时保持了对时间序列关键特征的捕捉能力。 然后,关于DLinear的优势,用户可能想知道为什么选择它而不是其他复杂模型。根据引用[2],DLinear在计算效率、可解释性、训练速度和长序列预测方面表现突出。这些优势需要具体说明,比如分解结构带来的可解释性,线性层的低计算成本等。 使用方法方面,用户可能需要具体的步骤指导。引用[1]提到文档指导了训练和预测的流程,所以需要列出数据准备、模型构建、训练配置、训练和预测的步骤。同时,结合引用[2]中的代码解析,可能需要给出示例代码片段,比如使用PyTorch构建模型,并说明数据输入的格式要求,比如(batch_size, seq_length, feature_dim)。 此外,用户可能想知道DLinear的应用场景。根据时间序列预测的常见应用,比如电力负荷、销售预测等,可以举例说明。同时,需要比较DLinear与其他模型(如LSTM、Transformer)的适用场景,强调其在长序列和需要快速部署时的优势。 最后,生成相关问题时要覆盖模型结构、优势、使用方法、应用场景以及与其他模型的对比,确保用户能全面了解DLinear。需要检查是否所有数学公式都正确使用$...$或$$...$$格式,例如分解公式可能需要独立成段,使用双美元符号包裹。同时,确保回答结构清晰,分点说明,便于用户理解。</think>### DLinear 模型介绍 DLinear是一种基于分解结构的线性时间序列预测模型,通过**趋势-季节分解+双通道线性层**的极简设计,在多个基准数据集上超越Transformer等复杂模型[^2]。 #### 核心结构 1. **分解层**: 使用移动平均分解时间序列$X_t = T_t + S_t$ $$T_t = \frac{1}{m}\sum_{i=-k}^{k}X_{t+i},\quad S_t = X_t - T_t$$ ($m$为滑动窗口大小) 2. **双通道预测**: - 趋势通道:单层Linear处理低频趋势分量 - 季节性通道:单层Linear处理高频残差分项 3. **预测合成**: $$\hat{X}_{t+1:t+H} = \text{Linear}_{\text{trend}}(T_t) + \text{Linear}_{\text{seasonal}}(S_t)$$ #### 关键优势 1. **计算效率**:线性复杂度$O(L)$ vs Transformer的$O(L^2)$ 2. **可解释性**:显式的趋势/季节分解结构 3. **训练速度**:参数量仅为同类模型的1/100 4. **长序列预测**:在ETT、Weather等数据集上SOTA ### 使用方法(基于PyTorch) #### 数据准备 ```python # 输入格式:(batch_size, seq_len, feature_dim) train_loader = DataLoader(TimeSeriesDataset(train_data, input_len=96, pred_len=24)) ``` #### 模型构建 ```python import torch.nn as nn class DLinear(nn.Module): def __init__(self, input_len=96, pred_len=24): super().__init__() self.decompose = MovingAverage(window_size=25) # 移动平均分解 self.linear_trend = nn.Linear(input_len, pred_len) self.linear_seasonal = nn.Linear(input_len, pred_len) def forward(self, x): trend = self.decompose(x) seasonal = x - trend return self.linear_trend(trend) + self.linear_seasonal(seasonal) ``` #### 训练配置 ```python model = DLinear() criterion = nn.MSELoss() optimizer = torch.optim.Adam(model.parameters(), lr=1e-3) ``` #### 预测流程 ```python # 输入:历史序列 (batch_size, 96, 1) # 输出:预测结果 (batch_size, 24, 1) pred = model(hist_data) ``` ### 典型应用场景 1. 电力负荷预测(ETT数据集) 2. 交通流量预测(PeMS数据集) 3. 销售趋势预测(M5数据集) 4. 气象数据预测(Weather数据集)
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值