Files
DeepTime/scratch-run_exp.ipynb
T
2022-11-22 16:58:41 +08:00

443 lines
41 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "b1e031e3",
"metadata": {},
"source": [
"- [x] try just one predictor\n",
" - [ ] multi input, single output\n",
"- [x] comparem ulti\n",
"- losses:\n",
" - try logp? nah\n",
" - mae?\n",
"- [x] make my own csv with 5m data (maybe 10k rows)\n",
"- [ ] backtest?"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "7f9e3d73",
"metadata": {
"ExecuteTime": {
"end_time": "2022-11-22T08:53:36.551710Z",
"start_time": "2022-11-22T08:53:36.541855Z"
}
},
"outputs": [],
"source": [
"import warnings\n",
"warnings.simplefilter(\"ignore\")\n",
"\n",
"# autoreload import your package\n",
"%load_ext autoreload\n",
"%autoreload 2"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "4e09086b",
"metadata": {
"ExecuteTime": {
"end_time": "2022-11-22T08:53:37.734688Z",
"start_time": "2022-11-22T08:53:36.553157Z"
},
"lines_to_next_cell": 0
},
"outputs": [],
"source": [
"import os\n",
"from os.path import join\n",
"import math\n",
"import logging\n",
"from typing import Callable, Optional, Union, Dict, Tuple\n",
"\n",
"from matplotlib import pyplot as plt\n",
"from pathlib import Path\n",
"import matplotlib.colors as mcolors\n",
"\n",
"import gin\n",
"from fire import Fire\n",
"import numpy as np\n",
"import torch\n",
"from torch.utils.data import DataLoader\n",
"from torch import optim\n",
"from torch import nn\n",
"\n",
"from experiments.base import Experiment\n",
"from data.datasets import ForecastDataset\n",
"from models import get_model\n",
"from utils.checkpoint import Checkpoint\n",
"from utils.ops import default_device, to_tensor\n",
"from utils.losses import get_loss_fn\n",
"from utils.metrics import calc_metrics\n",
"\n",
"from experiments.forecast import get_data\n",
"gin.enter_interactive_mode()"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "66d7f095",
"metadata": {
"ExecuteTime": {
"end_time": "2022-11-19T23:55:34.939075Z",
"start_time": "2022-11-19T23:55:34.820277Z"
}
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"id": "d4df5270",
"metadata": {},
"source": [
"# auto"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "04499bef",
"metadata": {
"ExecuteTime": {
"end_time": "2022-11-22T08:55:17.435474Z",
"start_time": "2022-11-22T08:55:17.366558Z"
}
},
"outputs": [],
"source": [
"\n",
"\n",
"def plot(model_name=\"deeptime\", save_path=Path(\"storage/experiments/Exchange/96M/repeat=0\"), i=200, title=None, plot=True):\n",
"\n",
" gin.clear_config()\n",
" gin.parse_config(open(save_path/\"config.gin\"))\n",
"\n",
" train_set, train_loader = get_data(flag='train', batch_size=2)\n",
"\n",
" model = get_model(model_name,\n",
" dim_size=train_set.data_x.shape[1],\n",
" datetime_feats=train_set.timestamps.shape[-1]).to(default_device())\n",
" model.load_state_dict(torch.load(save_path/'model.pth'))\n",
" model = model.eval()\n",
"\n",
"\n",
" b = train_set[i]\n",
" b = [bb[None, :] for bb in b]\n",
" b2 = list(map(to_tensor, b))\n",
" context_past_x, context_y, query_past_x, query_y, context_time, query_time = b2\n",
" with torch.no_grad():\n",
" forecast = model(*b2)\n",
"\n",
" if title is None:\n",
" title = str(save_path).split('/')[-3:]\n",
" title = \"-\".join(title)\n",
" \n",
" colors = list(mcolors.BASE_COLORS.keys())\n",
" l = x.shape[1]\n",
" forecast2 = forecast[0].detach().cpu().numpy()\n",
" x2 = x[0].cpu()\n",
" y2 = y[0].cpu()\n",
" l2 = y.shape[1]\n",
" i_past = list(range(l))\n",
" i_future = list(range(l, l+l2))\n",
" \n",
" if plot:\n",
" plt.title(title)\n",
" for i in range(x.shape[-1]):\n",
" plt.plot(i_past, x2[:, i], c=colors[i])\n",
" for i in range(x.shape[-1]):\n",
" plt.plot(i_future, y2[:, i], c=colors[i])\n",
" for i in range(x.shape[-1]):\n",
" plt.plot(i_future, forecast2[:, i], c=colors[i], linestyle='--')\n",
" return x2, y2, forecast2, i_past, i_future\n"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "768530be",
"metadata": {
"ExecuteTime": {
"end_time": "2022-11-22T08:57:21.879818Z",
"start_time": "2022-11-22T08:57:21.861767Z"
}
},
"outputs": [],
"source": [
"\n",
"\n",
"def plot_multi(save_paths=[Path(\"storage/experiments/Exchange/96M/repeat=0\")], i=200, title=None, plot=True):\n",
" for j in range(len(save_paths)):\n",
" save_path = save_paths[j]\n",
"\n",
" gin.clear_config()\n",
" gin.parse_config(open(save_path/\"config.gin\"))\n",
" model_name = gin.query_parameter(\"instance.model_type\")\n",
"\n",
" train_set, train_loader = get_data(flag='test', batch_size=3)\n",
"\n",
" model = get_model(model_name,\n",
" dim_size=train_set.data_x.shape[1],\n",
" datetime_feats=train_set.timestamps.shape[-1]).to(default_device())\n",
" model.load_state_dict(torch.load(save_path/'model.pth'))\n",
" model = model.eval()\n",
"\n",
"\n",
" b = train_set[i]\n",
" b = [bb[None, :] for bb in b]\n",
" b2 = list(map(to_tensor, b))\n",
" \n",
"# b = next(iter(train_loader))\n",
"# print([s.shape for s in b])\n",
" \n",
" context_past_x, context_y, query_past_x, query_y, context_time, query_time = b2\n",
" with torch.no_grad():\n",
" forecast = model(*b2)\n",
" \n",
" colors = list(mcolors.BASE_COLORS.keys())\n",
" l = context_time.shape[1]\n",
" forecast2 = forecast[0].detach().cpu().numpy()\n",
" x2 = context_y[0].cpu()\n",
" y2 = query_y[0].cpu()\n",
" l2 = query_time.shape[1]\n",
" i_past = list(range(l))\n",
" i_future = list(range(l, l+l2))\n",
"\n",
" if plot:\n",
" plt.plot(i_past, x2[:, 0], c=colors[0], label=f\"past\")\n",
" plt.plot(i_future, y2[:, 0], c=colors[0], label=\"future true\", alpha=0.3)\n",
" \n",
" mtitle = str(save_path).split('/')[-2:-1]\n",
" mtitle = \"-\".join(mtitle)\n",
" plt.plot(i_future, forecast2[:, 0], c=colors[j], linestyle='--', label=f\"{mtitle}\")\n",
" plt.legend()\n",
" plt.title(title)\n",
" return x2, y2, forecast2, i_past, i_future\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "739ee5e3",
"metadata": {
"ExecuteTime": {
"end_time": "2022-11-22T08:56:04.650373Z",
"start_time": "2022-11-22T08:56:04.631636Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[Path('storage/experiments/Stocks/96M/repeat=0/_SUCCESS'), Path('storage/experiments/Stocks/96M2S/repeat=0/_SUCCESS'), Path('storage/experiments/Stocks/96S/repeat=0/_SUCCESS'), Path('storage/experiments/Stocks/96Splus/repeat=0/_SUCCESS'), Path('storage/experiments/Stocks/96Splusshort/repeat=0/_SUCCESS'), Path('storage/experiments/Stocks/96Sshort/repeat=0/_SUCCESS')]\n"
]
}
],
"source": [
"# list the models we have run...\n",
"m=sorted(Path(\"storage/experiments/Stocks\").glob(\"**/_SUCCESS\"))\n",
"print(m)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "346138b5",
"metadata": {
"ExecuteTime": {
"end_time": "2022-11-22T08:55:45.864858Z",
"start_time": "2022-11-22T08:55:45.851119Z"
}
},
"outputs": [],
"source": [
"save_path = Path('storage/experiments/Stocks/96M2S/repeat=0')"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "4350db4f",
"metadata": {
"ExecuteTime": {
"end_time": "2022-11-22T08:55:46.474714Z",
"start_time": "2022-11-22T08:55:46.454494Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"'deeptime3'"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gin.clear_config()\n",
"config_path = save_path/\"config.gin\"\n",
"gin.parse_config(open(config_path))\n",
"model_name = gin.query_parameter(\"instance.model_type\")\n",
"model_name"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "f2b73437",
"metadata": {
"ExecuteTime": {
"end_time": "2022-11-22T08:55:47.115689Z",
"start_time": "2022-11-22T08:55:47.090582Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"<experiments.forecast.ForecastExperiment at 0x7fd6500a0070>"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from experiments.forecast import ForecastExperiment\n",
"exp = ForecastExperiment(config_path=config_path)\n",
"exp"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "6e8d5627",
"metadata": {
"ExecuteTime": {
"end_time": "2022-11-22T08:56:09.770735Z",
"start_time": "2022-11-22T08:56:09.752888Z"
}
},
"outputs": [],
"source": [
"# exp.run()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "5623579b",
"metadata": {
"ExecuteTime": {
"end_time": "2022-11-22T08:58:27.954931Z",
"start_time": "2022-11-22T08:58:27.717272Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"receptive field [114 342 362]=[38 18 2]*[[ 1 1 1]\n",
" [ 1 6 36]\n",
" [ 1 12 144]]\n",
"receptive field [690 378 242]=[138 18 2]*[[ 1 1 1]\n",
" [ 1 2 4]\n",
" [ 1 4 16]\n",
" [ 1 6 36]\n",
" [ 1 8 64]]\n"
]
},
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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OOvnHjt2jIEDBxIQEMBnn31GvXr1Koztrrvu4q233mL9+vVs3bqVhQsXXtiFiog40O7d8PPPUFAAQUFw5ZUQGursqMSRHNpYd/jwYYqLiwkLCyu3PywsjO3bt1d4zu7du1m+fDkjRoxg8eLF7Nq1i7/85S8UFhYybdq0M46fPn06Tz/99EXHWpX+WUcdW/n39Mff35/ff/+db7/9lpdeeglvb2969epFUlJSuWN37NhBixYtKnyfO++8kxkzZjBs2DAaNmxY4TE5OTnEx8fj4+PDF198UalBvtHR0dSvX5/cCxmcJCLiIMXFZnzO/yaw0qwZdO2qauV1Qa3rmbTb7TRp0oR//etfeHp60qNHDw4cOMDLL79cYbIzZcoUEhISSrdzcnJKZxi5m2+//RbLsmjfvj27du3i4YcfpkOHDowZMwaAhx9+mGHDhnHllVdyzTXXsGTJEr788ktWrFhR4fvFxMRw+PBh6tevX+HrOTk5DBgwgLy8PN5///1yLWehoaF4enry1FNPkZeXx3XXXUeLFi04evQos2bNorCwkD/84Q8O+XMQEamq3Fz45Rc4dgxsNujY0dS4krrBoclOSEgInp6eZGRklNufkZFBeHh4hedERERQr149PE9JtWNiYkhPT6egoABvb+9yx/v4+ODj41P9wddC2dnZTJkyhf3799OoUSOGDh3Kc889V9qtdPPNNzNnzhymT5/OfffdR/v27fn3v//NFVdccdb3bNy48VlfW79+PatXrwagzWmd2SkpKaXjqWbPns3IkSPJyMigYcOGdO/enf/85z+0b9++Gq5aROTipKXBhg1QVAQ+PmYQcqNGzo5KapJDkx1vb2969OjBsmXLGDJkCGBabpYtW8akSZMqPOfyyy/nww8/xG634/G/krI7duwgIiLijESnrrn11lu59dZbz3nMnXfeec7Bxnv27Dnn+UePHi19fvXVV3O+ZZiuueYarrnmmnMeIyLiDJYF27ZBcrLZbtTIrIasJbfqHofPxkpISODNN99k/vz5bNu2jXvuuYfc3NzSrpeRI0cyZcqU0uPvuecesrKyuP/++9mxYwdff/01zz//PBMnTnR0qCIi4iby803Zh5JEp3Vr6NtXiU5d5fAxO8OGDePQoUNMnTqV9PR0YmNjWbJkSemg5dTU1NIWHDClDL799lseeOABunbtStOmTbn/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CFlZprWmogKe//wnvPJK2fPGjWs2PhFxLCU7IuLWiovLppq3aVN+qnlBAdx9N0yYYLqvJkwwZSFExL0o2RERt7Z7N5w4Yaaan7768erVsGCBGb8zfTr84x/OiVFEHOscNX5FRFzbqVPNO3Y8c9Bxv36wZYspCKriniLuS8mOiLit7dtNN1bDhhVPNQdT7fxcFc9FxPWpG0tE3NLRo2VTzTt1KttvWWbm1TffOCUsEXECteyIiFvassX8bNasbKp5URFMmmRmXJUcc7ZCoCLiPpTsiIjbOXDgzKnmJ07A0KGmRcdmM2vpKNERqRuU7IiIWykuhm3bzPM2bcwsLIC//tUkOn5+8NFHcNNNzotRRGqWxuyIiFtJTjatOH5+ZVPNU1LKFg187z0lOiJ1jZIdEXEbJ07Arl3m+alTzR95BPLzzfTyW25xXnwi4hxKdkTEbWzdarqxGjWCyEizz26HVq1MS89rr51ZAFRE3J+SHRFxC0eOmBpYNht06VK238MDXnwR9u8vv19E6g4lOyLi8iyrrKp58+YQEACPP162ejKY1h4RqZuU7IiIy0tNhZwcqFcPOnSAn34yta7+9CfTrSUidZtDk52srCxGjBhBYGAgwcHBjB07luPHj5/z+HvvvZf27dvj5+dH8+bNue+++8jOznZkmCLiwgoLTVkIgPbtwdsbXn3VbF9yyZn1sESk7nFosjNixAi2bNnC0qVL+eqrr/jhhx8YP378WY8/ePAgBw8eZMaMGWzevJl58+axZMkSxo4d68gwRcSF7dgBBQWm6yo62szGWrTIvPbww86MTERqC5tlWZYj3njbtm107NiRX375hZ49ewKwZMkSrrvuOvbv309kyVSJ8/j444/585//TG5uLl5e518DMScnh6CgILKzswkMDLyoaxCR2u34cVixwozZufRSCA015SBmz4brroOvv3Z2hCJSWY78/nZYy05iYiLBwcGliQ5AXFwcHh4erF69utLvU3LRZ0t08vPzycnJKfcQkbphyxaT6ISHm0QnKwveece89uCDzo1NRGoPhyU76enpNGnSpNw+Ly8vGjVqRHp6eqXe4/Dhwzz77LPn7PqaPn06QUFBpY+oqKiLiltEXENmpnl4eJgFBC0LJkyAvDyIjYVrrnF2hCJSW1Q52Xnsscew2WznfGwvGS14EXJychg8eDAdO3bkqaee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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_multi(\n",
" save_paths=[\n",
" save_path,\n",
"# Path('storage/experiments/Stocks/96M/repeat=0'),\n",
" ],\n",
" i=100,\n",
")\n",
"1"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c95b4880",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"jupytext": {
"cell_metadata_filter": "-all",
"main_language": "python",
"notebook_metadata_filter": "-all"
},
"kernelspec": {
"display_name": "deeptime",
"language": "python",
"name": "deeptime"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.13"
},
"toc": {
"base_numbering": 1,
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"title_cell": "Table of Contents",
"title_sidebar": "Contents",
"toc_cell": false,
"toc_position": {},
"toc_section_display": true,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 5
}