谷歌最新模型TSMixer,时间序列预测模型。 Google源码,tensorflow框架以及pytorch版本。 模型整体架构全部由简单的MLP组成。 多变量输入多变量输出,多步单步随意切换。 数据替换简单,有需要学习的可~
最近谷歌推出的 TSMixer 模型在时间序列预测领域掀起了一阵小热潮。它作为一个时间序列预测模型,有着独特的设计和优势。
模型架构:全 MLP 构建的简洁之美
TSMixer 的整体架构全部由简单的多层感知机(MLP)组成。这种设计摒弃了一些复杂的神经网络结构,如卷积或者注意力机制等。MLP 的简单性使得模型不仅易于理解和实现,还在一定程度上降低了计算复杂度。
比如,在构建 MLP 层时,用 Python 和 PyTorch 可以这样简单实现一个基本的线性层:
python
import torch
import torch.nn as nn
class SimpleMLPLayer(nn.Module):
def __init__(self, in_features, out_features):
super(SimpleMLPLayer, self).__init__()
self.linear = nn.Linear(in_features, out_features)
def forward(self, x):
return self.linear(x)
这里定义了一个简单的 MLP 层,init 方法初始化了线性层,forward 方法则定义了数据的前向传播过程。通过这种简单的线性层堆叠,就可以构建出 TSMixer 的 MLP 架构。
多变量与多步预测的灵活性
TSMixer 支持多变量输入多变量输出,并且多步单步预测能够随意切换。这对于处理复杂的时间序列数据非常友好。在实际应用场景中,比如金融领域的多股票价格预测,或者气象领域多种气象因素的预测,多变量输入输出的能力就显得尤为重要。
假设我们有多个时间序列变量作为输入,每个时间序列有 numfeatures**个特征,时间步长为 time steps,批次大小为 batch_size。在 PyTorch 中可以这样定义输入数据:
python
input_data = torch.randn(batch_size, time_steps, num_features)
如果要进行多步预测,输出的形状会根据预测步数 numpredsteps 进行调整。例如,如果是单变量多步预测,输出形状可能是 (batchsize, num predsteps)**;多变量多步预测,输出形状可能是 (batch size, numpred steps, numoutputfeatures)。
谷歌源码与框架实现
谷歌提供了该模型的源码,分别基于 TensorFlow 框架以及 PyTorch 版本。对于习惯不同框架的开发者来说,这无疑是个好消息。
以 TensorFlow 版本为例,构建一个简单的 MLP 层可以这样写:
python
import tensorflow as tf
class SimpleMLPLayer(tf.keras.layers.Layer):
def __init__(self, out_units):
super(SimpleMLPLayer, self).__init__()
self.dense = tf.keras.layers.Dense(out_units)
def call(self, x):
return self.dense(x)
这里同样是定义了一个简单的 MLP 层,init 方法初始化了全连接层,call 方法定义了前向传播。
而 PyTorch 版本在上面已经有简单的示例。两种框架实现的思路相似,但语法略有不同,开发者可以根据自己的喜好和项目需求进行选择。
数据替换的便利性
TSMixer 的数据替换十分简单。这意味着如果我们在实际应用中有不同格式或者不同来源的数据,很容易将其适配到模型中。比如,从 CSV 文件读取数据后,可以很方便地进行预处理,然后转化为模型能够接受的张量格式。这对于快速迭代实验不同数据集的研究人员或者工程师来说,是非常实用的特性。
总之,谷歌的 TSMixer 模型凭借其简洁的 MLP 架构、灵活的预测能力、多框架支持以及数据替换的便利性,为时间序列预测领域带来了新的思路和工具。如果你对时间序列预测感兴趣,不妨深入研究一下这个模型,相信会有不少收获。
