Commit 23df87ec authored by suily's avatar suily
Browse files

README修改算法原理

parent 18dced17
...@@ -3,28 +3,27 @@ ...@@ -3,28 +3,27 @@
`A decoder-only foundation model for time-series forecasting` `A decoder-only foundation model for time-series forecasting`
- https://arxiv.org/abs/2310.10688 - https://arxiv.org/abs/2310.10688
## 模型结构 ## 模型结构
TimesFM是一种基于区块的decoder-only模型,应用了自注意力机制和传统的位置编码,主要由三个组件组成:输入层、Transformer层和输出层。 TimesFM是一种基于区块的decoder-only模型,应用了自注意力机制和传统的位置编码,主要由三个组件组成:输入层、Transformer层和输出层。
<div align=center>
<img src="./doc/timesfm.png"/>
</div>
## 算法原理
1、输入层:将时间序列数据分割成相等长度的时序数据块(patch),然后通过残差块对每个时序数据块进行线性变化,进而得到Token。 1、输入层:将时间序列数据分割成相等长度的时序数据块(patch),然后通过残差块对每个时序数据块进行线性变化,进而得到Token。
2、Transformer层:应用了位置编码和自注意力机制。位置编码将时间信息注入Token(令牌)序列;自注意力允许模型学习序列中不同标记之间的依赖关系和关系;位置编码介入自注意力的构造意味着模型可以适应数据中不同的时间粒度和频率。 2、Transformer层:应用了位置编码和自注意力机制。位置编码将时间信息注入Token(令牌)序列;自注意力允许模型学习序列中不同标记之间的依赖关系和关系;位置编码介入自注意力的构造意味着模型可以适应数据中不同的时间粒度和频率。
3、输出层:使用层归一化和残差连接,将输出Token映射到最终预测。 3、输出层:使用层归一化和残差连接,将输出Token映射到最终预测。
TimesFM在真实世界的大型时间序列语料库上进行了预训练,可以为未见过的数据集生成可变长度的预测。 <div align=center>
<img src="./doc/timesfm.png"/>
</div>
## 算法原理
TimesFM是google research推出的一种时序预测基础模型,在真实世界的大型语料库上进行了预训练。TimesFM能够适应不同的上下文和预测长度,并且与最新的LLM相比体量更小(200M参数),同时在未见过的数据集上也能zero-shot预测。具体的,TimesFM对时间序列进行分块和位置编码注入,再通过堆叠的Transformer层提炼出数据中的时间顺序信息和不同时间点的关系。
<div align=center> <div align=center>
<img src="./doc/timesfm.png"/> <img src="./doc/timesfm.png"/>
</div> </div>
## 环境配置 ## 环境配置
注意:本仓库中的tensorflow只应用于长期基准测试读取数据集,运行源码发生了OOM错误,目前认为是tf-gpu与jax-gpu的内存分配冲突导致:-[GPU memory allocation — JAX documentation](https://jax.readthedocs.io/en/latest/gpu_memory_allocation.html) 注意:本仓库中的tensorflow只应用于长期基准测试读取数据集,运行源码发生了OOM错误,目前认为是tf-gpu与jax-gpu的内存分配冲突导致:[GPU memory allocation — JAX documentation](https://jax.readthedocs.io/en/latest/gpu_memory_allocation.html)。解决方法:
解决方法:
``` ```
1、安装tf-gpu,但在timesfm/experiments/long_horizon_benchmarks/data_loader.py中添加: 1、安装tf-gpu,但在timesfm/experiments/long_horizon_benchmarks/data_loader.py中添加:
tf.config.experimental.set_visible_devices([], "GPU") tf.config.experimental.set_visible_devices([], "GPU")
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment