Skip to content

Commit 7ed9705

Browse files
authored
Add Diffusion models (#70)
* add diffusion model notebook * diffusion model frrameworks * diffusion process * add diffusion examples * update * diffusion naive model * naive diffusion model * update diffusion models * encoder and decoder * add diffusion model * md lint
1 parent 81ff949 commit 7ed9705

File tree

8 files changed

+1563
-2
lines changed

8 files changed

+1563
-2
lines changed

dl/notebooks/diffusion_model.py

Lines changed: 845 additions & 0 deletions
Large diffs are not rendered by default.

dl/notebooks/diffusion_model_timegrad.py

Lines changed: 608 additions & 0 deletions
Large diffs are not rendered by default.

dl/notebooks/diffusion_process.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# ---
2+
# jupyter:
3+
# jupytext:
4+
# text_representation:
5+
# extension: .py
6+
# format_name: light
7+
# format_version: '1.5'
8+
# jupytext_version: 1.15.2
9+
# ---
10+
11+
# # Diffusion Process

dl/notebooks/tabpfn.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# ---
2+
# jupyter:
3+
# jupytext:
4+
# text_representation:
5+
# extension: .py
6+
# format_name: light
7+
# format_version: '1.5'
8+
# jupytext_version: 1.15.2
9+
# kernelspec:
10+
# display_name: .venv
11+
# language: python
12+
# name: python3
13+
# ---
14+
15+
# # TabPFN as Forecaster
16+
17+
import pandas as pd
18+
from ts_dl_utils.datasets.pendulum import Pendulum
19+
20+
pen = Pendulum(length=100)
21+
22+
df = pd.DataFrame(pen(300, 30, initial_angle=1, beta=0.00001))
23+
24+
25+
def time_delay_embed(df: pd.DataFrame, window_size: int) -> pd.DataFrame:
26+
"""embed time series into a time delay embedding space
27+
28+
Time column `t` is required in the input data frame.
29+
30+
:param df: original time series data frame
31+
:param window_size: window size for the time delay embedding
32+
"""
33+
dfs_embedded = []
34+
35+
for i in df.rolling(window_size):
36+
i_t = i.t.iloc[0]
37+
dfs_embedded.append(
38+
pd.DataFrame(i.reset_index(drop=True))
39+
.drop(columns=["t"])
40+
.T.reset_index(drop=True)
41+
# .rename(columns={"index": "name"})
42+
# .assign(t=i_t)
43+
)
44+
45+
df_embedded = pd.concat(dfs_embedded[window_size - 1 :])
46+
47+
return df_embedded
48+
49+
50+
df = time_delay_embed(df, 11)

dl/time-series/timeseries-data.analysis.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,5 @@ Terminologies for time series data may be different in different fields[^Hyndman
6161
[^Das2019]: Das P. Econometrics in Theory and Practice. Springer Nature Singapore; [doi:10.1007/978-981-32-9019-8](https://link.springer.com/book/10.1007/978-981-32-9019-8)
6262
[^Dawid2022]: Dawid P, Tewari A. On learnability under general stochastic processes. Harvard Data Science Review. 2022;
6363
[^Hyndman2020]: Hyndman R. Rob J Hyndman - Terminology matters. In: Rob J Hyndman [Internet]. 26 Jun 2020 [cited 9 Nov 2023]. Available: https://robjhyndman.com/hyndsight/terminology-matters/#same-concept-different-terminology
64-
4. [doi:10.1162/99608f92.dec7d780](https://hdsr.mitpress.mit.edu/pub/qixx99zn/release/1)
64+
65+
1. [doi:10.1162/99608f92.dec7d780](https://hdsr.mitpress.mit.edu/pub/qixx99zn/release/1)

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ nav:
262262
- "Generate Time Series Using Statistics": notebooks/time-series-data-generation.py
263263
- "Generate Time Series Using VAE": notebooks/time_vae.py
264264
- "Comparing Time Series": notebooks/timeseries-comparison.py
265+
- "Diffusion Models": notebooks/diffusion_model.py
265266
- "Small Yet Powerful Concepts":
266267
- concepts/index.md
267268
- "Entropy": concepts/entropy.md

poetry.lock

Lines changed: 45 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ jupytext = "^1.15.2"
3333
[tool.poetry.group.visualization.dependencies]
3434
seaborn = "^0.13.2"
3535
opentsne = "^1.0.2"
36+
plotly = "^6.1.1"
3637

3738

3839
[tool.poetry.group.data.dependencies]

0 commit comments

Comments
 (0)