autodl-projects/notebooks/TOT/synthetic-env.ipynb
2021-04-22 20:31:20 +08:00

264 lines
103 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "filled-multiple",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The root path: /Users/xuanyidong/Desktop/AutoDL-Projects\n",
"The library path: /Users/xuanyidong/Desktop/AutoDL-Projects/lib\n"
]
}
],
"source": [
"import os, sys\n",
"import torch\n",
"from pathlib import Path\n",
"import numpy as np\n",
"import matplotlib\n",
"from matplotlib import cm\n",
"# matplotlib.use(\"agg\")\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.ticker as ticker\n",
"\n",
"\n",
"__file__ = os.path.dirname(os.path.realpath(\"__file__\"))\n",
"root_dir = (Path(__file__).parent / \"..\").resolve()\n",
"lib_dir = (root_dir / \"lib\").resolve()\n",
"print(\"The root path: {:}\".format(root_dir))\n",
"print(\"The library path: {:}\".format(lib_dir))\n",
"assert lib_dir.exists(), \"{:} does not exist\".format(lib_dir)\n",
"if str(lib_dir) not in sys.path:\n",
" sys.path.insert(0, str(lib_dir))\n",
"\n",
"from datasets import SynAdaptiveEnv\n",
"from xlayers.super_core import SuperSequential, SuperMLPv1"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "detected-second",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"SynAdaptiveEnv(100/100 elements\n",
"amplitude=QuadraticFunction(y = 4.8680419921875 * x^2 + 3.565875291824341 * x + 0.9999021291732788),\n",
")period_phase_shift=QuadraticFunction(y = 0.00021915265824645758 * x^2 + 0.9999573826789856 * x + -1.2333193808444776e-05)\n"
]
},
{
"data": {
"image/png": "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1ANbt27NhAkTsnr16vTp0yc9evQoehIAAABAnSSmAQAAAKjjNm/enHHjxuWDDz7IgAEDcuyxxxY9CQAAAKDOEtMAAAAA1GEff/xxbrrppmzatCnDhg3LkUceWfQkAAAAgDpNTAMAAABQR61duzbjxo3Ll19+mdGjR6dr165FTwIAAACo88Q0AAAAAHXQ6tWrM378+FRWVub666/PgQceWPQkAAAAgHpBTAMAAABQxyxfvjyTJ09Oq1atMmrUqOy///5FTwIAAACoN8Q0AAAAAHXI0qVLc8stt6RDhw4ZOXJkWrVqVfQkAAAAgHpFTAMAAABQRzz33HO544470rVr1wwbNizNmzcvehIAAABAvSOmAQAAAKgDHn300dx7773p3r17Bg4cmKZNmxY9CQAAAKBeEtMAAAAA1GLlcjn33XdfHn300Rx//PHp27dvGjd2pAMAAABQU5y8AAAAANRSVVVVmTNnTp577rmcdtpp6d27dyoqKoqeBQAAAFCviWkAAAAAaqGdO3dmxowZWbp0ac4777xccMEFKZVKRc8CAAAAqPfENAAAAAC1zPbt2zN58uQsX748l112Wc4666yiJwEAAAA0GGIaAAAAgFpky5YtGT9+fN5999306dMnPXr0KHoSAAAAQIMipgEAAACoJTZu3Jhx48Zl/fr1GTRoUI4++uiiJwEAAAA0OGIaAAAAgFpg/fr1uemmm/L5559nxIgR+bd/+7eiJwEAAAA0SGIaAAAAgIK99957GTduXHbt2pWxY8emS5cuRU8CAAAAaLDENAAAAAAFWrVqVcaPH59mzZplzJgx6dChQ9GTAAAAABo0MQ0AAABAQd58881MmTIlrVu3zqhRo9K6deuiJwEAAAA0eGIaAAAAgAK89NJLmTlzZjp16pQRI0akZcuWRU8CAAAAIGIaAAAAgD3uySefzF133ZXDDjssQ4cOTbNmzYqeBAAAAMDfiGkAAAAA9pByuZz77rsvjz76aI499tj069cvlZWVRc8CAAAA4O+IaQAAAAD2gF27dmX27Nl5/vnnc9ppp6V3796pqKgoehYAAAAA/0BMAwAAAFDDtm/fnmnTpuXNN9/MBRdckPPOOy+lUqnoWQAAAAB8BTENAAAAQA3asmVLJkyYkLfffjtXX311TjnllKInAQAAAPAviGkAAAAAasinn36acePG5eOPP87A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Cy9MqVQqehYAAAAADZyYBgAAANjj1q9fnwkTJuTjjz9O3759c9JJJxU9CQAAAACSiGkAAACAPWzlypWZPHlySqVSRo8enUMPPbToSQAAAADw38Q0AAAAwB7z3HPPZc6cOWnfvn2GDRuW/fffv+hJAAAAAPA/iGkAAACAGldVVZV77703jz/+eI488sgMGDAge+21V9GzAAAAAOB/EdMAAAAANWrbtm2ZMWNGXn/99Zxxxhm5/PLLU1FRUfQsAAAAAPhKYhoAAACgxnz66aeZOHFi1q5dm5///Oc5/fTTi54EAAAAAP+SmAYAAACoEatXr87kyZPz5ZdfZvjw4TnyyCOLngQAAAAAX0tMAwAAAFS7l156Kbfeemv23XffjBkzJh06dCh6EgAAAADsFjENAAAAUG3K5XIeeuihPPTQQzn00EMzaNCg7L333kXPAgAAAIDdJqYBAAAAqsWOHTty6623ZsmSJenRo0euuuqqNG7s6AEAAACAusWJFgAAAPCdbd68ORMnTsy7776biy++OD179kypVCp6FgAAAAB8Y2IaAAAA4Dt57733MmHChGzZsiWDBg3KD3/4w6InAQAAAMC3JqYBAAAAvrXXXnstM2bMSPPmzfPrX/86nTt3LnoSAAAAAHwnYhoAAADgGyuXy3n88cdz7733pkuXLhkyZEj22WefomcBAAAAwHcmpgEAAAC+kZ07d2bu3LlZvHhxfvSjH6Vv375p0qRJ0bMAAAAAoFqIaQAAAIDd9tlnn2XKlCn5y1/+kvPPPz+9evVKqVQqehYAAAAAVBsxDQAAALBb/vrXv2bSpEn57LPP0r9//xx//PFFTwIAAACAaiemAQAAAL7W0qVLM2vWrDRv3jzXX399unTpUvQkAAAAAKgRYhoAAADgnyqXy3nooYfy0EMPpWvXrhk8eHBatWpV9CwAAAAAqDFiGgAAAOArbd++PbNmzcorr7ySHj165Kqrrkrjxo4SAAAAAKjfnIABAAAA/8snn3ySSZMm5f33389ll12WM888M6VSqehZAAAAAFDjxDQAAADA//DWW29lypQp2bVrV4YPH57u3bsXPQkAAAAA9hgxDQAAAPDfFi1alDvvvDNt27bN0KFD0759+6InAQAAAMAeJaYBAAAAsmvXrtx111155plnctRRR6V///7Za6+9ip4FAAAAAHucmAYAAAAauM8//zxTp07NypUr07Nnz1x00UWpqKgoehYAAAAAFEJMAwAAAA3Y+++/n0mTJmXjxo259tprc+KJJxY9CQAAAAAKJaYBAACABurVV1/NzJkz06xZs/zqV7/KIYccUvQkAAAAACicmAYAAAAamHK5nIcffjgPPPBADj744AwePDj77rtv0bMAAAAAoFYQ0wAAAEAD8uWXX+a2227LkiVLcsIJJ+QXv/hFKisri54FAAAAALWGmAYAAAAaiE8//TSTJk3Ke++9l4svvjg9e/ZMqVQqehYAAAAA1CpiGgAAAGgAVq1alcmTJ2fHjh0ZOnRovv/97xc9CQAAAABqJTENAAAA1HOLFy/OnDlz0qZNm4wdOzYdOnQoehIAAAAA1FpiGgAAAKindu7cmQULFuSZZ57JEUcckeuuuy4tWrQoehYAAAAA1GpiGgAAAKiHNm/enKlTp+Yvf/lLevbsmYsuuigVFRVFzwIAAACAWk9MAwAAAPXM22+/nSlTpmTLli3p379/jj/++KInAQAAAECdIaYBAACAemTx4sWZO3du9tlnn/znf/5nOnXqVPQkAAAAAKhTxDQAAABQD+zcuTN33XVXfv/73+eII47IddddlxYtWhQ9CwAAAADqHDENAAAA1HGbN2/OlClTsmrVqvTs2TMXXXRRKioqip4FAAAAAHWSmAYAAADqsNWrV2fq1KnZunVrrrvuuhx33HFFTwIAAACAOk1MAwAAAHXUc889lzvvvDP77rtv/s//+T/p1KlT0ZMAAAAAoM4T0wAAAEAds3PnzsyfPz+LFi3KkUcemf79+6dFixZFzwIAAACAekFMAwAAAHXIpk2bMnXq1KxatSpnn312LrzwwlRUVBQ9CwAAAADqDTENAAAA1BGrV6/OlClT8sUXX+S6667LcccdV/QkAAAAAKh3xDQAAABQBzz77LO58847s99++2XkyJHp2LFj0ZMAAAAAoF4S0wAAAEAttnPnzsybNy/PPvtsunfvnl/+8pdp0aJF0bMAAAAAoN4S0wAAAEAttXHjxkydOjWrV6/OueeemwsuuCAVFRVFzwIAAACAek1MAwAAALXQqlWrMmXKlGzfvj0DBw7MscceW/QkAAAAAGgQxDQAAABQyzz77LO5884707p164wePToHHnhg0ZMAAAAAoMEQ0wAAAEAtsWPHjtx5551ZvHhxunfvnv79+6d58+ZFzwIAAACABkVMAwAAALXAxx9/nKlTp2bNmjU577zz0qtXr1RUVBQ9CwAAAAAaHDENAAAAFOzNN9/MjBkzUi6XM3To0PzgBz8oehIAAAAANFhiGgAAAChIuVzOQw89lIULF6Zjx44ZNGhQ2rZtW/QsAAAAAGjQxDQAAABQgC1btmTGjBlZtmxZTjrppFx55ZVp0qRJ0bMAAAAAoMET0wAAAMAetmbNmkyZMiWbNm3KVVddlVNOOSWlUqnoWQAAAABAxDQAAACwRy1evDhz585Ny5Ytc/311+fggw8uehIAAAAA8HfENAAAALAH7NixI3feeWcWL16cI444Iv3798/ee+9d9CwAAAAA4B+IaQAAAKCGffLJJ5kyZUrWrFmTc889NxdccEEqKiqKngUAAAAAfAUxDQAAANSgZcuWZcaMGamqqsqQIUNy9NFHFz0JAAAAAPgXxDQAAABQA8rlchYuXJiHHnooHTt2zMCBA9OuXbuiZwEAAAAAX0NMAwAAANVsy5YtmTlzZt58882ceOKJueqqq9KkSZOiZwEAAAAAu0FMAwAAANVozZo1mTJlSjZu3Jgrr7wyp556akqlUtGzAAAAAIDdJKYBAACAarJ48eLMnTs3LVu2zPXXX59DDjmk6EkAAAAAwDckpgEAAIDvaMeOHZk3b16ee+65HH744enfv39atmxZ9CwAAAAA4FsQ0wAAAMB38Mknn2Tq1Kl59913c+655+aCCy5IRUVF0bMAAAAAgG9JTAMAAADf0htvvJFZs2Zl165dGTJkSI4++uiiJwEAAAAA35GYBgAAAL6hqqqq3H///Xn00UfTuXPnDBgwIO3atSt6FgAAAABQDcQ0AAAA8A1s3Lgxt9xyS956662ccsopueKKK1JZWVn0LAAAAACgmohpAAAAYDctX748M2bMyJdffpl+/frlhBNOKHoSAAAAAFDNxDQAAADwNaqqqrJw4cIsXLgwHTp0yIABA9KhQ4eiZwEAAAAANUBMAwAAAP/C5s2bM2PGjKxYsSInnnhirrzyyjRt2rToWQAAAABADRHTAAAAwD/x1ltvZfr06dm6dWuuueaa9OjRI6VSqehZAAAAAEANEtMAAADAPyiXy3n00Udz//33p23bthkxYkQ6depU9CwAAAAAYA8Q0wAAAMDf2bJlS2bOnJk333wzxx13XH7xi1+kWbNmRc8CAAAAAPYQMQ0AAAD8zerVqzNt2rR89tln+fnPf57TTjvNtU4AAAAA0MCIaQAAAGjwyuVynnzyydxzzz1p3bp1fv3rX6dLly5FzwIAAAAACiCmAQAAoEHbunVrbr/99rzyyiv54Q9/mD59+qR58+ZFzwIAAAAACiKmAQAAoMF69913M23atHz66ae57LLLcuaZZ7rWCQAAAAAaODENAAAADU65XM6iRYty1113pWXLlvnVr36Vbt26FT0LAAAAAKgFxDQAAAA0KNu2bcsdd9yRl156Kd27d0+/fv2y9957Fz0LAAAAAKglxDQAAAA0GO+9916mTZuW9evX58ILL8w555zjWicAAAAA4H8Q0wAAAFDv/f21Ts2bN8+YMWNy2GGHFT0LAAAAAKiFxDQAAADUa1u3bs3s2bOzdOnSdO/ePddee21atmxZ9CwAAAAAoJYS0wAAAFBvrV69Orfccks2bNiQSy65JD/96U9d6wQAAAAA/EtiGgAAAOqdcrmcxx57LPfff3/222+/XH/99enatWvRswAAAACAOkBMAwAAQL3y2WefZdasWVm2bFmOPfbY/OIXv0jz5s2LngUAAAAA1BFiGgAAAOqNFStWZMaMGfniiy9y1VVX5ZRTTnGtEwAAAADwjYhpAAAAqPOqqqry4IMP5uGHH0779u0zatSodOzYsehZAAAAAEAdJKYBAACgTtuwYUNuueWW/OUvf0mPHj3Su3fvNG3atOhZAAAAAEAdJaYBAACgznrttddy6623ZteuXenXr19OOOGEoicBAAAAAHWcmAYAAIA6Z+fOnbnnnnvy1FNP5aCDDsp1112Xdu3aFT0LAAAAAKgHxDQAAADUKevXr8/06dOzZs2anHnmmbn44ovTuLHHWwAAAACgejhtBAAAoM544YUXMmfOnDRu3DhDhgzJ0UcfXfQkAAAAAKCeEdMAAABQ623fvj3z5s3LH/7wh3zve99L//79s99++xU9CwAAAACoh8Q0AAAA1Grvvfdepk+fng8//DDnnXdeevXqlYqKiqJnAQAAAAD1lJgGAACAWqlcLufZZ5/N/Pnz07x584waNSqHH3540bMAAAAAgHpOTAMAAECt8/nnn+f222/Pa6+9lu7du+faa69Ny5Yti54FAAAAADQAYhoAAABqlRUrVmTWrFn5/PPPc9lll+XMM89MqVQqehYAAAAA0ECIaQAAAKgVdu7cmQceeCCPP/542rdvn2HDhqVz585FzwIAAAAAGhgxDQAAAIX78MMPM2PGjLz77rs59dRTc9lll6VJkyZFzwIAAAAAGiAxDQAAAIUpl8v5wx/+kHnz5qWysjKDBw/OD3/4w6JnAQAAAAANmJgGAACAQmzdujWzZ8/O0qVLc/jhh+faa6/NvvvuW/QsAAAAAKCBE9MAAACwx61cuTIzZ87Mpk2bcvHFF6dnz54plUpFzwIAAAAAENMAAACw5+zatSsPPvhgHnnkkbRt2zb/+Z//mS5duhQ9CwAAAADgv4lpAAAA2CPWr1+fGTNm5J133snJJ5+cK664Ik2bNi16FgAAAADA/yCmAQAAoEaVy+X88Y9/zJ133plGjRpl4MCBOfbYY4ueBQAAAADwlcQ0AAAA1JitW7dmzpw5WbJkSQ499ND88pe/zH777Vf0LAAAAACAf0pMAwAAQI34y1/+khkzZmTjxo258MILc/bZZ6eioqLoWQAAAAAA/5KYBgAAgGpVVVWVhQsXZuHChWnTpk1+/etf55BDDil6FgAAAADAbhHTAAAAUG0+/vjjzJgxI6tXr86JJ56Yn//852nWrFnRswAAAAAAdpuYBgAAgO+sXC7nxRdfzNy5c5Mk/fv3z/HHH1/wKgAAAACAb05MAwAAwHeyZcuWzJkzJy+//HK6deuWX/7yl2nTpk3RswAAAAAAvhUxDQAAAN/asmXLctttt+Xzzz/PRRddlJ49e6aioqLoWQAAAAAA35qYBgAAgG/syy+/zL333punn346HTp0yPDhw9O5c+eiZwEAAAAAfGdiGgAAAL6Rd999NzNnzsy6dety5pln5qKLLkplZWXRswAAAAAAqoWYBgAAgN1SVVWVRx55JA8++GBatWqVUaNG5Ygjjih6FgAAAABAtRLTAAAA8LU++uijzJw5M6tXr87xxx+fK6+8Ms2bNy96FgAAAABAtRPTAAAA8E+Vy+U899xzWbBgQSoqKtK/f/8cf/zxRc8CAAAAAKgxYhoAAAC+0ubNmzN79uy8/vrrOfzww9O3b9/st99+Rc8CAAAAAKhRYhoAAAD+l9deey2zZ8/OF198kcsvvzw/+clPUiqVip4FAAAAAFDjxDQAAAD8t23btuWuu+7K4sWL07lz54wZMyYHHnhg0bMAAAAAAPYYMQ0AAABJklWrVmXmzJn55JNPcs4556RXr15p3NhjIwAAAADQsDgVBQAAaOB27tyZhQsX5uGHH07r1q0zduzYHHrooUXPAgAAAAAohJgGAACgAfvggw8yc+bMrFmzJj169MgVV1yRZs2aFT0LAAAAAKAwYhoAAIAGqFwu55lnnsk999yTpk2bZtCgQTnmmGOKngUAAAAAUDgxDQAAQAPzySef5Lbbbsuf//znHHXUUenTp09atWpV9CwAAAAAgFpBTAMAANBAlMvlPPfcc1mwYEFKpVKuueaa9OjRI6VSqehpAAAAAAC1hpgGAACgAdi4cWNuv/32LFu2LIcffniuueaatGnTpuhZAAAAAAC1jpgGAACgHiuXy3nhhRcyf/787Ny5Mz//+c9z2mmneRsNAAAAAMA/IaYBAACopzZv3pw77rgjr732Wrp165a+ffumXbt2Rc8CAAAAAKjVxDQAAAD10Msvv5w5c+Zk+/btufTSS3PmmWemoqKi6FkAAAAAALWemAYAAKAe2bJlS+bOnZslS5bk4IMPTt++fdOhQ4eiZwEAAAAA1BliGgAAgHritddeyx133JEtW7bkZz/7Wc455xxvowEAAAAA+IbENAAAAHXc1q1bM3/+/Pzxj39Mp06dMnLkyHTq1KnoWQAAAAAAdZKYBgAAoA5btmxZbr/99mzevDnnnXdezj///DRu7FEPAAAAAODbcsIKAABQB23bti133313nn322XTo0CGDBw/OwQcfXPQsAAAAAIA6T0wDAABQx6xcuTK33nprPv300/Ts2TMXXHBBKisri54FAAAAAFAviGkAAADqiC+//DL33XdfnnrqqbRr1y7XX399unXrVvQsAAAAAIB6RUwDAABQB6xatSq33npr1q9fnzPOOCMXXXRRmjZtWvQsAAAAAIB6R0wDAABQi23fvj0PPPBAnnrqqbRu3TqjR4/O4YcfXvQsAAAAAIB6S0wDAABQS/35z3/O7bffno8//jinn356Lr74Ym+jAQAAAACoYWIaAACAWmbbtm255557smjRorRr1y6/+tWvcuihhxY9CwAAAACgQRDTAAAA1CLLli3L7Nmzs3Hjxpx11ln52c9+liZNmhQ9CwAAAACgwRDTAAAA1AJbt27NggUL8oc//CEdOnTIr3/963Tt2rXoWQAAAAAADY6YBgAAoGCvvfZa5syZk88++yznnntuzj///FRWVhY9CwAAAACgQRLTAAAAFOTzzz/PvHnz8tJLL6VTp04ZNmxYDjrooKJnAQAAAAA0aGIaAACAPaxcLufll1/OvHnzsnXr1vTq1SvnnHNOGjf2iAYAAAAAUDQntQAAAHvQ5s2bM3fu3Lzyyivp0qVLRo8enY4dOxY9CwAAAACAvxHTAAAA7AHlcjkvvPBC5s+fny+//DIXX3xxfvrTn6aioqLoaQAAAAAA/B0xDQAAQA3bsGFD5syZkzfeeCPdunVLnz590r59+6JnAQAAAADwFcQ0AAAANaRcLmfx4sVZsGBBdu3alcsvvzxnnHGGt9EAAAAAANRiYhoAAIAa8Mknn2T27NlZvnx5DjvssFxzzTVp27Zt0bMAAAAAAPgaYhoAAIBqVFVVlaeffjoPPPBAkuSqq67KKaecklKpVPAyAAAAAAB2h5gGAACgmrz33nuZPXt23nnnnRx11FG56qqr0rp166JnAQAAAADwDYhpAAAAvqMdO3bkoYceymOPPZYWLVqkf//+Oe6447yNBgAAAACgDhLTAAAAfAcrVqzInDlzsn79+vTo0SOXXnppWrRoUfQsAAAAAAC+JTENAADAt7Bly5bcc889Wbx4cdq2bZvRo0fn8MMPL3oWAAAAAADfkZgGAADgGyiXy3n55Zczb968bNmyJWeffXZ69eqVysrKoqcBAAAAAFANxDQAAAC76dNPP83cuXPzxhtvpEuXLhk5cmQ6d+5c9CwAAAAAAKqRmAYAAOBrVFVV5fe//33uu+++lMvlXHbZZfnJT36SioqKoqcBAAAAAFDNxDQAAAD/wtq1a3P77bfn7bffTvfu3XPllVdm//33L3oWAAAAAAA15GtjmlKpNDPJfyRZXy6Xj6r5SQAAAMXbsWNHfve73+WRRx5J8+bN069fv/z4xz9OqVQqehoAAAAAADVod95Mc2uSCUlur9kpAAAAtcNbb72V2bNn58MPP8yJJ56Yyy67LHvvvXfRswAAAAAA2AO+NqYpl8uLSqXSwXtgCwAAQKG2bt2ae++9N88++2z233//jBw5MkceeWTRswAAAAAA2IN25800u6VUKg1IMiBJDjrooOr6tQAAADWuXC7nlVdeyZ133pnPPvssPXv2zH/8x3+kadOmRU8DAAAAAGAPq7aYplwuT0syLUmOO+64cnX9XgAAgJr0ySefZN68eXn99dfTuXPnDBs2LF26dCl6FgAAAAAABam2mAYAAKAu2bVrV5544ok89NBDSZJLLrkkZ511VioqKgpeBgAAAABAkcQ0AABAg7Nq1arccccdWbt2bY4++uj07t07rVu3LnoWAAAAAAC1wNfGNKVS6c4kpyfZv1QqvZfk/1sul2fU9DAAAIDqtmXLltx777157rnnst9++2XIkCE5+uiji54FAAAAAEAt8rUxTblc/vmeGAIAAFBTyuVyXnjhhSxYsCBbt25Nz5498x//8R9p2rRp0dMAAAAAAKhlXPMEAADUa+vWrcucOXOycuXKdO3aNVdddVU6depU9CwAAAAAAGopMQ0AAFAv7dixI7/73e/y6KOPpmnTprn66qvz7//+7ymVSkVPAwAAAACgFhPTAAAA9c6f/vSnzJ07Nx999FFOOOGEXHrppWnVqlXRswAAAAAAqAPENAAAQL2xadOm3HXXXVmyZEnat2+f0aNH5/DDDy96FgAAAAAAdYiYBgAAqPOqqqqyaNGi3Hfffdm5c2d69eqVc845J40be+QBAAAAAOCbcbIMAADUaWvWrMmcOXPyzjvv5IgjjsiVV16Zdu3aFT0LAAAAAIA6SkwDAADUSdu2bctvf/vbPPXUU2nZsmX69++f4447LqVSqehpAAAAAADUYWIaAACgTimXy3nllVcyf/78bNq0Kaeddlp+9rOfpXnz5kVPAwAAAACgHhDTAAAAdcaHH36YefPm5U9/+lM6d+6cQYMG5ZBDDil6FgAAAAAA9YiYBgAAqPW2b9+ehx9+OI899liaNGmS3r1757TTTktFRUXR0wAAAAAAqGfENAAAQK31/650uuuuu7Jhw4acdNJJufjii9OqVauipwEAAAAAUE+JaQAAgFpp3bp1mTdvXpYvX57OnTvnuuuuS7du3YqeBQAAAABAPSemAQAAapXt27dn4cKFeeKJJ1zpBAAAAADAHiemAQAAaoVyuZylS5dmwYIF2bBhQ3r06JGLL744LVu2LHoaAAAAAAANiJgGAAAonCudAAAAAACoLcQ0AABAYf7xSqef//znOfXUU13pBAAAAABAYcQ0AADAHudKJwAAAAAAaisxDQAAsEetW7cud955Z1asWJHOnTtnwIAB6dq1a9GzAAAAAAAgiZgGAADYQ/7+SqemTZu60gkAAAAAgFpJTAMAANSocrmcl19+OQsWLMjGjRtz8skn56KLLnKlEwAAAAAAtZKYBgAAqDHvvfde5s+fn5UrV6Zz584ZOHCgK50AAAAAAKjVxDQAAEC127JlSx544IEsWrQozZs3z5VXXplTTjnFlU4AAAAAANR6YhoAAKDaVFVV5fe//31++9vfZtu2bTn99NPTq1evtGjRouhpAAAAAACwW8Q0AABAtVi+fHnuuuuurF27NkcccUQuv/zyHHjggUXPAgAAAACAb0RMAwAAfCcff/xxFixYkFdffTX7779/hgwZkh/84AcplUpFTwMAAAAAgG9MTAMAAHwr27dvz8MPP5zHH388jRo1yoUXXpizzjorlZWVRU8DAAAAAIBvTUwDAAB8I+VyOS+++GLuvffebNy4MSeeeGIuuuii7LvvvkVPAwAAAACA70xMAwAA7LZ33nkn8+fPz+rVq3PwwQdn4MCB6dq1a9GzAAAAAACg2ohpAACAr7V58+bcd999+cMf/pBWrVqlT58+Oemkk1IqlYqeBgAAAAAA1UpMAwAA/FM7d+7MU089lYULF2bHjh05++yzc95556VZs2ZFTwMAAAAAgBohpgEAAP6XcrmcN954IwsWLMj69evzgx/8IJdddlnatWtX9DQAAAAAAKhRYhoAAOB/WLduXe66664sW7YsBxxwQEaMGJHu3bsXPQsAAAAAAPYIMQ0AAJAk+fzzz/PQQw/l97//fZo2bZrLL788p59+eho1alT0NAAAAAAA2GPENAAA0MDt3LkzTz/9dBYuXJht27bl1FNPTa9evdKyZcuipwEAAAAAwB4npgEAgAaqXC7nlVdeyT333JOPP/44Rx11VC655JIceOCBRU8DAAAAAIDCiGkAAKABeuedd7JgwYL85S9/yYEHHpgRI0ake/fuRc8CAAAAAIDCiWkAAKAB2bBhQ+6777688ML/v717C9KyTvA8/3sSUiARSIqzkMkpOSUpIoiIBwQPpVa1h2rLbqvasqqiuqo7amejL2evdi/mZvZiI3Y3dmYnOiY6JuZmO2K6a9QqT2UpNFIcRBGRg4pykOQgJiAghzST99mLeiunrNIWFfLNw+cT8UaamU8Yv7zxn/B+fZ7NGTVqVB577LHccsstqaurq/U0AAAAAADoE8Q0AAAwCFy4cCHPP/98XnjhhZRlmfvuuy/33ntvhg8fXutp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\n",
"text/plain": [
"<Figure size 2880x2880 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"def visualize_q_func():\n",
" # save_dir = (save_path / '..').resolve()\n",
" # save_dir.mkdir(parents=True, exist_ok=True)\n",
" \n",
" dpi, width, height = 10, 400, 400\n",
" figsize = width / float(dpi), height / float(dpi)\n",
" LabelSize, LegendFontsize, font_gap = 40, 40, 5\n",
" \n",
" fig = plt.figure(figsize=figsize)\n",
" \n",
" dataset = SynAdaptiveEnv()\n",
" print(dataset)\n",
" xaxis, yaxis = [], []\n",
" for idx, position, value in dataset:\n",
" xaxis.append(position)\n",
" yaxis.append(value)\n",
" \n",
" def draw_ax(cur_ax, xaxis, yaxis, xlabel, ylabel,\n",
" alpha=0.1, color='k', linestyle='-', legend=None, plot_only=False):\n",
" if legend is not None:\n",
" cur_ax.plot(xaxis[:1], yaxis[:1], color=color, label=legend)\n",
" \n",
" if not plot_only:\n",
" cur_ax.set_xlabel(xlabel, fontsize=LabelSize)\n",
" cur_ax.set_ylabel(ylabel, rotation=0, fontsize=LabelSize)\n",
" for tick in cur_ax.xaxis.get_major_ticks():\n",
" tick.label.set_fontsize(LabelSize - font_gap)\n",
" tick.label.set_rotation(10)\n",
" for tick in cur_ax.yaxis.get_major_ticks():\n",
" tick.label.set_fontsize(LabelSize - font_gap)\n",
" \n",
" cur_ax = fig.add_subplot(1, 1, 1)\n",
" cur_ax.plot(xaxis, yaxis, color=\"k\", linestyle=\"-\", alpha=0.6, label=None)\n",
"\n",
" # fig.savefig(save_path, dpi=dpi, bbox_inches=\"tight\", format=\"pdf\")\n",
" # plt.close(\"all\")\n",
" # plt.show()\n",
"visualize_q_func()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "supreme-basis",
"metadata": {},
"outputs": [],
"source": [
"def optimize_fn(xs, ys, test_sets):\n",
" xs = torch.FloatTensor(xs).view(-1, 1)\n",
" ys = torch.FloatTensor(ys).view(-1, 1)\n",
" \n",
" model = SuperSequential(\n",
" SuperMLPv1(1, 10, 20, torch.nn.ReLU),\n",
" SuperMLPv1(20, 10, 1, torch.nn.ReLU)\n",
" )\n",
" optimizer = torch.optim.Adam(\n",
" model.parameters(),\n",
" lr=0.01, weight_decay=1e-4, amsgrad=True\n",
" )\n",
" for _iter in range(100):\n",
" preds = model(ys)\n",
"\n",
" optimizer.zero_grad()\n",
" loss = torch.nn.functional.mse_loss(preds, ys)\n",
" loss.backward()\n",
" optimizer.step()\n",
" \n",
" with torch.no_grad():\n",
" answers = []\n",
" for test_set in test_sets:\n",
" test_set = torch.FloatTensor(test_set).view(-1, 1)\n",
" preds = model(test_set).view(-1).numpy()\n",
" answers.append(preds.tolist())\n",
" return answers\n",
"\n",
"def f(x):\n",
" return np.cos( 0.5 * x + x * x)\n",
"\n",
"def get_data(mode):\n",
" dataset = SynAdaptiveEnv(mode=mode)\n",
" times, xs, ys = [], [], []\n",
" for i, (_, t, x) in enumerate(dataset):\n",
" times.append(t)\n",
" xs.append(x)\n",
" dataset.set_transform(f)\n",
" for i, (_, _, y) in enumerate(dataset):\n",
" ys.append(y)\n",
" return times, xs, ys\n",
"\n",
"def visualize_syn(save_path):\n",
" save_dir = (save_path / '..').resolve()\n",
" save_dir.mkdir(parents=True, exist_ok=True)\n",
" \n",
" dpi, width, height = 40, 2000, 900\n",
" figsize = width / float(dpi), height / float(dpi)\n",
" LabelSize, LegendFontsize, font_gap = 40, 40, 5\n",
" \n",
" fig = plt.figure(figsize=figsize)\n",
" \n",
" times, xs, ys = get_data(None)\n",
" \n",
" def draw_ax(cur_ax, xaxis, yaxis, xlabel, ylabel,\n",
" alpha=0.1, color='k', linestyle='-', legend=None, plot_only=False):\n",
" if legend is not None:\n",
" cur_ax.plot(xaxis[:1], yaxis[:1], color=color, label=legend)\n",
" cur_ax.plot(xaxis, yaxis, color=color, linestyle=linestyle, alpha=alpha, label=None)\n",
" if not plot_only:\n",
" cur_ax.set_xlabel(xlabel, fontsize=LabelSize)\n",
" cur_ax.set_ylabel(ylabel, rotation=0, fontsize=LabelSize)\n",
" for tick in cur_ax.xaxis.get_major_ticks():\n",
" tick.label.set_fontsize(LabelSize - font_gap)\n",
" tick.label.set_rotation(10)\n",
" for tick in cur_ax.yaxis.get_major_ticks():\n",
" tick.label.set_fontsize(LabelSize - font_gap)\n",
" \n",
" cur_ax = fig.add_subplot(2, 1, 1)\n",
" draw_ax(cur_ax, times, xs, \"time\", \"x\", alpha=1.0, legend=None)\n",
"\n",
" cur_ax = fig.add_subplot(2, 1, 2)\n",
" draw_ax(cur_ax, times, ys, \"time\", \"y\", alpha=0.1, legend=\"ground truth\")\n",
" \n",
" train_times, train_xs, train_ys = get_data(\"train\")\n",
" draw_ax(cur_ax, train_times, train_ys, None, None, alpha=1.0, color='r', legend=None, plot_only=True)\n",
" \n",
" valid_times, valid_xs, valid_ys = get_data(\"valid\")\n",
" draw_ax(cur_ax, valid_times, valid_ys, None, None, alpha=1.0, color='g', legend=None, plot_only=True)\n",
" \n",
" test_times, test_xs, test_ys = get_data(\"test\")\n",
" draw_ax(cur_ax, test_times, test_ys, None, None, alpha=1.0, color='b', legend=None, plot_only=True)\n",
" \n",
" # optimize MLP models\n",
"# [train_preds, valid_preds, test_preds] = optimize_fn(train_xs, train_ys, [train_xs, valid_xs, test_xs])\n",
"# draw_ax(cur_ax, train_times, train_preds, None, None,\n",
"# alpha=1.0, linestyle='--', color='r', legend=\"MLP\", plot_only=True)\n",
"# import pdb; pdb.set_trace()\n",
"# draw_ax(cur_ax, valid_times, valid_preds, None, None,\n",
"# alpha=1.0, linestyle='--', color='g', legend=None, plot_only=True)\n",
"# draw_ax(cur_ax, test_times, test_preds, None, None,\n",
"# alpha=1.0, linestyle='--', color='b', legend=None, plot_only=True)\n",
"\n",
" plt.legend(loc=1, fontsize=LegendFontsize)\n",
"\n",
" fig.savefig(save_path, dpi=dpi, bbox_inches=\"tight\", format=\"pdf\")\n",
" plt.close(\"all\")\n",
" # plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "shared-envelope",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The Desktop is at: /Users/xuanyidong/Desktop\n"
]
}
],
"source": [
"# Visualization\n",
"# home_dir = Path.home()\n",
"# desktop_dir = home_dir / 'Desktop'\n",
"# print('The Desktop is at: {:}'.format(desktop_dir))\n",
"# visualize_syn(desktop_dir / 'tot-synthetic-v0.pdf')"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"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.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}