【SegRNN 源码理解】
x = self.valueEmbedding(x.reshape(-1, self.seg_num_x, self.seg_len))
valueEmbedding
特征,时间步,每个特征 60 个观察值,分成 5 份,每份 12 个时间步,嵌入到 512 维
输入: x = [16, 7, 60] # [batch, feature, time]
|
v 重塑
[112, 5, 12] # [batch*feature, segments, segment_length]
|
v 嵌入
[112, 5, 512] # [batch*feature, segments, d_model]
_, hn = self.rnn(x)
x 嵌入以后,喂给 RNN
RNN 隐藏层的输出:1×112×512
为什么h_n的形状 [1, 112, 512]
RNN在不分段处理时的形状分析
如果SegRNN模型不进行分段处理,而是直接将完整的时间序列输入到RNN中,其输入、输出的形状和处理过程会有显著不同。
不分段的RNN输入输出形状
假设我们保持批次大小(16)和特征数(7)不变,但不对60个时间步分段处理:
输入数据预处理
问题:
它这么处理是在建模什么东西,尤其是 16*7 的变换我不明白,是什么实际意义,然后又分成 5 段,相当于 5 个时间步,感觉把原始的 16 个 Batch,每个 Batch 60 个时间步,每个时间步 7 个特征的原始信息含义都混着了
RNN 对这个 16个地区的疫情数据 每个地区记录60天 每天记录7种指标(确诊数、死亡数、恢复数、新增病例、R0值、人口密度、医疗资源) 直接进行时间序列建模的输入和输出是什么样的
16个 batch,60 个时间步,7 个特征 -》 112 个序列,5 段,512 维(先理解每段)-》112 个序列,512 维(再混合段落,理解全文)