diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/.~lock.EstimatedRemainingTimeContext.csv# b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/.~lock.EstimatedRemainingTimeContext.csv#
new file mode 100755
index 0000000000000000000000000000000000000000..e955098031ae47be509270fc5376c7c886105566
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/.~lock.EstimatedRemainingTimeContext.csv#
@@ -0,0 +1 @@
+,DESKTOP-EVD7T0H/diana,DESKTOP-EVD7T0H,06.04.2021 19:22,file:///C:/Users/diana/AppData/Roaming/LibreOffice/4;
\ No newline at end of file
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/EstimatedRemainingTimeContext.csv b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/EstimatedRemainingTimeContext.csv
new file mode 100755
index 0000000000000000000000000000000000000000..1cad682dfa6d442946eaa1f7ce032564607d754d
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/EstimatedRemainingTimeContext.csv
@@ -0,0 +1,141 @@
+name,time,countryCode,ipAddress,level,producer,value
+EstimatedRemainingTimeContext,2021-02-18T11:31:12.752Z,IN,15.206.207.43,3,15.206.207.43,4050
+EstimatedRemainingTimeContext,2021-02-18T11:31:32.752Z,IN,15.206.207.43,3,15.206.207.43,4045.5
+EstimatedRemainingTimeContext,2021-02-18T11:32:02.752Z,IN,15.206.207.43,3,15.206.207.43,4045.5
+EstimatedRemainingTimeContext,2021-02-18T11:32:32.752Z,IN,15.206.207.43,3,15.206.207.43,4045.5
+EstimatedRemainingTimeContext,2021-02-18T11:33:02.752Z,IN,15.206.207.43,3,15.206.207.43,4153.25
+EstimatedRemainingTimeContext,2021-02-18T11:33:32.752Z,IN,15.206.207.43,3,15.206.207.43,4153.25
+EstimatedRemainingTimeContext,2021-02-18T11:34:02.752Z,IN,15.206.207.43,3,15.206.207.43,4153.25
+EstimatedRemainingTimeContext,2021-02-18T11:34:32.752Z,IN,15.206.207.43,3,15.206.207.43,5494.125
+EstimatedRemainingTimeContext,2021-02-18T11:35:02.752Z,IN,15.206.207.43,3,15.206.207.43,5494.125
+EstimatedRemainingTimeContext,2021-02-18T11:35:32.752Z,IN,15.206.207.43,3,15.206.207.43,3080
+EstimatedRemainingTimeContext,2021-02-18T11:36:02.752Z,IN,15.206.207.43,3,15.206.207.43,3080
+EstimatedRemainingTimeContext,2021-02-18T11:36:32.752Z,IN,15.206.207.43,3,15.206.207.43,3080
+EstimatedRemainingTimeContext,2021-02-18T11:37:02.752Z,IN,15.206.207.43,3,15.206.207.43,3348.75
+EstimatedRemainingTimeContext,2021-02-18T11:37:32.752Z,IN,15.206.207.43,3,15.206.207.43,3348.75
+EstimatedRemainingTimeContext,2021-02-18T11:38:02.752Z,IN,15.206.207.43,3,15.206.207.43,4343.625
+EstimatedRemainingTimeContext,2021-02-18T11:38:32.752Z,IN,15.206.207.43,3,15.206.207.43,4394.375
+EstimatedRemainingTimeContext,2021-02-18T11:39:02.752Z,IN,15.206.207.43,3,15.206.207.43,4394.375
+EstimatedRemainingTimeContext,2021-02-18T11:39:32.752Z,IN,15.206.207.43,3,15.206.207.43,4273.5
+EstimatedRemainingTimeContext,2021-02-18T11:40:02.752Z,IN,15.206.207.43,3,15.206.207.43,4268.6875
+EstimatedRemainingTimeContext,2021-02-18T11:40:32.752Z,IN,15.206.207.43,3,15.206.207.43,2845.791666666667
+EstimatedRemainingTimeContext,2021-02-18T11:41:02.752Z,IN,15.206.207.43,3,15.206.207.43,2836.166666666667
+EstimatedRemainingTimeContext,2021-02-18T11:41:32.752Z,IN,15.206.207.43,3,15.206.207.43,2836.166666666667
+EstimatedRemainingTimeContext,2021-02-18T11:42:02.752Z,IN,15.206.207.43,3,15.206.207.43,2836.166666666667
+EstimatedRemainingTimeContext,2021-02-18T11:42:32.752Z,IN,15.206.207.43,3,15.206.207.43,2820.125
+EstimatedRemainingTimeContext,2021-02-18T11:43:02.752Z,IN,15.206.207.43,3,15.206.207.43,2820.125
+EstimatedRemainingTimeContext,2021-02-18T11:43:32.752Z,IN,15.206.207.43,3,15.206.207.43,2813.708333333334
+EstimatedRemainingTimeContext,2021-02-18T11:44:02.752Z,IN,15.206.207.43,3,15.206.207.43,3019.125
+EstimatedRemainingTimeContext,2021-02-18T11:44:32.752Z,IN,15.206.207.43,3,15.206.207.43,2800.875
+EstimatedRemainingTimeContext,2021-02-18T11:45:02.752Z,IN,15.206.207.43,3,15.206.207.43,2788.041666666667
+EstimatedRemainingTimeContext,2021-02-18T11:45:32.752Z,IN,15.206.207.43,3,15.206.207.43,2784.833333333334
+EstimatedRemainingTimeContext,2021-02-18T11:46:02.752Z,IN,15.206.207.43,3,15.206.207.43,2745.5
+EstimatedRemainingTimeContext,2021-02-18T11:46:32.752Z,IN,15.206.207.43,3,15.206.207.43,2736
+EstimatedRemainingTimeContext,2021-02-18T11:47:02.752Z,IN,15.206.207.43,3,15.206.207.43,2049.625
+EstimatedRemainingTimeContext,2021-02-18T11:47:32.752Z,IN,15.206.207.43,3,15.206.207.43,2074.1875
+EstimatedRemainingTimeContext,2021-02-18T11:48:02.752Z,IN,15.206.207.43,3,15.206.207.43,2066.96875
+EstimatedRemainingTimeContext,2021-02-18T11:48:32.752Z,IN,15.206.207.43,3,15.206.207.43,2064.5625
+EstimatedRemainingTimeContext,2021-02-18T11:49:02.752Z,IN,15.206.207.43,3,15.206.207.43,2084.0625
+EstimatedRemainingTimeContext,2021-02-18T11:49:32.752Z,IN,15.206.207.43,3,15.206.207.43,2076.75
+EstimatedRemainingTimeContext,2021-02-18T11:50:02.752Z,IN,15.206.207.43,3,15.206.207.43,2178.125
+EstimatedRemainingTimeContext,2021-02-18T11:50:32.752Z,IN,15.206.207.43,3,15.206.207.43,2186.53125
+EstimatedRemainingTimeContext,2021-02-18T11:51:02.752Z,IN,15.206.207.43,3,15.206.207.43,2183.9375
+EstimatedRemainingTimeContext,2021-02-18T11:51:32.752Z,IN,15.206.207.43,3,15.206.207.43,2123.71875
+EstimatedRemainingTimeContext,2021-02-18T11:52:02.752Z,IN,15.206.207.43,3,15.206.207.43,2116.125
+EstimatedRemainingTimeContext,2021-02-18T11:52:32.752Z,IN,15.206.207.43,3,15.206.207.43,2113.59375
+EstimatedRemainingTimeContext,2021-02-18T11:53:02.752Z,IN,15.206.207.43,3,15.206.207.43,2080
+EstimatedRemainingTimeContext,2021-02-18T11:53:32.752Z,IN,15.206.207.43,3,15.206.207.43,2072.5
+EstimatedRemainingTimeContext,2021-02-18T11:54:02.752Z,IN,15.206.207.43,3,15.206.207.43,2067.5
+EstimatedRemainingTimeContext,2021-02-18T11:54:32.752Z,IN,15.206.207.43,3,15.206.207.43,2060
+EstimatedRemainingTimeContext,2021-02-18T11:55:02.752Z,IN,15.206.207.43,3,15.206.207.43,2055
+EstimatedRemainingTimeContext,2021-02-18T11:55:32.752Z,IN,15.206.207.43,3,15.206.207.43,2050
+EstimatedRemainingTimeContext,2021-02-18T11:56:02.752Z,IN,15.206.207.43,3,15.206.207.43,2007.09375
+EstimatedRemainingTimeContext,2021-02-18T11:56:32.752Z,IN,15.206.207.43,3,15.206.207.43,2004.625
+EstimatedRemainingTimeContext,2021-02-18T11:57:02.752Z,IN,15.206.207.43,3,15.206.207.43,1971.9375
+EstimatedRemainingTimeContext,2021-02-18T11:57:32.752Z,IN,15.206.207.43,3,15.206.207.43,1962.1875
+EstimatedRemainingTimeContext,2021-02-18T11:58:02.752Z,IN,15.206.207.43,3,15.206.207.43,1962.1875
+EstimatedRemainingTimeContext,2021-02-18T11:58:32.752Z,IN,15.206.207.43,3,15.206.207.43,1952.4375
+EstimatedRemainingTimeContext,2021-02-18T11:59:02.752Z,IN,15.206.207.43,3,15.206.207.43,1945.125
+EstimatedRemainingTimeContext,2021-02-18T11:59:32.752Z,IN,15.206.207.43,3,15.206.207.43,1942.6875
+EstimatedRemainingTimeContext,2021-02-18T12:00:02.752Z,IN,15.206.207.43,3,15.206.207.43,1932.9375
+EstimatedRemainingTimeContext,2021-02-18T12:00:32.752Z,IN,15.206.207.43,3,15.206.207.43,1928.0625
+EstimatedRemainingTimeContext,2021-02-18T12:01:02.752Z,IN,15.206.207.43,3,15.206.207.43,1558.275
+EstimatedRemainingTimeContext,2021-02-18T12:01:32.752Z,IN,15.206.207.43,3,15.206.207.43,1483.9
+EstimatedRemainingTimeContext,2021-02-18T12:02:02.752Z,IN,15.206.207.43,3,15.206.207.43,1460.625
+EstimatedRemainingTimeContext,2021-02-18T12:02:32.752Z,IN,15.206.207.43,3,15.206.207.43,1456.875
+EstimatedRemainingTimeContext,2021-02-18T12:03:02.752Z,IN,15.206.207.43,3,15.206.207.43,1464.9
+EstimatedRemainingTimeContext,2021-02-18T12:03:32.752Z,IN,15.206.207.43,3,15.206.207.43,1443.75
+EstimatedRemainingTimeContext,2021-02-18T12:04:02.752Z,IN,15.206.207.43,3,15.206.207.43,1476.475
+EstimatedRemainingTimeContext,2021-02-18T12:04:32.752Z,IN,15.206.207.43,3,15.206.207.43,1504.95
+EstimatedRemainingTimeContext,2021-02-18T12:05:02.752Z,IN,15.206.207.43,3,15.206.207.43,1502.975
+EstimatedRemainingTimeContext,2021-02-18T12:05:32.752Z,IN,15.206.207.43,3,15.206.207.43,1372.4
+EstimatedRemainingTimeContext,2021-02-18T12:06:02.752Z,IN,15.206.207.43,3,15.206.207.43,1365.1
+EstimatedRemainingTimeContext,2021-02-18T12:06:32.752Z,IN,15.206.207.43,3,15.206.207.43,1357.8
+EstimatedRemainingTimeContext,2021-02-18T12:07:02.752Z,IN,15.206.207.43,3,15.206.207.43,1333.8
+EstimatedRemainingTimeContext,2021-02-18T12:07:32.752Z,IN,15.206.207.43,3,15.206.207.43,1346.85
+EstimatedRemainingTimeContext,2021-02-18T12:08:02.752Z,IN,15.206.207.43,3,15.206.207.43,1341.375
+EstimatedRemainingTimeContext,2021-02-18T12:08:32.752Z,IN,15.206.207.43,3,15.206.207.43,1334.075
+EstimatedRemainingTimeContext,2021-02-18T12:09:02.752Z,IN,15.206.207.43,3,15.206.207.43,1299.6
+EstimatedRemainingTimeContext,2021-02-18T12:09:32.752Z,IN,15.206.207.43,3,15.206.207.43,1296
+EstimatedRemainingTimeContext,2021-02-18T12:10:02.752Z,IN,15.206.207.43,3,15.206.207.43,1287
+EstimatedRemainingTimeContext,2021-02-18T12:10:32.752Z,IN,15.206.207.43,3,15.206.207.43,1283.4
+EstimatedRemainingTimeContext,2021-02-18T12:11:02.752Z,IN,15.206.207.43,3,15.206.207.43,1276.2
+EstimatedRemainingTimeContext,2021-02-18T12:11:32.752Z,IN,15.206.207.43,3,15.206.207.43,1059
+EstimatedRemainingTimeContext,2021-02-18T12:12:02.752Z,IN,15.206.207.43,3,15.206.207.43,1054.5
+EstimatedRemainingTimeContext,2021-02-18T12:12:32.752Z,IN,15.206.207.43,3,15.206.207.43,993.3125
+EstimatedRemainingTimeContext,2021-02-18T12:13:02.752Z,IN,15.206.207.43,3,15.206.207.43,990.4375
+EstimatedRemainingTimeContext,2021-02-18T12:13:32.752Z,IN,15.206.207.43,3,15.206.207.43,981.8125
+EstimatedRemainingTimeContext,2021-02-18T12:14:02.752Z,IN,15.206.207.43,3,15.206.207.43,976.0625
+EstimatedRemainingTimeContext,2021-02-18T12:14:32.752Z,IN,15.206.207.43,3,15.206.207.43,973.1875
+EstimatedRemainingTimeContext,2021-02-18T12:15:02.752Z,IN,15.206.207.43,3,15.206.207.43,1036
+EstimatedRemainingTimeContext,2021-02-18T12:15:32.752Z,IN,15.206.207.43,3,15.206.207.43,1003.75
+EstimatedRemainingTimeContext,2021-02-18T12:16:02.752Z,IN,15.206.207.43,3,15.206.207.43,999.1875
+EstimatedRemainingTimeContext,2021-02-18T12:16:32.752Z,IN,15.206.207.43,3,15.206.207.43,978
+EstimatedRemainingTimeContext,2021-02-18T12:17:02.752Z,IN,15.206.207.43,3,15.206.207.43,973.5
+EstimatedRemainingTimeContext,2021-02-18T12:17:32.752Z,IN,15.206.207.43,3,15.206.207.43,830.571428571429
+EstimatedRemainingTimeContext,2021-02-18T12:18:02.752Z,IN,15.206.207.43,3,15.206.207.43,800.017857142857
+EstimatedRemainingTimeContext,2021-02-18T12:18:32.752Z,IN,15.206.207.43,3,15.206.207.43,796.214285714286
+EstimatedRemainingTimeContext,2021-02-18T12:19:02.752Z,IN,15.206.207.43,3,15.206.207.43,802.285714285714
+EstimatedRemainingTimeContext,2021-02-18T12:19:32.752Z,IN,15.206.207.43,3,15.206.207.43,728.357142857143
+EstimatedRemainingTimeContext,2021-02-18T12:20:02.752Z,IN,15.206.207.43,3,15.206.207.43,724.821428571429
+EstimatedRemainingTimeContext,2021-02-18T12:20:32.752Z,IN,15.206.207.43,3,15.206.207.43,696.428571428571
+EstimatedRemainingTimeContext,2021-02-18T12:21:02.752Z,IN,15.206.207.43,3,15.206.207.43,750.571428571429
+EstimatedRemainingTimeContext,2021-02-18T12:21:32.752Z,IN,15.206.207.43,3,15.206.207.43,748.035714285714
+EstimatedRemainingTimeContext,2021-02-18T12:22:02.752Z,IN,15.206.207.43,3,15.206.207.43,741.696428571429
+EstimatedRemainingTimeContext,2021-02-18T12:22:32.752Z,IN,15.206.207.43,3,15.206.207.43,630.125
+EstimatedRemainingTimeContext,2021-02-18T12:23:02.752Z,IN,15.206.207.43,3,15.206.207.43,626.796875
+EstimatedRemainingTimeContext,2021-02-18T12:23:32.752Z,IN,15.206.207.43,3,15.206.207.43,619.03125
+EstimatedRemainingTimeContext,2021-02-18T12:24:02.752Z,IN,15.206.207.43,3,15.206.207.43,615.703125
+EstimatedRemainingTimeContext,2021-02-18T12:24:32.752Z,IN,15.206.207.43,3,15.206.207.43,588.4375
+EstimatedRemainingTimeContext,2021-02-18T12:25:02.752Z,IN,15.206.207.43,3,15.206.207.43,578.59375
+EstimatedRemainingTimeContext,2021-02-18T12:25:32.752Z,IN,15.206.207.43,3,15.206.207.43,576.40625
+EstimatedRemainingTimeContext,2021-02-18T12:26:02.752Z,IN,15.206.207.43,3,15.206.207.43,580.578125
+EstimatedRemainingTimeContext,2021-02-18T12:26:32.752Z,IN,15.206.207.43,3,15.206.207.43,569.171875
+EstimatedRemainingTimeContext,2021-02-18T12:27:02.752Z,IN,15.206.207.43,3,15.206.207.43,568.03125
+EstimatedRemainingTimeContext,2021-02-18T12:27:32.752Z,IN,15.206.207.43,3,15.206.207.43,532.5
+EstimatedRemainingTimeContext,2021-02-18T12:28:02.752Z,IN,15.206.207.43,3,15.206.207.43,520.296875
+EstimatedRemainingTimeContext,2021-02-18T12:28:32.752Z,IN,15.206.207.43,3,15.206.207.43,525.375
+EstimatedRemainingTimeContext,2021-02-18T12:29:02.752Z,IN,15.206.207.43,3,15.206.207.43,477.0625
+EstimatedRemainingTimeContext,2021-02-18T12:29:32.752Z,IN,15.206.207.43,3,15.206.207.43,465.375
+EstimatedRemainingTimeContext,2021-02-18T12:30:02.752Z,IN,15.206.207.43,3,15.206.207.43,463.25
+EstimatedRemainingTimeContext,2021-02-18T12:30:32.752Z,IN,15.206.207.43,3,15.206.207.43,414
+EstimatedRemainingTimeContext,2021-02-18T12:31:02.752Z,IN,15.206.207.43,3,15.206.207.43,407
+EstimatedRemainingTimeContext,2021-02-18T12:31:32.752Z,IN,15.206.207.43,3,15.206.207.43,373.9375
+EstimatedRemainingTimeContext,2021-02-18T12:32:02.752Z,IN,15.206.207.43,3,15.206.207.43,368.125
+EstimatedRemainingTimeContext,2021-02-18T12:32:32.752Z,IN,15.206.207.43,3,15.206.207.43,343.90625
+EstimatedRemainingTimeContext,2021-02-18T12:33:02.752Z,IN,15.206.207.43,3,15.206.207.43,341.96875
+EstimatedRemainingTimeContext,2021-02-18T12:33:32.752Z,IN,15.206.207.43,3,15.206.207.43,330.34375
+EstimatedRemainingTimeContext,2021-02-18T12:34:02.752Z,IN,15.206.207.43,3,15.206.207.43,300.9375
+EstimatedRemainingTimeContext,2021-02-18T12:34:32.752Z,IN,15.206.207.43,3,15.206.207.43,298.125
+EstimatedRemainingTimeContext,2021-02-18T12:35:02.752Z,IN,15.206.207.43,3,15.206.207.43,267.34375
+EstimatedRemainingTimeContext,2021-02-18T12:35:32.752Z,IN,15.206.207.43,3,15.206.207.43,262.734375
+EstimatedRemainingTimeContext,2021-02-18T12:36:02.752Z,IN,15.206.207.43,3,15.206.207.43,234.71875
+EstimatedRemainingTimeContext,2021-02-18T12:36:32.752Z,IN,15.206.207.43,3,15.206.207.43,201.25
+EstimatedRemainingTimeContext,2021-02-18T12:37:02.752Z,IN,15.206.207.43,3,15.206.207.43,194.25
+EstimatedRemainingTimeContext,2021-02-18T12:37:32.752Z,IN,15.206.207.43,3,15.206.207.43,169.296875
+EstimatedRemainingTimeContext,2021-02-18T12:38:02.752Z,IN,15.206.207.43,3,15.206.207.43,142.65625
+EstimatedRemainingTimeContext,2021-02-18T12:38:32.752Z,IN,15.206.207.43,3,15.206.207.43,110.5
+EstimatedRemainingTimeContext,2021-02-18T12:39:02.752Z,IN,15.206.207.43,3,15.206.207.43,60.15625
+EstimatedRemainingTimeContext,2021-02-18T12:39:32.752Z,IN,15.206.207.43,3,15.206.207.43,19.140625
+EstimatedRemainingTimeContext,2021-02-18T12:40:02.752Z,IN,15.206.207.43,3,15.206.207.43,5.359375
+EstimatedRemainingTimeContext,2021-02-18T12:40:32.752Z,IN,15.206.207.43,3,15.206.207.43,0.765625
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/input_transform.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/input_transform.json
new file mode 100644
index 0000000000000000000000000000000000000000..a8431b20a97f5a993e55b7ca67796039fc808b82
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/input_transform.json
@@ -0,0 +1 @@
+{"__kind__": "instance", "args": [], "class": "gluonts.transform._base.Chain", "kwargs": {"trans": [{"__kind__": "instance", "args": [], "class": "gluonts.transform.field.RemoveFields", "kwargs": {"field_names": ["feat_dynamic_cat", "feat_static_real", "feat_dynamic_real"]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.field.SetField", "kwargs": {"output_field": "feat_static_cat", "value": [0.0]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.field.SetField", "kwargs": {"output_field": "feat_static_real", "value": [0.0]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "feat_static_cat"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "feat_static_real"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddObservedValuesIndicator", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "imputation_method": {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.DummyValueImputation", "kwargs": {"dummy_value": 0.0}}, "output_field": "observed_values", "target_field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddTimeFeatures", "kwargs": {"output_field": "time_feat", "pred_length": 21, "start_field": "start", "target_field": "target", "time_features": [{"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.MinuteOfHour", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.HourOfDay", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfWeek", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfMonth", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfYear", "kwargs": {"normalized": true}}]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddAgeFeature", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "log_scale": true, "output_field": "feat_dynamic_age", "pred_length": 21, "target_field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.VstackFeatures", "kwargs": {"drop_inputs": true, "h_stack": false, "input_fields": ["time_feat", "feat_dynamic_age"], "output_field": "time_feat"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.split.InstanceSplitter", "kwargs": {"dummy_value": 0.0, "forecast_start_field": "forecast_start", "future_length": 21, "is_pad_field": "is_pad", "lead_time": 0, "output_NTC": true, "past_length": 242, "pick_incomplete": true, "start_field": "start", "target_field": "target", "time_series_fields": ["time_feat", "observed_values"], "train_sampler": {"__kind__": "instance", "args": [], "class": "gluonts.transform.sampler.ExpectedNumInstanceSampler", "kwargs": {"num_instances": 1.0}}}}]}}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/parameters.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/parameters.json
new file mode 100644
index 0000000000000000000000000000000000000000..27dabb807b33a28a7e011795cbdb5dbc62271bd6
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/parameters.json
@@ -0,0 +1 @@
+{"batch_size": 32, "ctx": {"__kind__": "instance", "args": ["cpu", 0], "class": "mxnet.context.Context"}, "dtype": {"__kind__": "type", "class": "numpy.float32"}, "forecast_generator": {"__kind__": "instance", "args": [], "class": "gluonts.model.forecast_generator.SampleForecastGenerator", "kwargs": {}}, "freq": "1min", "input_names": ["feat_static_cat", "feat_static_real", "past_time_feat", "past_target", "past_observed_values", "future_time_feat"], "lead_time": 0, "prediction_length": 21}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/prediction_net-0000.params b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/prediction_net-0000.params
new file mode 100644
index 0000000000000000000000000000000000000000..3b22a424afa379bd3f572a81ff0f500e53f5eb7f
Binary files /dev/null and b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/prediction_net-0000.params differ
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/prediction_net-network.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/prediction_net-network.json
new file mode 100644
index 0000000000000000000000000000000000000000..07dc6f139e33ff462a855a5d5c48b88a37e9c88d
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/prediction_net-network.json
@@ -0,0 +1 @@
+{"__kind__": "instance", "args": [], "class": "gluonts.model.deepar._network.DeepARPredictionNetwork", "kwargs": {"cardinality": [1], "cell_type": "lstm", "context_length": 60, "distr_output": {"__kind__": "instance", "args": [], "class": "gluonts.mx.distribution.student_t.StudentTOutput", "kwargs": {}}, "dropout_rate": 0.1, "dropoutcell_type": "ZoneoutCell", "dtype": {"__kind__": "type", "class": "numpy.float32"}, "embedding_dimension": [1], "history_length": 242, "lags_seq": [1, 2, 3, 4, 5, 6, 7, 58, 59, 60, 61, 62, 118, 119, 120, 121, 122, 178, 179, 180, 181, 182], "num_cells": 40, "num_layers": 2, "num_parallel_samples": 100, "prediction_length": 21, "scaling": true}}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/type.txt b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/type.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6136b11a35db312bcc37697b718d7bcc07495a9e
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/type.txt
@@ -0,0 +1 @@
+gluonts.mx.model.predictor.RepresentableBlockPredictor
\ No newline at end of file
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/version.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/version.json
new file mode 100644
index 0000000000000000000000000000000000000000..7866f5ddddc08ed77a6598194d77091373346593
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/CubeRoot/version.json
@@ -0,0 +1 @@
+{"model": "0.6.7", "gluonts": "0.6.7"}
\ No newline at end of file
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/input_transform.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/input_transform.json
new file mode 100644
index 0000000000000000000000000000000000000000..a8431b20a97f5a993e55b7ca67796039fc808b82
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/input_transform.json
@@ -0,0 +1 @@
+{"__kind__": "instance", "args": [], "class": "gluonts.transform._base.Chain", "kwargs": {"trans": [{"__kind__": "instance", "args": [], "class": "gluonts.transform.field.RemoveFields", "kwargs": {"field_names": ["feat_dynamic_cat", "feat_static_real", "feat_dynamic_real"]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.field.SetField", "kwargs": {"output_field": "feat_static_cat", "value": [0.0]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.field.SetField", "kwargs": {"output_field": "feat_static_real", "value": [0.0]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "feat_static_cat"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "feat_static_real"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddObservedValuesIndicator", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "imputation_method": {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.DummyValueImputation", "kwargs": {"dummy_value": 0.0}}, "output_field": "observed_values", "target_field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddTimeFeatures", "kwargs": {"output_field": "time_feat", "pred_length": 21, "start_field": "start", "target_field": "target", "time_features": [{"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.MinuteOfHour", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.HourOfDay", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfWeek", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfMonth", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfYear", "kwargs": {"normalized": true}}]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddAgeFeature", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "log_scale": true, "output_field": "feat_dynamic_age", "pred_length": 21, "target_field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.VstackFeatures", "kwargs": {"drop_inputs": true, "h_stack": false, "input_fields": ["time_feat", "feat_dynamic_age"], "output_field": "time_feat"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.split.InstanceSplitter", "kwargs": {"dummy_value": 0.0, "forecast_start_field": "forecast_start", "future_length": 21, "is_pad_field": "is_pad", "lead_time": 0, "output_NTC": true, "past_length": 242, "pick_incomplete": true, "start_field": "start", "target_field": "target", "time_series_fields": ["time_feat", "observed_values"], "train_sampler": {"__kind__": "instance", "args": [], "class": "gluonts.transform.sampler.ExpectedNumInstanceSampler", "kwargs": {"num_instances": 1.0}}}}]}}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/parameters.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/parameters.json
new file mode 100644
index 0000000000000000000000000000000000000000..27dabb807b33a28a7e011795cbdb5dbc62271bd6
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/parameters.json
@@ -0,0 +1 @@
+{"batch_size": 32, "ctx": {"__kind__": "instance", "args": ["cpu", 0], "class": "mxnet.context.Context"}, "dtype": {"__kind__": "type", "class": "numpy.float32"}, "forecast_generator": {"__kind__": "instance", "args": [], "class": "gluonts.model.forecast_generator.SampleForecastGenerator", "kwargs": {}}, "freq": "1min", "input_names": ["feat_static_cat", "feat_static_real", "past_time_feat", "past_target", "past_observed_values", "future_time_feat"], "lead_time": 0, "prediction_length": 21}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/prediction_net-0000.params b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/prediction_net-0000.params
new file mode 100644
index 0000000000000000000000000000000000000000..f16fac85903e1a26955a2f92b0cc2d1c2494e615
Binary files /dev/null and b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/prediction_net-0000.params differ
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/prediction_net-network.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/prediction_net-network.json
new file mode 100644
index 0000000000000000000000000000000000000000..07dc6f139e33ff462a855a5d5c48b88a37e9c88d
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/prediction_net-network.json
@@ -0,0 +1 @@
+{"__kind__": "instance", "args": [], "class": "gluonts.model.deepar._network.DeepARPredictionNetwork", "kwargs": {"cardinality": [1], "cell_type": "lstm", "context_length": 60, "distr_output": {"__kind__": "instance", "args": [], "class": "gluonts.mx.distribution.student_t.StudentTOutput", "kwargs": {}}, "dropout_rate": 0.1, "dropoutcell_type": "ZoneoutCell", "dtype": {"__kind__": "type", "class": "numpy.float32"}, "embedding_dimension": [1], "history_length": 242, "lags_seq": [1, 2, 3, 4, 5, 6, 7, 58, 59, 60, 61, 62, 118, 119, 120, 121, 122, 178, 179, 180, 181, 182], "num_cells": 40, "num_layers": 2, "num_parallel_samples": 100, "prediction_length": 21, "scaling": true}}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/type.txt b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/type.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6136b11a35db312bcc37697b718d7bcc07495a9e
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/type.txt
@@ -0,0 +1 @@
+gluonts.mx.model.predictor.RepresentableBlockPredictor
\ No newline at end of file
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/version.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/version.json
new file mode 100644
index 0000000000000000000000000000000000000000..7866f5ddddc08ed77a6598194d77091373346593
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Log/version.json
@@ -0,0 +1 @@
+{"model": "0.6.7", "gluonts": "0.6.7"}
\ No newline at end of file
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/input_transform.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/input_transform.json
new file mode 100644
index 0000000000000000000000000000000000000000..dec43dcab2f4b21c21f2f9f97e083390dcdbf9b4
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/input_transform.json
@@ -0,0 +1 @@
+{"__kind__": "instance", "args": [], "class": "gluonts.transform._base.Chain", "kwargs": {"trans": [{"__kind__": "instance", "args": [], "class": "gluonts.transform.field.RemoveFields", "kwargs": {"field_names": ["feat_dynamic_cat", "feat_static_real", "feat_dynamic_real"]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.field.SetField", "kwargs": {"output_field": "feat_static_cat", "value": [0.0]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.field.SetField", "kwargs": {"output_field": "feat_static_real", "value": [0.0]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "feat_static_cat"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "feat_static_real"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddObservedValuesIndicator", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "imputation_method": {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.DummyValueImputation", "kwargs": {"dummy_value": 0.0}}, "output_field": "observed_values", "target_field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddTimeFeatures", "kwargs": {"output_field": "time_feat", "pred_length": 21, "start_field": "start", "target_field": "target", "time_features": [{"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.MinuteOfHour", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.HourOfDay", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfWeek", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfMonth", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfYear", "kwargs": {"normalized": true}}]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddAgeFeature", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "log_scale": true, "output_field": "feat_dynamic_age", "pred_length": 21, "target_field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.VstackFeatures", "kwargs": {"drop_inputs": true, "h_stack": false, "input_fields": ["time_feat", "feat_dynamic_age"], "output_field": "time_feat"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.split.InstanceSplitter", "kwargs": {"dummy_value": 0.0, "forecast_start_field": "forecast_start", "future_length": 21, "is_pad_field": "is_pad", "lead_time": 0, "output_NTC": true, "past_length": 232, "pick_incomplete": true, "start_field": "start", "target_field": "target", "time_series_fields": ["time_feat", "observed_values"], "train_sampler": {"__kind__": "instance", "args": [], "class": "gluonts.transform.sampler.ExpectedNumInstanceSampler", "kwargs": {"num_instances": 1.0}}}}]}}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/parameters.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/parameters.json
new file mode 100644
index 0000000000000000000000000000000000000000..27dabb807b33a28a7e011795cbdb5dbc62271bd6
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/parameters.json
@@ -0,0 +1 @@
+{"batch_size": 32, "ctx": {"__kind__": "instance", "args": ["cpu", 0], "class": "mxnet.context.Context"}, "dtype": {"__kind__": "type", "class": "numpy.float32"}, "forecast_generator": {"__kind__": "instance", "args": [], "class": "gluonts.model.forecast_generator.SampleForecastGenerator", "kwargs": {}}, "freq": "1min", "input_names": ["feat_static_cat", "feat_static_real", "past_time_feat", "past_target", "past_observed_values", "future_time_feat"], "lead_time": 0, "prediction_length": 21}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/prediction_net-0000.params b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/prediction_net-0000.params
new file mode 100644
index 0000000000000000000000000000000000000000..7f6523743b2462b6933adb4250853668a6547a52
Binary files /dev/null and b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/prediction_net-0000.params differ
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/prediction_net-network.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/prediction_net-network.json
new file mode 100644
index 0000000000000000000000000000000000000000..e452233aee30be1afd5e419e46989f35ecd011b8
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/prediction_net-network.json
@@ -0,0 +1 @@
+{"__kind__": "instance", "args": [], "class": "gluonts.model.deepar._network.DeepARPredictionNetwork", "kwargs": {"cardinality": [1], "cell_type": "lstm", "context_length": 50, "distr_output": {"__kind__": "instance", "args": [], "class": "gluonts.mx.distribution.student_t.StudentTOutput", "kwargs": {}}, "dropout_rate": 0.1, "dropoutcell_type": "ZoneoutCell", "dtype": {"__kind__": "type", "class": "numpy.float32"}, "embedding_dimension": [1], "history_length": 232, "lags_seq": [1, 2, 3, 4, 5, 6, 7, 58, 59, 60, 61, 62, 118, 119, 120, 121, 122, 178, 179, 180, 181, 182], "num_cells": 40, "num_layers": 2, "num_parallel_samples": 100, "prediction_length": 21, "scaling": true}}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/type.txt b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/type.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6136b11a35db312bcc37697b718d7bcc07495a9e
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/type.txt
@@ -0,0 +1 @@
+gluonts.mx.model.predictor.RepresentableBlockPredictor
\ No newline at end of file
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/version.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/version.json
new file mode 100644
index 0000000000000000000000000000000000000000..7866f5ddddc08ed77a6598194d77091373346593
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/NoTransformation/version.json
@@ -0,0 +1 @@
+{"model": "0.6.7", "gluonts": "0.6.7"}
\ No newline at end of file
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/input_transform.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/input_transform.json
new file mode 100644
index 0000000000000000000000000000000000000000..a8431b20a97f5a993e55b7ca67796039fc808b82
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/input_transform.json
@@ -0,0 +1 @@
+{"__kind__": "instance", "args": [], "class": "gluonts.transform._base.Chain", "kwargs": {"trans": [{"__kind__": "instance", "args": [], "class": "gluonts.transform.field.RemoveFields", "kwargs": {"field_names": ["feat_dynamic_cat", "feat_static_real", "feat_dynamic_real"]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.field.SetField", "kwargs": {"output_field": "feat_static_cat", "value": [0.0]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.field.SetField", "kwargs": {"output_field": "feat_static_real", "value": [0.0]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "feat_static_cat"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "feat_static_real"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddObservedValuesIndicator", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "imputation_method": {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.DummyValueImputation", "kwargs": {"dummy_value": 0.0}}, "output_field": "observed_values", "target_field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddTimeFeatures", "kwargs": {"output_field": "time_feat", "pred_length": 21, "start_field": "start", "target_field": "target", "time_features": [{"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.MinuteOfHour", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.HourOfDay", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfWeek", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfMonth", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfYear", "kwargs": {"normalized": true}}]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddAgeFeature", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "log_scale": true, "output_field": "feat_dynamic_age", "pred_length": 21, "target_field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.VstackFeatures", "kwargs": {"drop_inputs": true, "h_stack": false, "input_fields": ["time_feat", "feat_dynamic_age"], "output_field": "time_feat"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.split.InstanceSplitter", "kwargs": {"dummy_value": 0.0, "forecast_start_field": "forecast_start", "future_length": 21, "is_pad_field": "is_pad", "lead_time": 0, "output_NTC": true, "past_length": 242, "pick_incomplete": true, "start_field": "start", "target_field": "target", "time_series_fields": ["time_feat", "observed_values"], "train_sampler": {"__kind__": "instance", "args": [], "class": "gluonts.transform.sampler.ExpectedNumInstanceSampler", "kwargs": {"num_instances": 1.0}}}}]}}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/parameters.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/parameters.json
new file mode 100644
index 0000000000000000000000000000000000000000..27dabb807b33a28a7e011795cbdb5dbc62271bd6
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/parameters.json
@@ -0,0 +1 @@
+{"batch_size": 32, "ctx": {"__kind__": "instance", "args": ["cpu", 0], "class": "mxnet.context.Context"}, "dtype": {"__kind__": "type", "class": "numpy.float32"}, "forecast_generator": {"__kind__": "instance", "args": [], "class": "gluonts.model.forecast_generator.SampleForecastGenerator", "kwargs": {}}, "freq": "1min", "input_names": ["feat_static_cat", "feat_static_real", "past_time_feat", "past_target", "past_observed_values", "future_time_feat"], "lead_time": 0, "prediction_length": 21}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/prediction_net-0000.params b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/prediction_net-0000.params
new file mode 100644
index 0000000000000000000000000000000000000000..e4821f6e65a2a0f74b2dc3d5e602d51df617fc01
Binary files /dev/null and b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/prediction_net-0000.params differ
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/prediction_net-network.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/prediction_net-network.json
new file mode 100644
index 0000000000000000000000000000000000000000..07dc6f139e33ff462a855a5d5c48b88a37e9c88d
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/prediction_net-network.json
@@ -0,0 +1 @@
+{"__kind__": "instance", "args": [], "class": "gluonts.model.deepar._network.DeepARPredictionNetwork", "kwargs": {"cardinality": [1], "cell_type": "lstm", "context_length": 60, "distr_output": {"__kind__": "instance", "args": [], "class": "gluonts.mx.distribution.student_t.StudentTOutput", "kwargs": {}}, "dropout_rate": 0.1, "dropoutcell_type": "ZoneoutCell", "dtype": {"__kind__": "type", "class": "numpy.float32"}, "embedding_dimension": [1], "history_length": 242, "lags_seq": [1, 2, 3, 4, 5, 6, 7, 58, 59, 60, 61, 62, 118, 119, 120, 121, 122, 178, 179, 180, 181, 182], "num_cells": 40, "num_layers": 2, "num_parallel_samples": 100, "prediction_length": 21, "scaling": true}}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/type.txt b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/type.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6136b11a35db312bcc37697b718d7bcc07495a9e
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/type.txt
@@ -0,0 +1 @@
+gluonts.mx.model.predictor.RepresentableBlockPredictor
\ No newline at end of file
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/version.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/version.json
new file mode 100644
index 0000000000000000000000000000000000000000..7866f5ddddc08ed77a6598194d77091373346593
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/SquareRoot/version.json
@@ -0,0 +1 @@
+{"model": "0.6.7", "gluonts": "0.6.7"}
\ No newline at end of file
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/input_transform.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/input_transform.json
new file mode 100644
index 0000000000000000000000000000000000000000..dec43dcab2f4b21c21f2f9f97e083390dcdbf9b4
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/input_transform.json
@@ -0,0 +1 @@
+{"__kind__": "instance", "args": [], "class": "gluonts.transform._base.Chain", "kwargs": {"trans": [{"__kind__": "instance", "args": [], "class": "gluonts.transform.field.RemoveFields", "kwargs": {"field_names": ["feat_dynamic_cat", "feat_static_real", "feat_dynamic_real"]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.field.SetField", "kwargs": {"output_field": "feat_static_cat", "value": [0.0]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.field.SetField", "kwargs": {"output_field": "feat_static_real", "value": [0.0]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "feat_static_cat"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "feat_static_real"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.AsNumpyArray", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "expected_ndim": 1, "field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddObservedValuesIndicator", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "imputation_method": {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.DummyValueImputation", "kwargs": {"dummy_value": 0.0}}, "output_field": "observed_values", "target_field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddTimeFeatures", "kwargs": {"output_field": "time_feat", "pred_length": 21, "start_field": "start", "target_field": "target", "time_features": [{"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.MinuteOfHour", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.HourOfDay", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfWeek", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfMonth", "kwargs": {"normalized": true}}, {"__kind__": "instance", "args": [], "class": "gluonts.time_feature._base.DayOfYear", "kwargs": {"normalized": true}}]}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.feature.AddAgeFeature", "kwargs": {"dtype": {"__kind__": "type", "class": "numpy.float32"}, "log_scale": true, "output_field": "feat_dynamic_age", "pred_length": 21, "target_field": "target"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.convert.VstackFeatures", "kwargs": {"drop_inputs": true, "h_stack": false, "input_fields": ["time_feat", "feat_dynamic_age"], "output_field": "time_feat"}}, {"__kind__": "instance", "args": [], "class": "gluonts.transform.split.InstanceSplitter", "kwargs": {"dummy_value": 0.0, "forecast_start_field": "forecast_start", "future_length": 21, "is_pad_field": "is_pad", "lead_time": 0, "output_NTC": true, "past_length": 232, "pick_incomplete": true, "start_field": "start", "target_field": "target", "time_series_fields": ["time_feat", "observed_values"], "train_sampler": {"__kind__": "instance", "args": [], "class": "gluonts.transform.sampler.ExpectedNumInstanceSampler", "kwargs": {"num_instances": 1.0}}}}]}}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/parameters.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/parameters.json
new file mode 100644
index 0000000000000000000000000000000000000000..27dabb807b33a28a7e011795cbdb5dbc62271bd6
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/parameters.json
@@ -0,0 +1 @@
+{"batch_size": 32, "ctx": {"__kind__": "instance", "args": ["cpu", 0], "class": "mxnet.context.Context"}, "dtype": {"__kind__": "type", "class": "numpy.float32"}, "forecast_generator": {"__kind__": "instance", "args": [], "class": "gluonts.model.forecast_generator.SampleForecastGenerator", "kwargs": {}}, "freq": "1min", "input_names": ["feat_static_cat", "feat_static_real", "past_time_feat", "past_target", "past_observed_values", "future_time_feat"], "lead_time": 0, "prediction_length": 21}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/prediction_net-0000.params b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/prediction_net-0000.params
new file mode 100644
index 0000000000000000000000000000000000000000..7d3e2d7c35f78aca852bf80f70b4efc9e9e12294
Binary files /dev/null and b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/prediction_net-0000.params differ
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/prediction_net-network.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/prediction_net-network.json
new file mode 100644
index 0000000000000000000000000000000000000000..e452233aee30be1afd5e419e46989f35ecd011b8
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/prediction_net-network.json
@@ -0,0 +1 @@
+{"__kind__": "instance", "args": [], "class": "gluonts.model.deepar._network.DeepARPredictionNetwork", "kwargs": {"cardinality": [1], "cell_type": "lstm", "context_length": 50, "distr_output": {"__kind__": "instance", "args": [], "class": "gluonts.mx.distribution.student_t.StudentTOutput", "kwargs": {}}, "dropout_rate": 0.1, "dropoutcell_type": "ZoneoutCell", "dtype": {"__kind__": "type", "class": "numpy.float32"}, "embedding_dimension": [1], "history_length": 232, "lags_seq": [1, 2, 3, 4, 5, 6, 7, 58, 59, 60, 61, 62, 118, 119, 120, 121, 122, 178, 179, 180, 181, 182], "num_cells": 40, "num_layers": 2, "num_parallel_samples": 100, "prediction_length": 21, "scaling": true}}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/type.txt b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/type.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6136b11a35db312bcc37697b718d7bcc07495a9e
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/type.txt
@@ -0,0 +1 @@
+gluonts.mx.model.predictor.RepresentableBlockPredictor
\ No newline at end of file
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/version.json b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/version.json
new file mode 100644
index 0000000000000000000000000000000000000000..7866f5ddddc08ed77a6598194d77091373346593
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Models/Standardization/version.json
@@ -0,0 +1 @@
+{"model": "0.6.7", "gluonts": "0.6.7"}
\ No newline at end of file
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/CubeRoot.csv b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/CubeRoot.csv
new file mode 100644
index 0000000000000000000000000000000000000000..b531e76577ccd6eeaf469898f36d3937834b576b
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/CubeRoot.csv
@@ -0,0 +1,43 @@
+original,predictions
+724.821428571429,735.8397461069975
+696.428571428571,670.8208363788767
+750.571428571429,641.8581363424543
+748.035714285714,617.9469646403377
+741.696428571429,594.515870662069
+630.125,595.5019494959064
+626.796875,592.1536742271466
+619.03125,605.3411400633615
+615.703125,567.1618583563142
+588.4375,532.0524877167933
+578.59375,506.3330446400565
+576.40625,507.57373599020065
+580.578125,497.1499216366163
+569.171875,522.8544560239019
+568.03125,531.6509623596843
+532.5,469.5486350232297
+520.296875,502.5019671898981
+525.375,466.1018703255163
+477.0625,461.8723950097421
+465.375,452.73211736138484
+463.25,395.572049746613
+414.0,501.90185075797393
+407.0,518.5398059152202
+373.9375,482.0566473793107
+368.125,458.4988766005031
+343.90625,451.0755536783516
+341.96875,469.21568162604416
+330.34375,466.5797086442084
+300.9375,469.5068989384906
+298.125,458.02597888591475
+267.34375,431.81790182525447
+262.734375,410.0349616597978
+234.71875,444.05571084688034
+201.25,452.42949808993103
+194.25,446.1724466610581
+169.296875,456.15982508091446
+142.65625,461.3549024195875
+110.5,455.3486818131098
+60.15625,477.9184406368721
+19.140625,445.5313873078685
+5.359375,430.44168354915143
+0.765625,443.89768438144586
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/Log.csv b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/Log.csv
new file mode 100644
index 0000000000000000000000000000000000000000..e8d6460cc5b10c6a111dbbe1def53f0af411a4e0
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/Log.csv
@@ -0,0 +1,43 @@
+original,predictions
+724.821428571429,732.63330078125
+696.428571428571,692.6189575195312
+750.571428571429,708.2552490234375
+748.035714285714,717.3744506835938
+741.696428571429,646.7852783203125
+630.125,699.251708984375
+626.796875,669.52294921875
+619.03125,653.7056884765625
+615.703125,655.6961669921875
+588.4375,635.6104125976562
+578.59375,650.6466064453125
+576.40625,602.1397705078125
+580.578125,621.825439453125
+569.171875,622.3018188476562
+568.03125,590.0972290039062
+532.5,608.3982543945312
+520.296875,563.3687133789062
+525.375,590.8246459960938
+477.0625,620.4140625
+465.375,547.7076416015625
+463.25,476.70721435546875
+414.0,562.6091918945312
+407.0,507.80938720703125
+373.9375,507.58282470703125
+368.125,421.6654052734375
+343.90625,385.6040954589844
+341.96875,384.8360290527344
+330.34375,384.41729736328125
+300.9375,366.4085998535156
+298.125,340.28277587890625
+267.34375,339.543701171875
+262.734375,330.5943603515625
+234.71875,335.1805419921875
+201.25,331.268310546875
+194.25,340.6683349609375
+169.296875,341.9048767089844
+142.65625,332.6848449707031
+110.5,317.31134033203125
+60.15625,320.60076904296875
+19.140625,328.8138732910156
+5.359375,325.4771423339844
+0.765625,325.7332458496094
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/NoTransformation.csv b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/NoTransformation.csv
new file mode 100644
index 0000000000000000000000000000000000000000..9330ec0f2b8f57abdba4bede4f36923de90b40bb
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/NoTransformation.csv
@@ -0,0 +1,43 @@
+original,predictions
+724.821428571429,733.8521728515625
+696.428571428571,689.3428955078125
+750.571428571429,670.15185546875
+748.035714285714,622.4755249023438
+741.696428571429,637.7252807617188
+630.125,639.6415405273438
+626.796875,598.9541625976562
+619.03125,581.1470947265625
+615.703125,622.4326782226562
+588.4375,579.5543823242188
+578.59375,544.7575073242188
+576.40625,611.096435546875
+580.578125,588.2201538085938
+569.171875,568.5015869140625
+568.03125,565.6257934570312
+532.5,583.0615234375
+520.296875,534.1814575195312
+525.375,530.15380859375
+477.0625,525.5071411132812
+465.375,517.7937622070312
+463.25,629.8885498046875
+414.0,796.7608032226562
+407.0,896.6124267578125
+373.9375,852.8779907226562
+368.125,825.1931762695312
+343.90625,809.500732421875
+341.96875,781.916015625
+330.34375,741.1702880859375
+300.9375,777.7379760742188
+298.125,848.84814453125
+267.34375,712.3903198242188
+262.734375,701.8955688476562
+234.71875,743.140625
+201.25,832.5770874023438
+194.25,825.59814453125
+169.296875,853.6260375976562
+142.65625,865.0538940429688
+110.5,822.901611328125
+60.15625,809.9740600585938
+19.140625,850.9570922851562
+5.359375,809.3712768554688
+0.765625,819.896728515625
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/SquareRoot.csv b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/SquareRoot.csv
new file mode 100644
index 0000000000000000000000000000000000000000..eb8c7277b1f59407aa42628d2712b3ace080c015
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/SquareRoot.csv
@@ -0,0 +1,43 @@
+original,predictions
+724.821428571429,736.0545654296875
+696.428571428571,721.4066772460938
+750.571428571429,702.3803100585938
+748.035714285714,714.0524291992188
+741.696428571429,658.274658203125
+630.125,645.140869140625
+626.796875,644.2606201171875
+619.03125,655.6788940429688
+615.703125,599.9710083007812
+588.4375,629.6721801757812
+578.59375,582.6422119140625
+576.40625,578.9059448242188
+580.578125,571.5673217773438
+569.171875,639.6375122070312
+568.03125,571.3453979492188
+532.5,549.3250732421875
+520.296875,546.5228271484375
+525.375,496.8221740722656
+477.0625,524.48583984375
+465.375,510.9547424316406
+463.25,569.145751953125
+414.0,714.9201049804688
+407.0,838.8485717773438
+373.9375,1063.24072265625
+368.125,1308.258544921875
+343.90625,1458.994384765625
+341.96875,1575.776611328125
+330.34375,1628.0306396484375
+300.9375,1704.641357421875
+298.125,1785.0584716796875
+267.34375,1796.82861328125
+262.734375,1822.2037353515625
+234.71875,1856.30126953125
+201.25,1915.1636962890625
+194.25,1905.45458984375
+169.296875,1973.171142578125
+142.65625,2016.01318359375
+110.5,2104.3544921875
+60.15625,2119.7578125
+19.140625,2150.51708984375
+5.359375,2172.843017578125
+0.765625,2138.708984375
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/Standardization.csv b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/Standardization.csv
new file mode 100644
index 0000000000000000000000000000000000000000..263b10fce42df28a029793ebe68539c279b20663
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/Predictions/Standardization.csv
@@ -0,0 +1,43 @@
+original,predictions
+724.821428571429,756.6295166015625
+696.428571428571,800.9555053710938
+750.571428571429,745.2360229492188
+748.035714285714,778.6434326171875
+741.696428571429,802.8636474609375
+630.125,805.2674560546875
+626.796875,799.1098022460938
+619.03125,890.4715576171875
+615.703125,774.0389404296875
+588.4375,866.7249755859375
+578.59375,846.4957885742188
+576.40625,804.7560424804688
+580.578125,870.5142822265625
+569.171875,799.7620849609375
+568.03125,868.6627197265625
+532.5,867.8150634765625
+520.296875,867.6124267578125
+525.375,888.9931640625
+477.0625,907.0816650390625
+465.375,853.5992431640625
+463.25,884.44970703125
+414.0,696.6505737304688
+407.0,746.9124755859375
+373.9375,804.1859130859375
+368.125,916.2717895507812
+343.90625,1040.192138671875
+341.96875,1260.3509521484375
+330.34375,1379.0322265625
+300.9375,1363.556884765625
+298.125,1550.8292236328125
+267.34375,1460.5450439453125
+262.734375,1617.5673828125
+234.71875,1819.9097900390625
+201.25,1926.43359375
+194.25,1877.6903076171875
+169.296875,1989.887451171875
+142.65625,1952.82373046875
+110.5,2000.62646484375
+60.15625,1992.292236328125
+19.140625,2054.389892578125
+5.359375,2030.25341796875
+0.765625,2182.593505859375
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/cuberoot.ipynb b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/cuberoot.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..a0433cbf78e9d9ae2ff4fe36eaf67ae839feb442
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/cuberoot.ipynb
@@ -0,0 +1,1947 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "relative-spanish",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%matplotlib inline\n",
+ "import mxnet as mx\n",
+ "from mxnet import gluon\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "import json\n",
+ "from gluonts.dataset.common import ListDataset\n",
+ "from datetime import datetime, timedelta\n",
+ "from gluonts.model.simple_feedforward import SimpleFeedForwardEstimator\n",
+ "from gluonts.model.deepar import DeepAREstimator\n",
+ "from gluonts.mx.trainer import Trainer\n",
+ "from gluonts.evaluation.backtest import make_evaluation_predictions\n",
+ "from gluonts.evaluation import Evaluator\n",
+ "from gluonts.dataset.util import to_pandas\n",
+ "from gluonts.dataset.field_names import FieldName\n",
+ "from gluonts.model.forecast import SampleForecast\n",
+ "from pandas import Timestamp\n",
+ "import itertools\n",
+ "from gluonts.model.estimator import GluonEstimator"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "consolidated-russell",
+ "metadata": {},
+ "source": [
+ "# Data Loading"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "handled-ballet",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "filename='EstimatedRemainingTimeContext'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "anonymous-evans",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dataset= pd.read_csv(filename + \".csv\")\n",
+ "X= dataset[['name','time', 'countryCode', 'ipAddress', 'level',\n",
+ " 'producer']]\n",
+ "y= dataset.iloc[:,6]\n",
+ "#changing the names of the attributes\n",
+ "gluon_dataset= pd.DataFrame()\n",
+ "gluon_dataset['ds'] = pd.to_datetime(X[\"time\"])\n",
+ "gluon_dataset['y']=y\n",
+ "gluon_dataset['ds'] = gluon_dataset['ds'].dt.tz_convert(None)\n",
+ "gluon_dataset_copy=gluon_dataset.copy()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "original-finnish",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " ds | \n",
+ " y | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2021-02-18 11:31:12.752 | \n",
+ " 4050.000000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2021-02-18 11:31:32.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2021-02-18 11:32:02.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2021-02-18 11:32:32.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2021-02-18 11:33:02.752 | \n",
+ " 4153.250000 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 135 | \n",
+ " 2021-02-18 12:38:32.752 | \n",
+ " 110.500000 | \n",
+ "
\n",
+ " \n",
+ " 136 | \n",
+ " 2021-02-18 12:39:02.752 | \n",
+ " 60.156250 | \n",
+ "
\n",
+ " \n",
+ " 137 | \n",
+ " 2021-02-18 12:39:32.752 | \n",
+ " 19.140625 | \n",
+ "
\n",
+ " \n",
+ " 138 | \n",
+ " 2021-02-18 12:40:02.752 | \n",
+ " 5.359375 | \n",
+ "
\n",
+ " \n",
+ " 139 | \n",
+ " 2021-02-18 12:40:32.752 | \n",
+ " 0.765625 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
140 rows × 2 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " ds y\n",
+ "0 2021-02-18 11:31:12.752 4050.000000\n",
+ "1 2021-02-18 11:31:32.752 4045.500000\n",
+ "2 2021-02-18 11:32:02.752 4045.500000\n",
+ "3 2021-02-18 11:32:32.752 4045.500000\n",
+ "4 2021-02-18 11:33:02.752 4153.250000\n",
+ ".. ... ...\n",
+ "135 2021-02-18 12:38:32.752 110.500000\n",
+ "136 2021-02-18 12:39:02.752 60.156250\n",
+ "137 2021-02-18 12:39:32.752 19.140625\n",
+ "138 2021-02-18 12:40:02.752 5.359375\n",
+ "139 2021-02-18 12:40:32.752 0.765625\n",
+ "\n",
+ "[140 rows x 2 columns]"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "gluon_dataset_copy"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "adolescent-museum",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " This is separate from the ipykernel package so we can avoid doing imports until\n",
+ "/usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:5: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " \"\"\"\n"
+ ]
+ }
+ ],
+ "source": [
+ "for i in range(0,len(gluon_dataset_copy)):\n",
+ " ds=gluon_dataset_copy['ds'][i]\n",
+ " gluon_dataset_copy['ds'][i+1]=ds + timedelta(seconds=60)\n",
+ " ds=gluon_dataset['ds'][i]\n",
+ " gluon_dataset['ds'][i+1]=ds + timedelta(seconds=60)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "above-deposit",
+ "metadata": {},
+ "source": [
+ "# Data Transformation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "committed-conviction",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Cube root transformation\n",
+ "def cube_root_transformation(x: pd.Series) -> pd.Series:\n",
+ " return x ** (1 / 3)\n",
+ "\n",
+ "def cube_root_inverse_transformation(x: pd.Series) -> pd.Series:\n",
+ " return x ** 3"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "united-savage",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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+rD55pvTs2fPZu1vAidJkiSposyePZsBAwYwduxYIqLc4XSYlBLz5s1j9uzZjBs3rlnPsQmlJEmSpIqyfPlyhg4d2qWTN4CIYOjQoS2qaTSBkyRJklRxunryVqel12kCJ0mSJElVwgROkiRJkgrz5s1j1113Zdddd2XEiBGMGjXq349XrFjR5HOnTp3KJz/5yQ6Nz0FMJEmSJKkwdOhQpk2bBsB5551H//79Oeecc/69fdWqVfTo0XAaNX78eMaPH9+h8VkDJ0mSJElNOOWUUzjzzDPZc889Offcc3nooYfYe++92W233ZgwYQLPPPMMAHfffTeHH344kJO/U089lX333Zctt9ySiy++uF1isQZOkiRJUsX61KegqBBrN7vuChdd1LLnzJ49m/vvv5/u3buzePFi7r33Xnr06MGdd97JF77wBa677rr1nvP0009z1113sWTJErbbbjvOOuusZs/31hgTOEmSJEnagGOPPZbu3bsDsGjRIk4++WSeffZZIoKVK1c2+JzDDjuM3r1707t3b4YPH86cOXPYfPPN2xTHBhO4iPg1cDjwWkppx2Ld1cB2xS6DgIUppV0beO5MYAmwGliVUurYBqE16L//G264Yf31Q4bAXXfBoEGdHZEkSZLUflpaU9ZRNtpoo3/f//KXv8y73/1urr/+embOnMm+++7b4HN69+797/vdu3dn1apVbY6jOTVwlwM/Bq6oW5FS+mDd/Yj4HrCoiee/O6X0emsDVONSgssvhzFjYPfd165/5RX485/hySdhwoSyhSdJkiR1SYsWLWLUqFEAXH755Z167g0mcCmleyJibEPbIs869wFgv3aOS80wcyYsXgyf+AScfvra9dOm5QTu1VfLFZkkSZLUdZ177rmcfPLJXHDBBRx22GGdeu629oGbBMxJKT3byPYE3B4RCfh5SunSNp5PJeo6c+6yy7rrR4zItyZwkiRJUuudd955Da7fe++9+cc//vHvxxdccAEA++6777+bU9Z/7owZM9olprYmcMcDk5vYPjGl9FJEDAfuiIinU0r3NLRjRJwBnAEwevToNoZVG6ZNg27dYMcd110/bFhe/8orZQlLkiRJUgdp9TxwEdEDOAa4urF9UkovFbevAdcDezSx76UppfEppfHDhg1rbVg1Zdo02G476Ndv3fXdu8Pw4dbASZIkSV1NWybyPgB4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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "gluon_dataset_copy['y_orig']=gluon_dataset_copy['y']\n",
+ "transformed = cube_root_transformation(gluon_dataset_copy['y'])\n",
+ "gluon_dataset_copy['y']=transformed\n",
+ "\n",
+ "#plot before transformation\n",
+ "pd.plotting.register_matplotlib_converters()\n",
+ "f, ax = plt.subplots(figsize=(15,7))\n",
+ "gluon_dataset_copy.plot(kind='line', x='ds', y='y_orig', color='blue', label='Train', ax=ax)\n",
+ "plt.title(filename)\n",
+ "plt.show()\n",
+ "\n",
+ "#plot after transformation\n",
+ "pd.plotting.register_matplotlib_converters()\n",
+ "f, ax = plt.subplots(figsize=(15,7))\n",
+ "gluon_dataset_copy.plot(kind='line', x='ds', y='y', color='blue', label='Train', ax=ax)\n",
+ "#test.plot(kind='line', x='ds', y='y', color='red', label='Test', ax=ax)\n",
+ "plt.title(filename + \"_transformed using Square Root Transformation\")\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "historic-judgment",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " ds | \n",
+ " y | \n",
+ " y_orig | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2021-02-18 11:31:12.752 | \n",
+ " 15.939879 | \n",
+ " 4050.000000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2021-02-18 11:32:12.752 | \n",
+ " 15.933973 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2021-02-18 11:33:12.752 | \n",
+ " 15.933973 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2021-02-18 11:34:12.752 | \n",
+ " 15.933973 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2021-02-18 11:35:12.752 | \n",
+ " 16.074200 | \n",
+ " 4153.250000 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 135 | \n",
+ " 2021-02-18 13:46:12.752 | \n",
+ " 4.798669 | \n",
+ " 110.500000 | \n",
+ "
\n",
+ " \n",
+ " 136 | \n",
+ " 2021-02-18 13:47:12.752 | \n",
+ " 3.918263 | \n",
+ " 60.156250 | \n",
+ "
\n",
+ " \n",
+ " 137 | \n",
+ " 2021-02-18 13:48:12.752 | \n",
+ " 2.674969 | \n",
+ " 19.140625 | \n",
+ "
\n",
+ " \n",
+ " 138 | \n",
+ " 2021-02-18 13:49:12.752 | \n",
+ " 1.750000 | \n",
+ " 5.359375 | \n",
+ "
\n",
+ " \n",
+ " 139 | \n",
+ " 2021-02-18 13:50:12.752 | \n",
+ " 0.914826 | \n",
+ " 0.765625 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
140 rows × 3 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " ds y y_orig\n",
+ "0 2021-02-18 11:31:12.752 15.939879 4050.000000\n",
+ "1 2021-02-18 11:32:12.752 15.933973 4045.500000\n",
+ "2 2021-02-18 11:33:12.752 15.933973 4045.500000\n",
+ "3 2021-02-18 11:34:12.752 15.933973 4045.500000\n",
+ "4 2021-02-18 11:35:12.752 16.074200 4153.250000\n",
+ ".. ... ... ...\n",
+ "135 2021-02-18 13:46:12.752 4.798669 110.500000\n",
+ "136 2021-02-18 13:47:12.752 3.918263 60.156250\n",
+ "137 2021-02-18 13:48:12.752 2.674969 19.140625\n",
+ "138 2021-02-18 13:49:12.752 1.750000 5.359375\n",
+ "139 2021-02-18 13:50:12.752 0.914826 0.765625\n",
+ "\n",
+ "[140 rows x 3 columns]"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "gluon_dataset_copy"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "electoral-being",
+ "metadata": {},
+ "source": [
+ "# Splitting Data into Training and Testing"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "pending-captain",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "gluon_dataset_copy=gluon_dataset_copy.set_index('ds')\n",
+ "gluon_dataset=gluon_dataset.set_index('ds')\n",
+ "validation_time = \"2021-02-18 13:10:00\"\n",
+ "train_time = \"2021-02-18 13:30:00\"\n",
+ "test_time = \"2021-02-18 13:50:12\"\n",
+ "freq='1min'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "returning-patrol",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "validation_ds = ListDataset([{\"start\":gluon_dataset_copy.index[0], \n",
+ " \"target\":gluon_dataset_copy.y[:train_time]}],\n",
+ " freq=freq\n",
+ " )\n",
+ "train_ds = ListDataset([{\"start\":gluon_dataset_copy.index[0], \n",
+ " \"target\":gluon_dataset_copy.y[:validation_time]}],\n",
+ " freq=freq\n",
+ " )\n",
+ "test_ds = ListDataset([{\"start\":gluon_dataset_copy.index[0],\n",
+ " \"target\":gluon_dataset_copy.y[:test_time]}],\n",
+ " freq=freq\n",
+ " )\n",
+ "test_orig_ds = ListDataset([{\"start\":gluon_dataset.index[0],\n",
+ " \"target\":gluon_dataset.y[:test_time]}],\n",
+ " freq=freq\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "planned-programmer",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "train_entry = next(iter(train_ds))\n",
+ "train_entry.keys()\n",
+ "\n",
+ "validation_entry = next(iter(validation_ds))\n",
+ "validation_entry.keys()\n",
+ "\n",
+ "test_entry = next(iter(test_ds))\n",
+ "test_entry.keys()\n",
+ "\n",
+ "test_orig_entry = next(iter(test_orig_ds))\n",
+ "test_orig_entry.keys()\n",
+ "\n",
+ "test_series = to_pandas(test_entry)\n",
+ "train_series = to_pandas(train_entry)\n",
+ "validation_series = to_pandas(validation_entry)\n",
+ "\n",
+ "prediction_length = len(test_series) - len(validation_series)\n",
+ "context_length = [50,60]\n",
+ "\n",
+ "\n",
+ "list1=train_series.index\n",
+ "list2=train_entry['target']\n",
+ "\n",
+ "d = {'ds':list1,'y':list2}\n",
+ "df_train=pd.DataFrame(d, columns=['ds','y'])\n",
+ "\n",
+ "fig, ax = plt.subplots( figsize=(10, 7))\n",
+ "\n",
+ "# train_series.plot(ax=ax[0])\n",
+ "# ax[0].grid(which=\"both\")\n",
+ "# ax[0].legend([\"train series\"], loc=\"upper left\")\n",
+ "\n",
+ "test_series.plot(ax=ax)\n",
+ "plt.axvline(train_series.index[-1], color='r') # end of train dataset\n",
+ "plt.axvline(validation_series.index[-1], color='b') # end of validation dataset\n",
+ "ax.grid(which=\"both\")\n",
+ "ax.legend([\"test series\", \"end of train series\",\"end of validation series\"], loc=\"upper left\")\n",
+ "\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "dedicated-might",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "21"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "prediction_length"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "educational-samoa",
+ "metadata": {},
+ "source": [
+ "# Hyper-parameter Tuning"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "affiliated-journalist",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "batch_size = [75,100]\n",
+ "epochs = [5,10]\n",
+ "num_batches_per_epoch = [10,20]\n",
+ "learning_rate = [1e-3,1e-4]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "annual-filing",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total Possible Models 32\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sklearn.model_selection import ParameterGrid\n",
+ "\n",
+ "param_grid = {'batch_size': batch_size,\n",
+ " 'epochs': epochs,\n",
+ " 'num_batches_per_epoch': num_batches_per_epoch,\n",
+ " 'learning_rate': learning_rate,\n",
+ " 'context_length': context_length\n",
+ " }\n",
+ "grid = ParameterGrid(param_grid)\n",
+ "cnt = 0\n",
+ "for p in grid:\n",
+ " cnt = cnt+1\n",
+ "\n",
+ "print('Total Possible Models',cnt)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "consolidated-thinking",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.54it/s, epoch=1/5, avg_epoch_loss=3.58]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.17it/s, epoch=2/5, avg_epoch_loss=2.72]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.23it/s, epoch=3/5, avg_epoch_loss=1.93]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.94it/s, epoch=4/5, avg_epoch_loss=1.71]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.25it/s, epoch=5/5, avg_epoch_loss=1.57]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 8.83it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.35it/s, epoch=1/5, avg_epoch_loss=3.55]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.17it/s, epoch=2/5, avg_epoch_loss=2.75]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.44it/s, epoch=3/5, avg_epoch_loss=1.94]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.59it/s, epoch=4/5, avg_epoch_loss=1.84]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.32it/s, epoch=5/5, avg_epoch_loss=1.68]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.65it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.62it/s, epoch=1/5, avg_epoch_loss=4.17]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.39it/s, epoch=2/5, avg_epoch_loss=4]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.64it/s, epoch=3/5, avg_epoch_loss=3.86]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.32it/s, epoch=4/5, avg_epoch_loss=3.73]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.31it/s, epoch=5/5, avg_epoch_loss=3.61]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.76it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.11it/s, epoch=1/5, avg_epoch_loss=4.04]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.25it/s, epoch=2/5, avg_epoch_loss=3.9]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.73it/s, epoch=3/5, avg_epoch_loss=3.78]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.28it/s, epoch=4/5, avg_epoch_loss=3.67]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.15it/s, epoch=5/5, avg_epoch_loss=3.56]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.21it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:01<00:00, 10.05it/s, epoch=1/5, avg_epoch_loss=3.7]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.14it/s, epoch=2/5, avg_epoch_loss=2.34]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.09it/s, epoch=3/5, avg_epoch_loss=1.6]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.37it/s, epoch=4/5, avg_epoch_loss=1.43]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.72it/s, epoch=5/5, avg_epoch_loss=1.33]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.46it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.41it/s, epoch=1/5, avg_epoch_loss=3.66]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.87it/s, epoch=2/5, avg_epoch_loss=2.19]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.33it/s, epoch=3/5, avg_epoch_loss=1.48]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.16it/s, epoch=4/5, avg_epoch_loss=1.36]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.28it/s, epoch=5/5, avg_epoch_loss=1.19]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.39it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:03<00:00, 5.21it/s, epoch=1/5, avg_epoch_loss=5.2]\n",
+ "100%|██████████| 20/20 [00:03<00:00, 5.91it/s, epoch=2/5, avg_epoch_loss=4.64]\n",
+ "100%|██████████| 20/20 [00:04<00:00, 4.49it/s, epoch=3/5, avg_epoch_loss=4.19]\n",
+ "100%|██████████| 20/20 [00:03<00:00, 5.59it/s, epoch=4/5, avg_epoch_loss=3.85]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.36it/s, epoch=5/5, avg_epoch_loss=3.59]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.09it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:04<00:00, 4.29it/s, epoch=1/5, avg_epoch_loss=4.26]\n",
+ "100%|██████████| 20/20 [00:05<00:00, 3.78it/s, epoch=2/5, avg_epoch_loss=3.85]\n",
+ "100%|██████████| 20/20 [00:05<00:00, 3.46it/s, epoch=3/5, avg_epoch_loss=3.48]\n",
+ "100%|██████████| 20/20 [00:05<00:00, 3.56it/s, epoch=4/5, avg_epoch_loss=3.15]\n",
+ "100%|██████████| 20/20 [00:05<00:00, 3.70it/s, epoch=5/5, avg_epoch_loss=2.91]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.20it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:02<00:00, 3.47it/s, epoch=1/10, avg_epoch_loss=3.33]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 6.47it/s, epoch=2/10, avg_epoch_loss=2.71]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 5.96it/s, epoch=3/10, avg_epoch_loss=2.07]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 5.99it/s, epoch=4/10, avg_epoch_loss=1.76]\n",
+ "100%|██████████| 10/10 [00:03<00:00, 3.32it/s, epoch=5/10, avg_epoch_loss=1.57]\n",
+ "100%|██████████| 10/10 [00:03<00:00, 3.26it/s, epoch=6/10, avg_epoch_loss=1.49]\n",
+ "100%|██████████| 10/10 [00:03<00:00, 3.03it/s, epoch=7/10, avg_epoch_loss=1.41]\n",
+ "100%|██████████| 10/10 [00:03<00:00, 3.26it/s, epoch=8/10, avg_epoch_loss=1.33]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 4.24it/s, epoch=9/10, avg_epoch_loss=1.29]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 3.82it/s, epoch=10/10, avg_epoch_loss=1.22]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.44it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:02<00:00, 3.35it/s, epoch=1/10, avg_epoch_loss=3.85]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 4.34it/s, epoch=2/10, avg_epoch_loss=3.22]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 5.80it/s, epoch=3/10, avg_epoch_loss=2.28]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 5.90it/s, epoch=4/10, avg_epoch_loss=1.69]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 4.75it/s, epoch=5/10, avg_epoch_loss=1.61]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 4.18it/s, epoch=6/10, avg_epoch_loss=1.53]\n",
+ "100%|██████████| 10/10 [00:03<00:00, 3.31it/s, epoch=7/10, avg_epoch_loss=1.47]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 3.70it/s, epoch=8/10, avg_epoch_loss=1.33]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 4.87it/s, epoch=9/10, avg_epoch_loss=1.35]\n",
+ "100%|██████████| 10/10 [00:03<00:00, 3.22it/s, epoch=10/10, avg_epoch_loss=1.38]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.94it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:04<00:00, 2.39it/s, epoch=1/10, avg_epoch_loss=4.29]\n",
+ "100%|██████████| 10/10 [00:03<00:00, 2.63it/s, epoch=2/10, avg_epoch_loss=4.14]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 3.55it/s, epoch=3/10, avg_epoch_loss=4]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 3.49it/s, epoch=4/10, avg_epoch_loss=3.89]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 3.38it/s, epoch=5/10, avg_epoch_loss=3.79]\n",
+ "100%|██████████| 10/10 [00:03<00:00, 3.25it/s, epoch=6/10, avg_epoch_loss=3.71]\n",
+ "100%|██████████| 10/10 [00:03<00:00, 2.89it/s, epoch=7/10, avg_epoch_loss=3.61]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 4.33it/s, epoch=8/10, avg_epoch_loss=3.52]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 3.39it/s, epoch=9/10, avg_epoch_loss=3.42]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 3.91it/s, epoch=10/10, avg_epoch_loss=3.3]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.63it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:03<00:00, 3.33it/s, epoch=1/10, avg_epoch_loss=4.05]\n",
+ "100%|██████████| 10/10 [00:03<00:00, 3.28it/s, epoch=2/10, avg_epoch_loss=3.89]\n",
+ "100%|██████████| 10/10 [00:03<00:00, 3.02it/s, epoch=3/10, avg_epoch_loss=3.74]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 3.99it/s, epoch=4/10, avg_epoch_loss=3.58]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 3.46it/s, epoch=5/10, avg_epoch_loss=3.42]\n",
+ "100%|██████████| 10/10 [00:02<00:00, 3.90it/s, epoch=6/10, avg_epoch_loss=3.25]\n",
+ "100%|██████████| 10/10 [00:05<00:00, 1.76it/s, epoch=7/10, avg_epoch_loss=3.1]\n",
+ "100%|██████████| 10/10 [00:04<00:00, 2.02it/s, epoch=8/10, avg_epoch_loss=2.94]\n",
+ "100%|██████████| 10/10 [00:07<00:00, 1.42it/s, epoch=9/10, avg_epoch_loss=2.77]\n",
+ "100%|██████████| 10/10 [00:06<00:00, 1.55it/s, epoch=10/10, avg_epoch_loss=2.57]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.56it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:11<00:00, 1.81it/s, epoch=1/10, avg_epoch_loss=2.41]\n",
+ "100%|██████████| 20/20 [00:09<00:00, 2.17it/s, epoch=2/10, avg_epoch_loss=1.67]\n",
+ "100%|██████████| 20/20 [00:05<00:00, 3.80it/s, epoch=3/10, avg_epoch_loss=1.43]\n",
+ "100%|██████████| 20/20 [00:07<00:00, 2.72it/s, epoch=4/10, avg_epoch_loss=1.28]\n",
+ "100%|██████████| 20/20 [00:04<00:00, 4.11it/s, epoch=5/10, avg_epoch_loss=1.16]\n",
+ "100%|██████████| 20/20 [00:04<00:00, 4.84it/s, epoch=6/10, avg_epoch_loss=1.09]\n",
+ "100%|██████████| 20/20 [00:05<00:00, 3.69it/s, epoch=7/10, avg_epoch_loss=1.01]\n",
+ "100%|██████████| 20/20 [00:04<00:00, 4.08it/s, epoch=8/10, avg_epoch_loss=0.957]\n",
+ "100%|██████████| 20/20 [00:03<00:00, 5.50it/s, epoch=9/10, avg_epoch_loss=0.977]\n",
+ "100%|██████████| 20/20 [00:04<00:00, 4.98it/s, epoch=10/10, avg_epoch_loss=0.908]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.35it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:07<00:00, 2.78it/s, epoch=1/10, avg_epoch_loss=2.86]\n",
+ "100%|██████████| 20/20 [00:08<00:00, 2.39it/s, epoch=2/10, avg_epoch_loss=1.72]\n",
+ "100%|██████████| 20/20 [00:08<00:00, 2.42it/s, epoch=3/10, avg_epoch_loss=1.53]\n",
+ "100%|██████████| 20/20 [00:07<00:00, 2.51it/s, epoch=4/10, avg_epoch_loss=1.4]\n",
+ "100%|██████████| 20/20 [00:16<00:00, 1.22it/s, epoch=5/10, avg_epoch_loss=1.2] \n",
+ "100%|██████████| 20/20 [00:09<00:00, 2.17it/s, epoch=6/10, avg_epoch_loss=1.04]\n",
+ "100%|██████████| 20/20 [00:08<00:00, 2.31it/s, epoch=7/10, avg_epoch_loss=0.969]\n",
+ "100%|██████████| 20/20 [00:09<00:00, 2.06it/s, epoch=8/10, avg_epoch_loss=0.994]\n",
+ "100%|██████████| 20/20 [00:16<00:00, 1.25it/s, epoch=9/10, avg_epoch_loss=0.933]\n",
+ "100%|██████████| 20/20 [00:16<00:00, 1.18it/s, epoch=10/10, avg_epoch_loss=0.809]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 2.23it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:15<00:00, 1.27it/s, epoch=1/10, avg_epoch_loss=3.97]\n",
+ "100%|██████████| 20/20 [00:18<00:00, 1.10it/s, epoch=2/10, avg_epoch_loss=3.65]\n",
+ "100%|██████████| 20/20 [00:29<00:00, 1.47s/it, epoch=3/10, avg_epoch_loss=3.38]\n",
+ "100%|██████████| 20/20 [00:25<00:00, 1.25s/it, epoch=4/10, avg_epoch_loss=3.16]\n",
+ "100%|██████████| 20/20 [00:33<00:00, 1.65s/it, epoch=5/10, avg_epoch_loss=2.93]\n",
+ "100%|██████████| 20/20 [00:40<00:00, 2.02s/it, epoch=6/10, avg_epoch_loss=2.64]\n",
+ "100%|██████████| 20/20 [00:23<00:00, 1.15s/it, epoch=7/10, avg_epoch_loss=2.26]\n",
+ "100%|██████████| 20/20 [00:04<00:00, 4.54it/s, epoch=8/10, avg_epoch_loss=1.87]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.23it/s, epoch=9/10, avg_epoch_loss=1.64]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.31it/s, epoch=10/10, avg_epoch_loss=1.56]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.26it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 6.85it/s, epoch=1/10, avg_epoch_loss=4.26]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.54it/s, epoch=2/10, avg_epoch_loss=3.82]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 6.72it/s, epoch=3/10, avg_epoch_loss=3.48]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 6.80it/s, epoch=4/10, avg_epoch_loss=3.22]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 6.76it/s, epoch=5/10, avg_epoch_loss=3.02]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.11it/s, epoch=6/10, avg_epoch_loss=2.77]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.58it/s, epoch=7/10, avg_epoch_loss=2.47]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.36it/s, epoch=8/10, avg_epoch_loss=2.1]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.31it/s, epoch=9/10, avg_epoch_loss=1.76]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.64it/s, epoch=10/10, avg_epoch_loss=1.55]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.52it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 5.75it/s, epoch=1/5, avg_epoch_loss=4.04]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.60it/s, epoch=2/5, avg_epoch_loss=3.49]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.20it/s, epoch=3/5, avg_epoch_loss=2.55]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.25it/s, epoch=4/5, avg_epoch_loss=1.84]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.52it/s, epoch=5/5, avg_epoch_loss=1.66]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.75it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 6.67it/s, epoch=1/5, avg_epoch_loss=3.59]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.22it/s, epoch=2/5, avg_epoch_loss=2.93]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 7.27it/s, epoch=3/5, avg_epoch_loss=2.12]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 7.65it/s, epoch=4/5, avg_epoch_loss=1.57]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 7.82it/s, epoch=5/5, avg_epoch_loss=1.58]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.64it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.24it/s, epoch=1/5, avg_epoch_loss=4.34]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.33it/s, epoch=2/5, avg_epoch_loss=4.15]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.41it/s, epoch=3/5, avg_epoch_loss=3.99]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.31it/s, epoch=4/5, avg_epoch_loss=3.84]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.35it/s, epoch=5/5, avg_epoch_loss=3.7]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.81it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 6.50it/s, epoch=1/5, avg_epoch_loss=3.9]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 7.64it/s, epoch=2/5, avg_epoch_loss=3.75]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.29it/s, epoch=3/5, avg_epoch_loss=3.6]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.50it/s, epoch=4/5, avg_epoch_loss=3.47]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 7.76it/s, epoch=5/5, avg_epoch_loss=3.33]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.55it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 7.66it/s, epoch=1/5, avg_epoch_loss=2.89]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.64it/s, epoch=2/5, avg_epoch_loss=1.69]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.20it/s, epoch=3/5, avg_epoch_loss=1.47]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.18it/s, epoch=4/5, avg_epoch_loss=1.27]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.32it/s, epoch=5/5, avg_epoch_loss=1.14]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.87it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 7.48it/s, epoch=1/5, avg_epoch_loss=2.95]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.53it/s, epoch=2/5, avg_epoch_loss=1.68]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.02it/s, epoch=3/5, avg_epoch_loss=1.46]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.68it/s, epoch=4/5, avg_epoch_loss=1.3]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.32it/s, epoch=5/5, avg_epoch_loss=1.24]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.16it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 6.67it/s, epoch=1/5, avg_epoch_loss=4.65]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.74it/s, epoch=2/5, avg_epoch_loss=4.36]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.42it/s, epoch=3/5, avg_epoch_loss=4.1]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.05it/s, epoch=4/5, avg_epoch_loss=3.87]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.17it/s, epoch=5/5, avg_epoch_loss=3.64]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.51it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:03<00:00, 6.50it/s, epoch=1/5, avg_epoch_loss=4]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.30it/s, epoch=2/5, avg_epoch_loss=3.65]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.80it/s, epoch=3/5, avg_epoch_loss=3.41]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.93it/s, epoch=4/5, avg_epoch_loss=3.23]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.74it/s, epoch=5/5, avg_epoch_loss=3.05]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.50it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 6.98it/s, epoch=1/10, avg_epoch_loss=3.98]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.48it/s, epoch=2/10, avg_epoch_loss=3.38]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.43it/s, epoch=3/10, avg_epoch_loss=2.7]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.55it/s, epoch=4/10, avg_epoch_loss=1.93]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.81it/s, epoch=5/10, avg_epoch_loss=1.63]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.79it/s, epoch=6/10, avg_epoch_loss=1.54]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 10.00it/s, epoch=7/10, avg_epoch_loss=1.43]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.17it/s, epoch=8/10, avg_epoch_loss=1.39]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.72it/s, epoch=9/10, avg_epoch_loss=1.3]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.24it/s, epoch=10/10, avg_epoch_loss=1.3]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.91it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 6.94it/s, epoch=1/10, avg_epoch_loss=3.66]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.61it/s, epoch=2/10, avg_epoch_loss=3.15]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.04it/s, epoch=3/10, avg_epoch_loss=2.47]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.06it/s, epoch=4/10, avg_epoch_loss=1.71]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.20it/s, epoch=5/10, avg_epoch_loss=1.57]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.35it/s, epoch=6/10, avg_epoch_loss=1.45]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.89it/s, epoch=7/10, avg_epoch_loss=1.35]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.01it/s, epoch=8/10, avg_epoch_loss=1.31]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.08it/s, epoch=9/10, avg_epoch_loss=1.25]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.60it/s, epoch=10/10, avg_epoch_loss=1.15]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.79it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.42it/s, epoch=1/10, avg_epoch_loss=4.48]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.67it/s, epoch=2/10, avg_epoch_loss=4.25]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.85it/s, epoch=3/10, avg_epoch_loss=4.03]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.95it/s, epoch=4/10, avg_epoch_loss=3.84]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.03it/s, epoch=5/10, avg_epoch_loss=3.67]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.78it/s, epoch=6/10, avg_epoch_loss=3.49]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.45it/s, epoch=7/10, avg_epoch_loss=3.33]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.58it/s, epoch=8/10, avg_epoch_loss=3.18]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.66it/s, epoch=9/10, avg_epoch_loss=3.07]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.68it/s, epoch=10/10, avg_epoch_loss=2.96]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.27it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.50it/s, epoch=1/10, avg_epoch_loss=4.16]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.49it/s, epoch=2/10, avg_epoch_loss=3.98]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.73it/s, epoch=3/10, avg_epoch_loss=3.81]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.88it/s, epoch=4/10, avg_epoch_loss=3.65]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.75it/s, epoch=5/10, avg_epoch_loss=3.49]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.90it/s, epoch=6/10, avg_epoch_loss=3.34]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.88it/s, epoch=7/10, avg_epoch_loss=3.21]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.56it/s, epoch=8/10, avg_epoch_loss=3.11]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.50it/s, epoch=9/10, avg_epoch_loss=3]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.65it/s, epoch=10/10, avg_epoch_loss=2.87]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.35it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.98it/s, epoch=1/10, avg_epoch_loss=3.67]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.86it/s, epoch=2/10, avg_epoch_loss=2.21]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.03it/s, epoch=3/10, avg_epoch_loss=1.58]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.90it/s, epoch=4/10, avg_epoch_loss=1.38]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.71it/s, epoch=5/10, avg_epoch_loss=1.41]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.67it/s, epoch=6/10, avg_epoch_loss=1.2]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.42it/s, epoch=7/10, avg_epoch_loss=1.04]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.31it/s, epoch=8/10, avg_epoch_loss=1.02]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.35it/s, epoch=9/10, avg_epoch_loss=0.922]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.79it/s, epoch=10/10, avg_epoch_loss=0.878]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.38it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.51it/s, epoch=1/10, avg_epoch_loss=2.69]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.74it/s, epoch=2/10, avg_epoch_loss=1.64]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.79it/s, epoch=3/10, avg_epoch_loss=1.43]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.93it/s, epoch=4/10, avg_epoch_loss=1.22]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.08it/s, epoch=5/10, avg_epoch_loss=1.27]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.67it/s, epoch=6/10, avg_epoch_loss=1.05]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.51it/s, epoch=7/10, avg_epoch_loss=0.916]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.77it/s, epoch=8/10, avg_epoch_loss=1.02]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.01it/s, epoch=9/10, avg_epoch_loss=0.919]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.36it/s, epoch=10/10, avg_epoch_loss=0.869]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.46it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.59it/s, epoch=1/10, avg_epoch_loss=4.23]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.55it/s, epoch=2/10, avg_epoch_loss=3.83]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.52it/s, epoch=3/10, avg_epoch_loss=3.41]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.78it/s, epoch=4/10, avg_epoch_loss=3.03]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.80it/s, epoch=5/10, avg_epoch_loss=2.79]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.20it/s, epoch=6/10, avg_epoch_loss=2.58]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.51it/s, epoch=7/10, avg_epoch_loss=2.31]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.43it/s, epoch=8/10, avg_epoch_loss=2]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.14it/s, epoch=9/10, avg_epoch_loss=1.78]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.10it/s, epoch=10/10, avg_epoch_loss=1.67]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.19it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 7.08it/s, epoch=1/10, avg_epoch_loss=4.63]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.44it/s, epoch=2/10, avg_epoch_loss=4.28]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.47it/s, epoch=3/10, avg_epoch_loss=3.96]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.07it/s, epoch=4/10, avg_epoch_loss=3.63]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.15it/s, epoch=5/10, avg_epoch_loss=3.31]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.12it/s, epoch=6/10, avg_epoch_loss=3.08]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.85it/s, epoch=7/10, avg_epoch_loss=2.86]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.76it/s, epoch=8/10, avg_epoch_loss=2.61]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.06it/s, epoch=9/10, avg_epoch_loss=2.29]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.21it/s, epoch=10/10, avg_epoch_loss=1.95]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.13it/s]\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " MSE abs_error abs_target_sum abs_target_mean seasonal_error \\\n",
+ "0 0.114951 5.884271 176.689758 8.413798 0.167132 \n",
+ "1 0.396702 11.613831 176.689758 8.413798 0.167132 \n",
+ "2 6.695676 28.184544 176.689758 8.413798 0.167132 \n",
+ "3 8.183314 21.154402 176.689758 8.413798 0.167132 \n",
+ "4 0.129381 7.093830 176.689758 8.413798 0.167132 \n",
+ "5 0.109271 5.632631 176.689758 8.413798 0.167132 \n",
+ "6 25.914074 101.727280 176.689758 8.413798 0.167132 \n",
+ "7 1.710500 16.375370 176.689758 8.413798 0.167132 \n",
+ "8 0.089681 5.950772 176.689758 8.413798 0.167132 \n",
+ "9 0.476329 12.590548 176.689758 8.413798 0.167132 \n",
+ "10 8.309919 44.126926 176.689758 8.413798 0.167132 \n",
+ "11 1.170618 16.118893 176.689758 8.413798 0.167132 \n",
+ "12 1.939580 27.524643 176.689758 8.413798 0.167132 \n",
+ "13 2.368986 30.620550 176.689758 8.413798 0.167132 \n",
+ "14 0.289544 9.470675 176.689758 8.413798 0.167132 \n",
+ "15 0.216463 7.798676 176.689758 8.413798 0.167132 \n",
+ "16 1.494676 24.286825 176.689758 8.413798 0.167132 \n",
+ "17 0.714371 15.919573 176.689758 8.413798 0.167132 \n",
+ "18 67.621047 138.670074 176.689758 8.413798 0.167132 \n",
+ "19 4.152391 36.389740 176.689758 8.413798 0.167132 \n",
+ "20 0.117574 5.809213 176.689758 8.413798 0.167132 \n",
+ "21 1.230838 21.336941 176.689758 8.413798 0.167132 \n",
+ "22 6.774455 42.688221 176.689758 8.413798 0.167132 \n",
+ "23 4.606079 44.001968 176.689758 8.413798 0.167132 \n",
+ "24 0.793236 16.730883 176.689758 8.413798 0.167132 \n",
+ "25 0.335834 9.545027 176.689758 8.413798 0.167132 \n",
+ "26 26.247733 117.800011 176.689758 8.413798 0.167132 \n",
+ "27 6.028706 27.968040 176.689758 8.413798 0.167132 \n",
+ "28 0.896561 18.501429 176.689758 8.413798 0.167132 \n",
+ "29 1.077744 21.129435 176.689758 8.413798 0.167132 \n",
+ "30 0.185906 8.231163 176.689758 8.413798 0.167132 \n",
+ "31 0.823760 11.948656 176.689758 8.413798 0.167132 \n",
+ "\n",
+ " MASE MAPE sMAPE OWA MSIS ... wQuantileLoss[0.5] \\\n",
+ "0 1.676535 0.033530 0.033134 NaN 23.705317 ... 0.033303 \n",
+ "1 3.308990 0.067751 0.064586 NaN 33.417631 ... 0.065730 \n",
+ "2 8.030286 0.160005 0.165507 NaN 226.266106 ... 0.159514 \n",
+ "3 6.027271 0.120757 0.123664 NaN 327.842787 ... 0.119726 \n",
+ "4 2.021160 0.041151 0.040125 NaN 15.350165 ... 0.040149 \n",
+ "5 1.604838 0.031735 0.032420 NaN 10.711503 ... 0.031879 \n",
+ "6 28.983940 0.580009 0.426568 NaN 385.325041 ... 0.575740 \n",
+ "7 4.665639 0.093847 0.089317 NaN 148.199234 ... 0.092679 \n",
+ "8 1.695482 0.034270 0.033500 NaN 12.635948 ... 0.033679 \n",
+ "9 3.587274 0.073264 0.069845 NaN 29.966793 ... 0.071258 \n",
+ "10 12.572558 0.252392 0.217692 NaN 287.068949 ... 0.249742 \n",
+ "11 4.592564 0.091407 0.093435 NaN 157.831948 ... 0.091227 \n",
+ "12 7.842268 0.158674 0.145500 NaN 225.881334 ... 0.155779 \n",
+ "13 8.724348 0.176610 0.160433 NaN 255.600059 ... 0.173301 \n",
+ "14 2.698366 0.054797 0.053131 NaN 20.961876 ... 0.053601 \n",
+ "15 2.221984 0.045742 0.044047 NaN 17.125086 ... 0.044138 \n",
+ "16 6.919755 0.139870 0.129585 NaN 57.624657 ... 0.137455 \n",
+ "17 4.535774 0.092741 0.087321 NaN 41.821634 ... 0.090099 \n",
+ "18 39.509609 0.793212 1.285890 NaN 374.968972 ... 0.784822 \n",
+ "19 10.368094 0.207265 0.183237 NaN 237.049343 ... 0.205953 \n",
+ "20 1.655150 0.032552 0.033028 NaN 11.970896 ... 0.032878 \n",
+ "21 6.079280 0.123512 0.114879 NaN 119.257896 ... 0.120759 \n",
+ "22 12.162645 0.240435 0.253832 NaN 339.800233 ... 0.241600 \n",
+ "23 12.536956 0.251986 0.219096 NaN 145.989345 ... 0.249035 \n",
+ "24 4.766931 0.096927 0.091414 NaN 39.602828 ... 0.094691 \n",
+ "25 2.719551 0.055688 0.053554 NaN 27.116543 ... 0.054021 \n",
+ "26 33.563351 0.669450 0.497134 NaN 232.218100 ... 0.666705 \n",
+ "27 7.968600 0.158115 0.147707 NaN 216.569292 ... 0.158289 \n",
+ "28 5.271391 0.107155 0.100602 NaN 116.603457 ... 0.104711 \n",
+ "29 6.020158 0.121589 0.113864 NaN 147.976781 ... 0.119585 \n",
+ "30 2.345207 0.047583 0.046412 NaN 13.066497 ... 0.046585 \n",
+ "31 3.404388 0.066793 0.069894 NaN 60.492367 ... 0.067625 \n",
+ "\n",
+ " wQuantileLoss[0.9] mean_absolute_QuantileLoss mean_wQuantileLoss \\\n",
+ "0 0.018275 4.004072 0.022662 \n",
+ "1 0.035904 7.514834 0.042531 \n",
+ "2 0.179311 32.153977 0.181980 \n",
+ "3 0.207548 38.076844 0.215501 \n",
+ "4 0.019791 4.173879 0.023623 \n",
+ "5 0.013589 3.691853 0.020895 \n",
+ "6 0.347842 64.991383 0.367828 \n",
+ "7 0.123408 20.452884 0.115756 \n",
+ "8 0.017276 3.635470 0.020575 \n",
+ "9 0.026809 8.402995 0.047558 \n",
+ "10 0.251540 43.202561 0.244511 \n",
+ "11 0.113315 21.626544 0.122398 \n",
+ "12 0.036753 25.077686 0.141931 \n",
+ "13 0.039398 28.190418 0.159548 \n",
+ "14 0.022454 5.938136 0.033608 \n",
+ "15 0.022062 5.285680 0.029915 \n",
+ "16 0.044700 16.413630 0.092895 \n",
+ "17 0.028402 10.805395 0.061155 \n",
+ "18 0.156267 87.207102 0.493561 \n",
+ "19 0.253080 37.236442 0.210745 \n",
+ "20 0.008435 3.411364 0.019307 \n",
+ "21 0.032615 17.189796 0.097288 \n",
+ "22 0.274214 49.569186 0.280544 \n",
+ "23 0.160315 28.115635 0.159124 \n",
+ "24 0.031437 11.998743 0.067909 \n",
+ "25 0.020452 6.369932 0.036052 \n",
+ "26 0.271957 62.184830 0.351944 \n",
+ "27 0.165612 27.994979 0.158441 \n",
+ "28 0.026292 15.137104 0.085671 \n",
+ "29 0.028549 18.794109 0.106368 \n",
+ "30 0.016739 4.924602 0.027871 \n",
+ "31 0.027815 9.436146 0.053405 \n",
+ "\n",
+ " MAE_Coverage epochs learning_rate num_batches_per_epoch \\\n",
+ "0 0.138095 5 0.0010 10 \n",
+ "1 0.153968 5 0.0010 10 \n",
+ "2 0.074603 5 0.0001 10 \n",
+ "3 0.106349 5 0.0001 10 \n",
+ "4 0.169841 5 0.0010 20 \n",
+ "5 0.182540 5 0.0010 20 \n",
+ "6 0.217460 5 0.0001 20 \n",
+ "7 0.074603 5 0.0001 20 \n",
+ "8 0.169841 10 0.0010 10 \n",
+ "9 0.357143 10 0.0010 10 \n",
+ "10 0.153968 10 0.0001 10 \n",
+ "11 0.090476 10 0.0001 10 \n",
+ "12 0.500000 10 0.0010 20 \n",
+ "13 0.500000 10 0.0010 20 \n",
+ "14 0.119048 10 0.0001 20 \n",
+ "15 0.166667 10 0.0001 20 \n",
+ "16 0.404762 5 0.0010 10 \n",
+ "17 0.373016 5 0.0010 10 \n",
+ "18 0.214286 5 0.0001 10 \n",
+ "19 0.153968 5 0.0001 10 \n",
+ "20 0.182540 5 0.0010 20 \n",
+ "21 0.436508 5 0.0010 20 \n",
+ "22 0.074603 5 0.0001 20 \n",
+ "23 0.201587 5 0.0001 20 \n",
+ "24 0.420635 10 0.0010 10 \n",
+ "25 0.214286 10 0.0010 10 \n",
+ "26 0.246032 10 0.0001 10 \n",
+ "27 0.138095 10 0.0001 10 \n",
+ "28 0.500000 10 0.0010 20 \n",
+ "29 0.500000 10 0.0010 20 \n",
+ "30 0.134921 10 0.0001 20 \n",
+ "31 0.185714 10 0.0001 20 \n",
+ "\n",
+ " context_length forecast \n",
+ "0 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "1 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "2 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "3 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "4 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "5 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "6 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "7 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "8 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "9 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "10 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "11 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "12 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "13 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "14 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "15 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "16 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "17 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "18 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "19 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "20 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "21 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "22 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "23 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "24 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "25 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "26 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "27 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "28 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "29 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "30 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "31 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "\n",
+ "[32 rows x 30 columns]\n"
+ ]
+ }
+ ],
+ "source": [
+ "all_params = [dict(zip(param_grid.keys(), v)) for v in itertools.product(*param_grid.values())]\n",
+ "agg_metrics_all=list()\n",
+ "item_metrics_all=list()\n",
+ "for params in all_params:\n",
+ " estimator = DeepAREstimator(\n",
+ " #num_hidden_dimensions=[params['num_hidden_dimensions']],\n",
+ " prediction_length=prediction_length,\n",
+ " context_length=params['context_length'],\n",
+ " freq=freq,\n",
+ " trainer=Trainer(ctx=\"cpu\",\n",
+ " epochs=params['epochs'],\n",
+ " learning_rate=params['learning_rate'],\n",
+ " num_batches_per_epoch=params['num_batches_per_epoch']\n",
+ " )\n",
+ " )\n",
+ " predictor = estimator.train(training_data = train_ds)\n",
+ " forecast_it, ts_it = make_evaluation_predictions(\n",
+ " dataset=validation_ds, # test dataset\n",
+ " predictor=predictor, # predictor\n",
+ " num_samples=20, # number of sample paths we want for evaluation\n",
+ " )\n",
+ " forecasts = list(forecast_it)\n",
+ " #print(forecasts)\n",
+ " tss = list(ts_it)\n",
+ " evaluator = Evaluator(quantiles=[0.1, 0.5, 0.9])\n",
+ " agg_metrics, item_metrics = evaluator(iter(tss), iter(forecasts), num_series=len(test_ds))\n",
+ " #agg_metrics['num_hidden_dimensions'] = params['num_hidden_dimensions']\n",
+ " agg_metrics['epochs'] = params['epochs']\n",
+ " agg_metrics['learning_rate'] = params['learning_rate']\n",
+ " agg_metrics['num_batches_per_epoch'] = params['num_batches_per_epoch']\n",
+ " agg_metrics['context_length'] = params['context_length']\n",
+ " agg_metrics['forecast'] = forecasts\n",
+ " agg_metrics_all.append(agg_metrics)\n",
+ " item_metrics_all.append(item_metrics)\n",
+ " \n",
+ "dataframe = pd.DataFrame(agg_metrics_all)\n",
+ "print(dataframe)\n",
+ "sorted1 = dataframe.sort_values(by=['MAPE'])\n",
+ "sorted1 = sorted1.reset_index(drop=True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "civic-aging",
+ "metadata": {},
+ "source": [
+ "# Forecast and Evaluation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "convinced-theology",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "estimator = DeepAREstimator(\n",
+ " #num_hidden_dimensions=[sorted1['num_hidden_dimensions'][0]],\n",
+ " prediction_length=prediction_length,\n",
+ " context_length=sorted1['context_length'][0],\n",
+ " freq=freq,\n",
+ " trainer=Trainer(ctx=\"cpu\",\n",
+ " epochs=sorted1['epochs'][0],\n",
+ " learning_rate=sorted1['learning_rate'][0],\n",
+ " num_batches_per_epoch=sorted1['num_batches_per_epoch'][0]\n",
+ " )\n",
+ ")\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "liquid-nutrition",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.59it/s, epoch=1/5, avg_epoch_loss=3.09]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.32it/s, epoch=2/5, avg_epoch_loss=2.05]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.29it/s, epoch=3/5, avg_epoch_loss=1.61]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.89it/s, epoch=4/5, avg_epoch_loss=1.41]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.90it/s, epoch=5/5, avg_epoch_loss=1.36]\n"
+ ]
+ }
+ ],
+ "source": [
+ "predictor = estimator.train(train_ds)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "adapted-sequence",
+ "metadata": {},
+ "source": [
+ "# Save the model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "collected-faculty",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING:root:Serializing RepresentableBlockPredictor instances does not save the prediction network structure in a backwards-compatible manner. Be careful not to use this method in production.\n"
+ ]
+ }
+ ],
+ "source": [
+ "from pathlib import Path\n",
+ "predictor.serialize(Path(\"Models/CubeRoot\"))\n",
+ "\n",
+ "# loads it back\n",
+ "# from gluonts.model.predictor import Predictor\n",
+ "# predictor_deserialized = Predictor.deserialize(Path(\"Models/CubeRoot\"))\n",
+ "# print(predictor_deserialized)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "strong-offense",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "forecast_it, ts_it = make_evaluation_predictions(\n",
+ " dataset=test_ds, # test dataset\n",
+ " predictor=predictor, # predictor\n",
+ " num_samples=50, # number of sample paths we want for evaluation\n",
+ ")\n",
+ "\n",
+ "forecasts = list(forecast_it)\n",
+ "tss = list(ts_it)\n",
+ "ts_entry = tss[0]\n",
+ "forecast_entry = forecasts[0]\n",
+ "\n",
+ "forecasts_val=sorted1['forecast'][0]\n",
+ "forecast_entry_val = forecasts_val[0]\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "saving-devon",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#return forecast to original\n",
+ "inv = np.vectorize(cube_root_inverse_transformation)\n",
+ "\n",
+ "forecast_entry.samples = inv(forecast_entry.samples)\n",
+ "forecast_entry_inv=SampleForecast(freq=freq, start_date=forecast_entry.start_date, samples=forecast_entry.samples)\n",
+ "\n",
+ "forecast_entry_val.samples = inv(forecast_entry_val.samples)\n",
+ "forecast_entry_val_inv=SampleForecast(freq=freq, start_date=forecast_entry_val.start_date, samples=forecast_entry_val.samples)\n",
+ "\n",
+ "ts_entry_inv=inv(ts_entry)\n",
+ "ts_entry_inv_df=pd.DataFrame(ts_entry_inv, index=ts_entry.index)\n",
+ "tss_inv=list()\n",
+ "tss_inv.append(ts_entry_inv_df)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "special-attendance",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAAGYCAYAAACXjTyPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABrHklEQVR4nO3dd3zV1eH/8de5M3uShL2Uvac4QIYKbR1FbWurArVq9Vc7vh3WDivaav3222XVanFrtWKtq2rdRlwURAERZAhhz+ydO87vj3tzTUhYyb25ueH9fDx4kPuZ5+aQ3DfnnM85xlqLiIiIiMSOI94FEBEREenqFLhEREREYkyBS0RERCTGFLhEREREYkyBS0RERCTGXPEuwOF069bN9u/fP6rXrK6uJjU1NarXlNhTvSUe1VliUr0lHtVZ57FixYoD1tq81vZ16sDVv39/Pvjgg6hes7CwkOnTp0f1mhJ7qrfEozpLTKq3xKM66zyMMVsPtU9diiIiIiIxpsAlIiIiEmMKXCIiIiIx1qnHcLXG5/OxY8cO6urq2nR+ZmYm69ati3KpJNY6U70lJSXRu3dv3G53vIsiIiIJIuEC144dO0hPT6d///4YY475/MrKStLT02NQMomlzlJv1lqKi4vZsWMHAwYMiHdxREQkQSRcl2JdXR25ubltClsi7WWMITc3t80trCIicnxKuMAFKGxJXOnfn4iIHKuEDFwiIiIiiUSBK0qKiooYOXJkvIvBypUrefHFFyOvn3vuOW699dY4lkhEREQUuDoxv99/zOccHLjOPfdcrrvuumgWS0RERI6RAlcb/fGPf2TkyJGMHDmSP//5z0AoIF188cUMGzaMCy+8kJqaGgCuu+46hg8fzujRo/nxj38MwP79+7nggguYNGkSkyZN4t133wVg4cKFXHrppZx66qlceumlTJkyhU8++SRy3+nTp/PBBx+wbNkyTj75ZMaNG8cpp5zC+vXraWho4Fe/+hWLFy9m7NixLF68mAcffJBrrrkGCLXCzZw5k9GjRzNr1iy2bdsGwIIFC/je977HKaecwsCBA3nyyScB2L17N9OmTWPs2LGMHDmSt99+u0O+tyIiIl1Nwk0L0dSN//6EtbsqjumcQCCA0+k85P7hPTO44ZwRh73GihUreOCBB/jvf/+LtZaTTjqJ008/nfXr13Pfffdx6qmnctlll/HXv/6Vb37zmzz99NN8+umnGGMoKysD4Pvf/z7/8z//w2mnnca2bduYPXt2ZJ6ptWvX8s4775CcnMyf/vQnnnjiCW688UZ2797N7t27mThxIhUVFbz99tu4XC5ee+01fv7zn/Ovf/2Lm266iQ8++IA77rgDgAcffDBS7u9+97vMnz+f+fPnc//99/O9732PZ555BgiFq3feeYdPP/2Uc889lwsvvJDHHnuM2bNn84tf/IJAIBAJkCIiInJsEjpwxcs777zD3LlzI6uzn3/++bz99tv06dOHU089FYBLLrmEv/zlL/zgBz8gKSmJb33rW5x99tmcffbZALz22musXbs2cs2KigqqqqqAUDdgcnIyAF/96lc566yzuPHGG3niiSe48MILASgvL2f+/Pls3LgRYww+n++I5X7//fd56qmnALj00ku59tprI/u+/OUv43A4GD58OHv37gVg0qRJXHbZZfh8Pr785S8zduzY9nzbREREjlsJHbiO1BLVmlhOoHnwdAHGmFAL1Fvv8tTzL/HoE0/zuz/+mQf/+TyBQJClS5eSlJTU4jqNQQ6gV69e5Obmsnr1ahYvXszdd98NwPXXX8+MGTN4+umnKSoqavdK8V6vN/K1tRaAadOmsWTJEl544QUWLFjAD3/4Q+bNm9eu+4iIiByPNIarDaZOncozzzxDTU0N1dXVPP3000ydOpVt27bx/vvvA/DYY49x2mmnUVVVxe79xZwy/UxuuvV3rF/7CYGg5bTpM7n99tsj11y5cuUh7/e1r32N3/3ud5SXlzN69Ggg1MLVq1cvoHm3YXp6OpWVla1e55RTTuHxxx8H4NFHH2Xq1KmHfZ9bt26loKCAK664gssvv5wPP/zwiN8bERERaUmBqw3Gjx/PggULmDx5MieddBKXX3452dnZDBkyhDvvvJNhw4ZRWlrK1VdfTWVlJfMuuoALzzqVi845iz//6Y+4XQ4W/vb/+OCDDxg9ejTDhw+PtFy15sILL+Txxx/nq1/9amTbtddey89+9jPGjRvX7GnGGTNmsHbt2sig+aZuv/12HnjgAUaPHs0jjzzCbbfddtj3WVhYyJgxYxg3bhyLFy/m+9//fhu/YyIiIsc309h91BlNnDjRfvDBB822rVu3jmHDhrX5mvFYk29bSQ01DX6Gds8AYOPeStxOB/27pR7hTGnUWdZSbNTe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TOEnP/kJzz33HOPHj6dnz56HLc/q1atZunQp1dXVjBs3ji996UsAfPjhh6xZs4YBAwawaNEiMjMzWb58OfX19Zx66qmcddZZfPTRR6xfv561a9eyd+9ehg8fzmWXXdbs+vv37+eKK65gyZIlDBgwgJKSEnJycrjqqquazWb/+uuvR86ZN28et99+O6effjq/+tWvuPHGGyNdr36/n2XLlvHiiy9y44038tprrx32/a1cuZKPPvqIhoYGJk6cyHe/+11uvfVW7rjjDlauXAmEQvDixYt59913cbvd/L//9/949NFHmTdvHtXV1Zx00kn84Q9/wO/3M3DgQKqrq0lNTWXx4sVcdNFFANx8883k5OQQCASYNWsWq1evZvTo0Yctm4iIyNE62sBlgVeMMRb4m7V2EVBgrd0d3r8HKAh/3QvY3uTcHeFth9rejDHmSkItYxQUFFBYWBjZt7JsJampqdTU1BxlsVsKBoPHfH7TxZh79+7N97//fc444wxSUlIYMWIEgUCAyspKbrvtNm655RbOO+88nnrqKRYsWMAdf3+GoCMYuUZ9fT2+htBi0XV1ddTX1+NwOKitrY20PPl8PubOncs//vEPrrnmGnbs2MHXv/51vvjFLzYrV+O4L7/fj9fr5bTTTuOtt94iMzOTCRMm0K1bNyorK3nxxRdZs2YNTzzxBAAVFRWsWrWK1157jblz51JTU0N6ejrTpk2jtraWyspKAoEA1dXVvPnmm5x88smRa7ndbiorK6mvr4983VgWt9vNjh07KC0tZfz48VRWVnLBBRcwf/78yDXnzJlDZWUlQ4YMYfPmzS0Wuq6qqiIYDH2/6urqmDZtGg6HA7fbzeDBg1m3bh1ZWVnN6uWFF17ggw8+iKxLWVtbS2ZmJpWVlTidTs4666zIsbNmzeKJJ57gy1/+Ms8//zzXX389lZWVPPzwwzz44IP4/X727NnDihUrGDBgQOT7cHA56+rqmv3blJaqqqr0PUpAqrfEozpLDEcbuE6z1u40xuQDrxpjPm2601prw2Gs3cJhbhGE1lJstj5UEWzduvWYnzJsqi1PKR68ht93vvMdvvOd7wDw85//nN69e5Oens4//vEP7rrrLowxzJs3j+9+97sAeD0e0tOTARg4cCBvvPkmAB6vl/379zN9+vRm97jtttv45je/ySeffEJeXh633XYbM2fO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7LMBuPrqq5k4cSIjRozghhtuOGJdi4iIHAsFrjYwxnDWWWcxYcIEFi1aFNm+d+9eevToAUD37t3Zv28fDkdoktNGO3fupE+fPhgDQQu9e/dm586dnHnmmRQVFTFlyhS+973v8dxzzzF+/Hh69ux52LKsXr2aN954g/fff5+bbrqJXbt2AfDhhx9y2223sWHDBu677z4yMzNZvnw5y5cv55577mHLli08/fTTrF+/nrVr1/Lwww83a7FqtH//fq644gr+9a9/sWrVKv75z3/Sv39/rrrqKv7nf/6HlStXMnXq1GbnzJs3j//93/9l9erVjBo1ihtvvDGyz+/3s2zZMv785z83234oK1euZPHixSxdupTFixezfft2br31VpKTk1m5ciWPPvoo69atY/Hixbz77rusXLkSp9PJo48+CkB1dTUnnXQSq1at4rrrruO///0v1dXVACxevDiynuLNN9/MBx98wOrVq3nrrbdYvXr1EcsmIiJytBJq0Hxn8c4779CrVy/27dvHmWeeydChQ5k2bVqzYxpnk2/tCcXG/bZxZlTA5XLx2GOPAeDz+Zg9ezbPPvssP/zhD9m2bRvz5s3j3HPPbXGd8847j+TkZJKTk5kxYwbLli0jKyuLyZMnM2DAAABeeeUVVq9eHemqKy8vZ+PGjSxZsoSvf/3rOJ1OevbsycyZM1tcf+nSpUybNi1yrabrPramvLycsrKyyILV8+fPb9aqdP755wMwYcIEioqKDnstCC1MnZmZSWVlJcOHD2fr1q306dOn2TGvv/46K1asiCzcXVtbS35+PhBaO/GCCy4AQt/jOXPm8O9//5sLL7yQF154gd/97ncAPPHEEyxatAi/38/u3btZu3Yto0ePPmL5REREjoYCVxv06tULgPz8fObOncuyZcuYNm0aBQUF7N69mx49erB7925yu+W1CFy9evWisLAwNPEpsGPHjhZrYP31r39l3rx5LF26lMzMTBYvXszMmTNbDVymlWWDAFJTUyPbrLXcfvvtzJ49u9mxL774Ylu/BW3m9YbWlHQ6nUc1vqzx+MOdY61l/vz5/Pa3v22xLykpCafTGXl90UUXcccdd5CTk8PEiRNJT09ny5Yt/P73v2f58uVkZ2ezYMEC6urq2vL2REREWqUuxWNUXV1NZWVl5OtXXnklMubo3HPPjTx1+NBDD3HGF77E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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "def plot_prob_forecasts(ts_entry, forecast_entry):\n",
+ " plot_length = len(ts_entry)\n",
+ " prediction_intervals = (50.0,98.0)\n",
+ " legend = [\"observations\", \"median prediction\"] + [f\"{k}% prediction interval\" for k in prediction_intervals][::-1]\n",
+ "\n",
+ " fig, ax = plt.subplots(1, 1, figsize=(10, 7))\n",
+ " ts_entry[-plot_length:].plot(ax=ax) # plot the time series\n",
+ " forecast_entry.plot(prediction_intervals=prediction_intervals, color='g')\n",
+ " plt.grid(which=\"both\")\n",
+ " plt.legend(legend, loc=\"upper left\")\n",
+ " plt.show()\n",
+ "plot_prob_forecasts(gluon_dataset['y'], forecast_entry_inv)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "tight-stranger",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.67it/s]\n"
+ ]
+ }
+ ],
+ "source": [
+ "evaluator = Evaluator(quantiles=[0.1, 0.5, 0.9])\n",
+ "agg_metrics, item_metrics = evaluator(iter(tss_inv), iter([forecast_entry_inv]), num_series=len(test_ds))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "hydraulic-biology",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'MSE': 66454.697796436,\n",
+ " 'abs_error': 4667.486553423428,\n",
+ " 'abs_target_sum': 4846.515611285734,\n",
+ " 'abs_target_mean': 230.78645768027303,\n",
+ " 'seasonal_error': 86.9523304104521,\n",
+ " 'MASE': 2.556127747233072,\n",
+ " 'MAPE': 32.82394755220077,\n",
+ " 'sMAPE': 0.7664386009802475,\n",
+ " 'OWA': nan,\n",
+ " 'MSIS': 38.94625974320382,\n",
+ " 'QuantileLoss[0.1]': 5372.805501363753,\n",
+ " 'Coverage[0.1]': 0.9523809523809523,\n",
+ " 'QuantileLoss[0.5]': 4667.486553423428,\n",
+ " 'Coverage[0.5]': 1.0,\n",
+ " 'QuantileLoss[0.9]': 1340.740606846174,\n",
+ " 'Coverage[0.9]': 1.0,\n",
+ " 'RMSE': 257.788086994795,\n",
+ " 'NRMSE': 1.116998326443961,\n",
+ " 'ND': 0.9630602535468132,\n",
+ " 'wQuantileLoss[0.1]': 1.1085913947852526,\n",
+ " 'wQuantileLoss[0.5]': 0.9630602535468132,\n",
+ " 'wQuantileLoss[0.9]': 0.2766401089731533,\n",
+ " 'mean_absolute_QuantileLoss': 3793.6775538777842,\n",
+ " 'mean_wQuantileLoss': 0.7827639191017397,\n",
+ " 'MAE_Coverage': 0.4841269841269842}"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "agg_metrics"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "comparable-newcastle",
+ "metadata": {},
+ "source": [
+ "# Residual"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "protecting-alias",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#get the mean for all the samples\n",
+ "f1 = forecast_entry_val_inv.samples.mean(axis=0)\n",
+ "f2 = forecast_entry_inv.samples.mean(axis=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "stock-representation",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "original_values=list(gluon_dataset['y'])\n",
+ "orig_test = original_values[:len(original_values)-prediction_length]\n",
+ "test_extract=original_values[-prediction_length:]\n",
+ "val_extract=orig_test[-prediction_length:]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "id": "hourly-philosophy",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "valandtest_orig=list()\n",
+ "valandtest_pred=list()\n",
+ "for a1 in val_extract:\n",
+ " valandtest_orig.append(a1)\n",
+ "\n",
+ "for b1 in test_extract:\n",
+ " valandtest_orig.append(b1)\n",
+ " \n",
+ "for a2 in f1:\n",
+ " valandtest_pred.append(a2)\n",
+ "\n",
+ "for b2 in f2:\n",
+ " valandtest_pred.append(b2)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "id": "lyric-serbia",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'Residuals')"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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e32+fG6k7dFHc8boWlpK2kREREREJNPWrHFJ2pgxrhkIQK1a8NJL0K4d1K59+uTq6FGXvKVN5FK/pveYMdCtG1SunH3vL5QoaRMRERERkbOyFpYsOZ6orVrlHr/2Wnj7bWjbFi69NGP7ypcPSpRwNzk7JW0iIiIZcN+Y+/zbw9oN8zASEZHsk5wM8+a5JG3sWPjrL8idG667Djp3httvBzUvDz4lbSIiIhmwevdqr0MQEckWR4+6hh9jxrhmIrt2Qf78cPPN8Oqr0Lo1lCrldZQ5i5I2EREREREB3KjarbdCQoLr3njrrW5+2i23uI6O4g0lbSIiIiIiAsB770HevDBxItx4IxQo4HVEAkrasiw6OprFixeTK1cupk6dSvHixU94fsiQIQwYMACA3r1707JlywztNyoqCoBWrVrx2muvAdC6dWu2b99OnTp1GDRo0Gm/d9GiRTz22GMAvPrqq7Ru3TpT7+nrr79m//79lCtX7pTvzWgMwTBo0CD/MY0x5M2bl6JFi1K5cmWuu+462rZtS6FChc553wCXXnopTZs2DVTIIiIiYSX17/zZfPrpp9StWzcgxwzV845t27Zx2223+e/nypWLQoUKUaZMGa666iruuusuqlatek77njVrFmvXrgXcuWSo2L0bJk2CJ590I2wSOnJ5HUC4u+mmmwBISUlh5syZpzz/008/AZAvX76wSQZGjBjBoEGD+P77770O5bSstRw9epQ9e/awePFi+vbtywMPPMCOHTvOaX+pCeGsWbMCG6iIiIicUTicd4A719u/fz/r169n9OjR3HPPPUyePPmc9jVr1qwTLkaHihEj4NgxePBBryORk2mkLYtuuukm+vTpQ0pKCtOnT6dt27b+53bs2MHKlSsBaNCgwTmPAqUKhV9moRADuBHEli1bsnnzZr744gt++OEHNm7cSPfu3RkyZAi5cul6hIiISGal/TuftnInbeWPV/F4KXWkLyEhgRkzZtC3b18OHTpEr169qFy5MjVq1PA6xICIiYGrroIrr/Q6EjmZkrYsKlGiBHXq1CEuLo64uDj++ecfzjvvPABmzJjhf93NN98MQN++ffn111/ZsWMHBw4coGjRolx55ZU8/vjjXHqWhS3SKxFISUlh4MCBjB8/nqNHj3L99ddzww03nPK9ycnJvP7666xcuZL4+HgOHjxI8eLFiYqKokuXLpQvX/6UMoDFixf7yzSjo6OJjo4+bZlCbGwsw4YNY/Xq1SQlJVGpUiVatWrFvffe60+g0l5RGjRoEMOGDWPhwoUUL16cDh068MADD2Tq3z537txUqVKF3r17s3XrVpYtW8bq1auJjY2ladOm7N27l/fee4/Vq1eze/dujh49SsmSJWnYsCGdO3emePHiJ/xBApg4cSITJ04EjpeWZuVnJiIiEol27drFZ599xty5c/n7778pXry4/+9ryZIl/a/77rvvGDt2LFu2bCElJYWSJUtSvXp1oqOjKVCgwDmdd6ROTSlXrhyvvfYa/fv3Z926dVSqVIlnnnmG+vXr+/e5detW3nzzTZYsWULp0qXp1KkTixcv9v+tj0tdETqDihcvTrt27ciVKxdvvPEGSUlJDB48mPfffx+AmJgYZsyYwdatW0lMTKRQoUJUr16dhx9+2P/eTi5BTX089T3GxsYycuRINmzYwL59+/znO+3ataNdu3aZijczVqyARYugb9+gHUKyQMMRAdCsWTMAkpKSTiivmz59OgD58+encePGAEyePJm1a9fyzz//kJycTEJCArGxsURHR7N79+5MH3vQoEHExMSQkJDAwYMHmTRpEm+++eYpr0tOTmbixIls2LCBxMREkpOT2bNnD1OmTOGxxx7j6NGj5/DOnVGjRvHss8+yePFiDh48yNGjR1m/fj39+/fnpZdeSvd7nn32WWJjYzl8+DA7duxgwIABzJs375xjuOuuu/zbqfvZt28fU6dOZdOmTRw8eJCkpCR27tzJmDFjeOqppzK870D/zERERMLZrl27eOCBBxg7diy7du0iKSmJ3bt3M378eDp27EhCQgIAU6dO5Z133mHt2rUcPHiQw4cPs3XrVn766Sf+/PPPLMfx999/07VrV1auXOk/93juuefYt28fAMeOHaNLly4sWLCAo0ePsnXrVnr37s38+fOzfOzbbrvNX0G1cOFCUlJSAJg5cyYrVqwgISGB5ORkEhMTWbhwIV27dvXPYTubZcuWsXDhQnbv3s2xY8c4fPgwq1ev5s0332TUqFFZjv10YmIgTx64556gHUKyQElbANxwww3+0aTURG337t389ttvADRs2ND/H7tnz56MGzeOOXPmMG/ePD788EMA9u/fz5QpUzJ13MTERL7++msAypYty6hRo5g0aRIl0llaPk+e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vPvuu/6mMI0aNWL16tXs2rWLli1bAqd/zzVq1GD+/PksW7bM/zMbO3ZswH9mIiIi4e6xxx7zt/ofMGDAKVMRUpuRrV+//rSLRzdo0MC/nZnzjsy49dZb+fLLL9myZQtjxozxjwCWLFky081I0i5HkCpv3ry88sorVK9eHXAXqfPkyUNSUhKvvvoqr776Kueddx5FixYlMTHxhO+tWbOmfzv13Onhhx8mOjqaChUqsHXrVn/MxhjKlSvHtm3bMv1vkBExMXD55eD7sUmIyuhIWz+gB5A6m7IkkGCtTfLd3wJU8G1XADYD+J7f53v9CYwx0caYOGNMXHrlfOGoadOm5MlzPA9u1KjRCTXW11xzDS+88ALly5cnf/78XHPNNSeUB5yL6OhoHnjgAYoVK+afiJtem/3WrVv7m38ULFiQG264Id2lAcD9Mm7SpMkJV4HOpEOHDvTp04err76aQoUKkS9fPi666CK6det22mMEQt68eSlZsiRXX301zz77LDExMSfMq3v44Yfp0KEDxYsXp0iRIrRp04bu3bunu6/nnnuOunXrnrIAejB+ZiIiIuGsbNmyDBs2jLZt21KmTBny5MlDiRIluPLKK+ncubN/JK5evXo0a9aM8uXLU6BAAQoVKsRFF13E448/TufOnf37y+x5R0blyZOHgQMHUq9ePfLly0f58uV58cUX/QlTapVNRuXKlYsiRYpw8cUXc+eddzJy5EhuueUW//OVK1fmrbfeokqVKuTLl4+aNWvy4YcfUqRIkVP21axZM+6+++4TSjhTY/7ggw+4+uqryZ8/PxUrVqRXr17UqVPnHP4Fzm79epg7142yBWC2igSROdsAmDGmFdDSWtvZGNMU6A50BOb7SiAxxlQCJltraxljlgMtrLVbfM+tB6611p52QauoqCib2cUNRUREslOLYS382z/e96OHkYhIRi1ZsoRq1ar5E6fFixfTtWtXjh49yvXXX897773ncYTeevVVeP112LQJVEjkPWPMImttuiVqGSmPbAjcZoxpCRQAzgP6A8WNMXl8o2kVga2+128FKgFbjDF5gGJA1hfEEBER8dDug6e99igiIeqzzz4jLi6OEiVKcOzYMf/8sqJFi54w2pcTpaTAkCFw001K2MLBWcsjrbUvWGsrWmurAHcBM6y19wIzgTt9L3sQGO/bnuC7j+/5GTlhPpuI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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "residuals = abs(np.array(valandtest_pred)-np.array(valandtest_orig))\n",
+ "residuals_df=pd.DataFrame()\n",
+ "residuals_df['residuals']=residuals\n",
+ "#residuals_df['ds']=prophet_dataset2['ds']\n",
+ "\n",
+ "f, ax = plt.subplots(figsize=(15,7))\n",
+ "ax.text(x=len(val_extract)/2 -10,y=400, s='Validation Data', color='black', fontsize=15, fontweight='bold', alpha=0.8)\n",
+ "ax.text(x=len(val_extract)+10,y=400, s='Testing Data', color='black', fontsize=15, fontweight='bold', alpha=0.8)\n",
+ "ax.axvline(x=len(val_extract), c='green', lw=3, alpha=0.8, ls='--')\n",
+ "residuals_df.plot(kind='line', y='residuals', color='blue', label='Residual',figsize=(15, 6),ax=ax)\n",
+ "plt.title(\"Residuals\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "suitable-finding",
+ "metadata": {},
+ "source": [
+ "# Save the predictions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "id": "herbal-undergraduate",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "predictions_df=pd.DataFrame()\n",
+ "predictions_df['original'] = valandtest_orig\n",
+ "predictions_df['predictions'] = valandtest_pred\n",
+ "predictions_df.to_csv(Path(\"Predictions/CubeRoot.csv\"),index=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "voluntary-clearing",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "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.7.10"
+ },
+ "toc-autonumbering": true
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/log.ipynb b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/log.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..cbf16277e1aa63fc81eba6ec9c5b61923a130a65
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/log.ipynb
@@ -0,0 +1,1955 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "stuck-potential",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%matplotlib inline\n",
+ "import mxnet as mx\n",
+ "from mxnet import gluon\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "import json\n",
+ "from gluonts.dataset.common import ListDataset\n",
+ "from datetime import datetime, timedelta\n",
+ "from gluonts.model.simple_feedforward import SimpleFeedForwardEstimator\n",
+ "from gluonts.model.deepar import DeepAREstimator\n",
+ "from gluonts.mx.trainer import Trainer\n",
+ "from gluonts.evaluation.backtest import make_evaluation_predictions\n",
+ "from gluonts.evaluation import Evaluator\n",
+ "from gluonts.dataset.util import to_pandas\n",
+ "from gluonts.dataset.field_names import FieldName\n",
+ "from gluonts.model.forecast import SampleForecast\n",
+ "from pandas import Timestamp\n",
+ "import itertools\n",
+ "from gluonts.model.estimator import GluonEstimator"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "exclusive-principal",
+ "metadata": {},
+ "source": [
+ "# Data Loading"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "infectious-flour",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "filename='EstimatedRemainingTimeContext'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "velvet-socket",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dataset= pd.read_csv(filename + \".csv\")\n",
+ "X= dataset[['name','time', 'countryCode', 'ipAddress', 'level',\n",
+ " 'producer']]\n",
+ "y= dataset.iloc[:,6]\n",
+ "#changing the names of the attributes\n",
+ "gluon_dataset= pd.DataFrame()\n",
+ "gluon_dataset['ds'] = pd.to_datetime(X[\"time\"])\n",
+ "gluon_dataset['y']=y\n",
+ "gluon_dataset['ds'] = gluon_dataset['ds'].dt.tz_convert(None)\n",
+ "gluon_dataset_copy=gluon_dataset.copy()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "transparent-ethnic",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " ds | \n",
+ " y | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2021-02-18 11:31:12.752 | \n",
+ " 4050.000000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2021-02-18 11:31:32.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2021-02-18 11:32:02.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2021-02-18 11:32:32.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2021-02-18 11:33:02.752 | \n",
+ " 4153.250000 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 135 | \n",
+ " 2021-02-18 12:38:32.752 | \n",
+ " 110.500000 | \n",
+ "
\n",
+ " \n",
+ " 136 | \n",
+ " 2021-02-18 12:39:02.752 | \n",
+ " 60.156250 | \n",
+ "
\n",
+ " \n",
+ " 137 | \n",
+ " 2021-02-18 12:39:32.752 | \n",
+ " 19.140625 | \n",
+ "
\n",
+ " \n",
+ " 138 | \n",
+ " 2021-02-18 12:40:02.752 | \n",
+ " 5.359375 | \n",
+ "
\n",
+ " \n",
+ " 139 | \n",
+ " 2021-02-18 12:40:32.752 | \n",
+ " 0.765625 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
140 rows × 2 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " ds y\n",
+ "0 2021-02-18 11:31:12.752 4050.000000\n",
+ "1 2021-02-18 11:31:32.752 4045.500000\n",
+ "2 2021-02-18 11:32:02.752 4045.500000\n",
+ "3 2021-02-18 11:32:32.752 4045.500000\n",
+ "4 2021-02-18 11:33:02.752 4153.250000\n",
+ ".. ... ...\n",
+ "135 2021-02-18 12:38:32.752 110.500000\n",
+ "136 2021-02-18 12:39:02.752 60.156250\n",
+ "137 2021-02-18 12:39:32.752 19.140625\n",
+ "138 2021-02-18 12:40:02.752 5.359375\n",
+ "139 2021-02-18 12:40:32.752 0.765625\n",
+ "\n",
+ "[140 rows x 2 columns]"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "gluon_dataset_copy"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "turkish-poverty",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " This is separate from the ipykernel package so we can avoid doing imports until\n",
+ "/usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:5: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " \"\"\"\n"
+ ]
+ }
+ ],
+ "source": [
+ "for i in range(0,len(gluon_dataset_copy)):\n",
+ " ds=gluon_dataset_copy['ds'][i]\n",
+ " gluon_dataset_copy['ds'][i+1]=ds + timedelta(seconds=60)\n",
+ " ds=gluon_dataset['ds'][i]\n",
+ " gluon_dataset['ds'][i+1]=ds + timedelta(seconds=60)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "decreased-crazy",
+ "metadata": {},
+ "source": [
+ "# Data Transformation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "foster-running",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Log transformation\n",
+ "def log_transformation(x: pd.Series) -> pd.Series:\n",
+ " # Function np.log1p = log(x + 1)\n",
+ " return np.log1p(x)\n",
+ "\n",
+ "# Invert Log\n",
+ "def log_inverse_transformation(x: pd.Series) -> pd.Series:\n",
+ " # Function np.expm1(x) = exp(x) - 1\n",
+ " return np.expm1(x)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "attended-pharmacy",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2AAAAGoCAYAAAAgtoZUAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABIwklEQVR4nO3dd5xcZb348c83m7IJ6SGUsGmAFFEIGEEwAQQUFCxXxCuKFBUU/WEXEVAQsaFXAcWCoMjVS5OL7YoiAgICwdBRurQQAoF0kpD2/P54zriTzW4ym90pu/t5v17nNeWcOed7Zp8zO995WqSUkCRJkiRVX796ByBJkiRJfYUJmCRJkiTViAmYJEmSJNWICZgkSZIk1YgJmCRJkiTViAmYJEmSJNWICZjUzSJiekQ8VO842hMR+0bErHrH0VZEnBwRF3T3tl2M6R8RsW+1j6Oui4j/iIinI2JJROxa73jKRcTpEfGLbt5nw37GqPYi+1lEzI+I2+sdT1uWV2ldJmBSISKeiIhlxZe40vL9Cl6XImLb0uOU0k0ppe2rFONFEXFmN+6v/JznFPsf2l37r1RK6WsppQ9197br0+bvvKbN3/59KaWdUko3dPU4HRx7y4i4MCKejYjFEfFgRHw5Ijbp4n4nFeWxfzfEWPG+IuLoiLi5q8fsgm8D/y+lNDSldFcd46iJKn/G7BQR10TEvIhYEBF3RMRbqnGs7lQkuiuL63dBRNwSEXt2w37X+6NVRFxd9rmxMiJWlD3+UVePX6FpwBuBlpTS7jU6Zodq+T9R6qlMwKS1vbX4Elda/l+9A6qBt6aUhgJTgF2BL9Q3nNoo/zsDT7H23/6X1TpuRIwGbgUGA3umlIaRvzyNBLap1nHrLSKaqrj7icA/NuaFVY6rJ/od8GdgC2Az4OPAoloHsZE/IlxWXM+bAtcDV3RvVOtKKb257HPkl8BZZZ8jHylt1x0/iqzHROCJlNJLnX1hleOS1AETMKkCEbFtRPw1IhZGxAsRcVnx/I3FJvcUv3j+Z9tfTItaps9FxL0R8VJR87F58cvp4oi4NiJGlW1/RVEbtTAiboyInYrnjwPeB5xYHOt3xfPjIuLKiJgbEY9HxMfL9jW4qNWaHxH/BF7b0TmmlOYAfyInYqXXv674JXlBRNwTZU3yIuKGiDizWL8kIn4XEWMi4pcRsSgi/h4Rk8q2PydyM7FFxa/q08vW/buZVlnNy1ER8VTxfp+ykdsOjoifF+f/QEScuL5fs8sVf7cDyo55RUT8ovib3RcR20XEFyLi+eK83lT22hHRWsP1TPE+lb7ofxpYDByRUnqieO+fTil9IqV0b/H6vYr3b2Fxu1eb9/0rEfG3IpZrImLTYnWpPC4o/iZ7Fq/5QHH+8yPiTxExsXj+8xExo/QlLCKOj9z0srmjfbXzPu0I/AjYs9huQfH8RRHxw4j4Q0S8BLwhIg6OiLuKMvB0RJxetp8N/S13j4iZxWufi4jvRMSgiFgCNJGvwcdKMRXv04LifN5Wtp/24ursNbq+62Jy5M+KxRHxZ3Iy0K5op+YwymoPIuItEfHPYl/PRMRni+fb+4z5bBH/woi4rPgbltafWJTF2RHxoWhTQ1G23abAZOAnKaUVxfK3lNLNZdt8rmxfH2gT7w0R8aGybdc6v9jwZ8CvIl9ji4CjY/3XUYdSSqvIydBWETG22P+4iPht5Jq9RyPi2LJjD4qIs4tzml3cHxS5RvpqYFy01mqN29Dxy/abIuJjEfEI8EiF78HlEXFx8Tf/R0RMLVv/+eJ9WBwRD0XE/hHxQeACWq+/LxfbHluc57zivMd1FFepPBXl5Pni/X5HUf4eLvZxctnrd4+IW4vy/2xEfD8iBhbrKvmfuKHr87yI+L/iPGdERK/9YUp9WErJxcUlJYAngAM6WHcJcAr5R4tmYFrZugRsW/Z4X2BWm/3eBmwObAU8D9xJrm1qBq4DTivb/gPAMGAQcDZwd9m6i4Azyx73A+4AvgQMBLYG/gUcWKz/BnATMBoYD9zfTmwHFPdbgPuAc4rHWwEvAm8pjvPG4vHYYv0NwKPkWpsRwD+Bh4EDgP7AxcDPyo51BDCmWPcZYA7QXKw7HfhFcX9S8Z7+hFxLtAvwMrDjRmz7DeCvwKji/O4tP//1/e3bvDenA8uBA8vO7XFymRgAHAs8Xvbaq4AfA5uQaxFuBz5crLsN+PJ6yuFoYD7w/uJYhxePx5S9748B2xXnfAPwjTbvR/+y/b29+DvtWOzvVOCWsvJzY3F+ryiOs2tH+1pPzEcDN7d57iJgIfB6Wq+bfYFXF493Bp4D3lHh3/JW4P3F/aHA69q7Bou/x6PAyeRrYj9ywrv9euJ6ggqvUTZ8XdwKfId8/e5dHPsXnXjfys/lWWB6cX8UsNt6PmNuB8aRy88DwEeKdQeRr7WdgCHAL2jzmVW2nyAnCr8H3gFs3mb9QcXf7FXksv0/beK9AfhQR+fHhj8DVhbH7VeUgQ6vo3ZiP53Wz4WB5Gv/BYrySy7nPyj+nlOAucB+xbozir//ZsBY4BbgK+291xu4Di5i7c/nRK5NHA0MrvA9WE4uW03A14HbinXbA08D48qul206eJ/3K859N3I5/B5wY0dxFee4ivx/pPR5Nrf4+w4jl51lwOTi9a8BXlecwyRyeftke2W47XtIZdfni8Duxf5/CVxayfvv4tKTlroH4OLSKAv5S8wSYEHZcmyx7mLgfHIb+7avqyQBe1/Z4yuBH5Y9PgH4dQcxjSz2P6J43PYf/B7AU21e8wWKxIecjB1Utu64dmJbUvwDTMBfgJHFus8D/91m338Cjiru3wCcUrbuv4Cryx6/lbLksZ1zmw/sUtw/nXWTqpaybW8H3rMR2/47GS0ef4iNT8D+3ObclgBNxeNhRRwjyV/iX6b4wlWsPxy4vrj/CMWX4w7el/cDt7d57lbg6LL3/dSydR8F/tjm/ShPwK4GPlj2uB+wFJhY9pp55C9RXyjbbp19rSfmo2k/Abt4A687G/huhX/LG4EvA5uu7xoEppO/1PYrW38JcHpHcdGJa5T1XBfABPIX2U3K1v0PG5+APQV8GBjeZpt9Wfc6PqLs8VnAj4r7PwW+XrZuWzpIwIr1LcD3yUn+muJ9f0XZvr5Rtu12dCIBq+AzoDxJWO911M6+TgdWkD+3V5O/xO9brBtfPDesbPuvAxcV9x8D3lK27kByk7513usNlOeLWDcB228Dr2n7Hlxbtu6VwLKyv9vz5B+4BqyvHAEXkptClh4PJSe3k9qLqzjHZaz7ebZH2TZ3UPxY0s45fBK4qr0y3PY9pLLr84KydW8BHqzk/Xdx6UmLTRCltb0jpTSybPlJ8fyJ5F+Hby+aTHygk/t9ruz+snYeD4XcHyUivhERjxXNcJ4otumoGdNEcvOYBaWF/Mvi5sX6ceRfTUuebGcf70i5H9K+wA5lx5oIHNZm39OALTt7XsW5fTZyM7iFxb5GrOe8IP+TLllavq9ObNv2/Mvvd1bbc3shpbS67DHFcSeSf+V9tux9+zH513XIXwzL38O2xrHu3+lJcs1LSWfem4nAOWWxzCOX5a0AUm4GeT05ATpvPfvZGGu93xGxR0RcH7m57ELgI6xbBjo6tw+Sv/A/GLlZ5iEdHHMc8HRKaU3Zc23fv/bKQaVleX3XxThgflq7L05711ylDiV/AX0ycrPG9Q0q0S3XQEppVkrp/6WUtiGf60vkH6Da21enzq2Cz4DyfW/oOmrP5SmlkeTPv/vJNTWluOellBa3iX2rsvVPtllXcVPDDWh7DWzoPWj7d2yOiP4ppUfJic7pwPMRcel6mkOudT4ppSXkz531XQMvtvN51tH/qe0i4veRm8ovAr7G+j/L28a2oeuzM59vUo9kAiZVIKU0J6V0bEppHPkX6R9EO30ousF7yU3GDiD/Y55UPB+lUNps/zS56Vt50jgspVQatexZ8q+/JRM6OnBK6a/kXx+/Xbbv/26z701SSt/o7EkV/RxOBN4NjCq+JC0sO69qeZb8i37J+I427EZPk3+537TsfRueUtqpWH8t8B8R0dHn72zyl89yE4BnKjh22/JRiufDbf6Og1NKtwBExMHAnuTaz29tYF+dOW57z/8P8FtgfEppBLnvWEVlIKX0SErpcPIX8G8Cv4r2R42cDYxv8/62ff86c25tre+6eBYY1SauDq85cnIzpPQgIrYoX5lS+ntK6e3kc/41cPlGxLvR10BK6WlyUv6qsn2t7/NkrfMhD+QBVPwZUP532dB1tL64XyDX9p8eEVuSy8ToiBjWJvZSmWh7zU0onmsb08b49+u7+jmYUvqflNK0ItZEvg7as9b5FOVxDN13DfwQeJBcMzqc/KNfpZ/llVyfUq9nAiZVICIOi4jSl5j55H9epV/wniP3veoOw8hfOl4kf5H5Wpv1bY91O7C46Jw9uKhBe1VElAbbuBz4QkSMKuI/YQPHPxt4Y0TsQu4r8taIOLDYb3PRmbpl/bvo8LxWkfsV9I+ILwHDN2I/nVV+/lsBVR/VMqX0LHAN8F8RMTwi+kXENhGxT7HJd8jn/vNoHQxjq8iDSuwM/AHYLiLeGxH9I+I/yU2Rfl/B4eeSy2V5GfkR+T0oDeYyIiIOK+5vSu7A/yFyE7q3RuuQ4+3tqyPPAS2ljvjrMYxcE7E8InYn/+BQkYg4IiLGFr+cLyieXtPOpjPIv5qfGBEDIg+Q8Vbg0kqPtQEdXhcppSeBmcCXI2JgREwrjt2Re4CdImJK5EEzTi+tKF7/vogYkVJaSR6JsL3z3ZDLgWMiD3wwBPhiRxsW18mXIw861K8oHx8g948q7evoiHhlsa/T2uzibuCdETGk+IHqg2XrOvUZUMF1tF4ppYfITUNPLBLJW4CvF3+vnYvYSvOzXQKcGhFji3P+Utm654AxETGikuNuwEZ/DkbE9hGxX0QMIvcTW0bH5eES8t98SrH914AZRW13dxhGLo9LImIH4Pg269f3P7Ha16fUI5iASWv7Xaw9P9RVxfOvBWZEHnHtt8AnUkr/KtadTv4yvSAi3t3F419Mbo7xDHlQi9varL8QeGVxrF8XTUYOIXcqf5zc8foCcu0Z5D4zTxbrrgH+e30HTynNLWL4UvGl5e3kXzfnkn+R/hwb97nxJ+CP5EE6niR/gehKc8BKnQHMIp//tcCvyAlutR1J7mD+T3LC/iuKZocppXnAXuQ+GTMiYjG59mkh8GhK6UXy3/Qz5ET8ROCQ4lf99UopLQW+CvytKCOvSyldRf6l/NKiudD9wJuLl5wP/Cal9IfiuB8ELoiIMe3taz2Hvo48DPyciFhfnB8FzijO+Ut0rkbnIOAfxTV4Drlv2LK2G6WUVpC/0L2ZfD38ADgypfRgJ47VoQqui/eS+2bOIycoF7ezm9K+HiaX0WvJfQPbzqX2fuCJ4u/2EfIoqJ2N92rgXHIz00dp/Uxp7zpYQa51v5b8Bfv+Yrujy/Z1Nvnv/WhxW+67xT6eA35OHkChZGM+Azq8jir0LeC4iNiM3H9sErkG5iryoCrXFtudSU6c7yUPRHRn8RxFubkE+FdxHXSlaWJXPgcH0TqwyBxyrWi7U4YU5/VFcl/GZ8kDJb2nC3G39VlyOV9MHjTnsjbrT6eD/4nVvj6lniJS6mrtuiT1DBFxPPmLe0W/oku9TeRpA+4HBqU8XHtX95fITdEe7XJwktRHWAMmqdeKiC0j4vVF86XtybVKV23odVJvEhH/EXleq1Hk2tDfdUfyJUnaOCZgknqzgeSR0xaTm0v9htzkRZ0UET9q0zy3tPyo3rFpgz5MHsL8MfJw7G377EiSaqiiJogR8QnyxHwB/CSldHaV45IkSZKkXmeDNWAR8Spy8rU7sAtwSFRn+G1JkiRJ6tX6V7DNjuThS5cCRMRfgXcCZ3X0gk033TRNmjSpWwKUJEmSpJ7mjjvueCGlNLbt85UkYPcDX42IMeR5J95CHq51LRFxHHniQyZMmMDMmetsIkmSJEl9QkQ82d7zG2yCmFJ6gDxq0jXk+SvuJnfibbvd+SmlqSmlqWPHrpPoSZIkSVKfV9EoiCmlC1NKr0kp7U2eDPHh6oYlSZIkSb1PJU0QiYjNUkrPR8QEcv+v11U3LEmSJEnqfSpKwIAriz5gK4GPpZQWVC8kSZIkST3ZypUrmTVrFsuXL693KFXX3NxMS0sLAwYMqGj7ihKwlNL0LkUlSZIkqc+YNWsWw4YNY9KkSUREvcOpmpQSL774IrNmzWLy5MkVvaaiPmCSJEmSVKnly5czZsyYXp18AUQEY8aM6VRNnwmYJEmSpG7X25Ovks6epwmYJEmSJNWICZgkSZKkXuPFF19kypQpTJkyhS222IKtttrq349XrFix3tfOnDmTj3/841WNr9JRECVJkiSp4Y0ZM4a7774bgNNPP52hQ4fy2c9+9t/rV61aRf/+7adBU6dOZerUqVWNzxowSZIkSb3a0UcfzUc+8hH22GMPTjzxRG6//Xb23HNPdt11V/baay8eeughAG644QYOOeQQICdvH/jAB9h3333ZeuutOffcc7slFmvAJEmSJFXNJz8JRYVUt5kyBc4+u3OvmTVrFrfccgtNTU0sWrSIm266if79+3Pttddy8sknc+WVV67zmgcffJDrr7+exYsXs/3223P88cdXPN9XR0zAJEmSJPV6hx12GE1NTQAsXLiQo446ikceeYSIYOXKle2+5uCDD2bQoEEMGjSIzTbbjOeee46WlpYuxWECVmfHHgvXXLPu86NGwXXXwejRtY9JkiRJ6i6dramqlk022eTf97/4xS/yhje8gauuuoonnniCfffdt93XDBo06N/3m5qaWLVqVZfjMAGro1tvhQsugP32gwkTWp9fvBiuvBKuvRbe/e76xSdJkiT1RgsXLmSrrbYC4KKLLqrpsU3A6ui002DsWPjNb2Do0NbnV63KNWB//asJmCRJktTdTjzxRI466ijOPPNMDj744JoeO1JK3b7TqVOnppkzZ3b7fnuTm2+G6dPhW9+CslEx/+2gg+CZZ+C++2ofmyRJktQVDzzwADvuuGO9w6iZ9s43Iu5IKa0zpr3D0NfJaafBZpvB8ce3v37vveH+++GFF2oblyRJkqTqMQGrgxtvzANsnHQSlPUFXMs+++Tbm2+uXVySJEmSqssErA5OOw222AI+8pGOt5k6FZqbcz8wSZIkqaepRlenRtTZ8zQBq7Hrr4cbbsi1X4MHd7zdoEGw5565tkySJEnqSZqbm3nxxRd7fRKWUuLFF1+kubm54tc4CmINpZRrv8aNg+OO2/D2e+8NX/kKLFwII0ZUP76OpARLlsDcublPWnvTHwwbBjvsAF2cGFySJEm9QEtLC7NmzWLu3Ln1DqXqmpubOzU5swlYDV13Hdx0E3zve+uv/SrZZx/48pfhb3+Dt7yl+vGVu+EGOPFEmDMnJ17Ll2/4NYMGwc47w267wWteA7vuCiNHQr9+ay9jxlR2/pIkSeqZBgwYwOTJk+sdRkNyGPouWr4cVq+ubNs3vQmefBIefTT379qQpUtzAvOpT8E3v9mlMDtlxQrYccd8u//+ea6y0rLppjnRauvFF+HOO1uXBQs63v8228DDD+dkTJIkSeqNOhqGvk/UgK1eDYsW5fsReSndb++5ju4/+yzccw/cfXfr7eOPdy6W886rLPkCGDIEdt+99gNx/PjH8K9/wdVX5/nIKnX44fk2pfy+3HNPTiJXr4Y1a/Jy331w9tm5JrA00qMkSZLUV/SJBOzJJ3OtS3eJgO22y8nRMcdUnlANHQof+lDnjrXPPnDWWbkP1tChnY+1sxYtgjPOgP32gwMP3Lh9RMDWW+elrZdegvPPh0suMQGTJElS39MnErAxY3KtS0p5gbVvK7kPMHo07LILvPrVHc/f1d323hu+9jW49VZ44xurf7yzzsoDbZx1VmvtX3faZBN4+9vhiivg3HNh4MDuP4YkSZLUqPpEAjZiBHziE/WOYuPstRc0NeXh6KudgM2eDd/5DrznPXkQjWo5/PBcA/bnP8PBB1fvOJIkSVKjcRiEBjdsWB5VsBb9wE4/PQ8x/9WvVvc4Bx4Io0blJEySJEnqS0zAeoB99oEZMyobCn5jPfAAXHghHH98+323utPAgfCud8Gvf50H6ZAkSZL6ChOwHmDvvfOQ8DNmVO8YX/hC7p916qnVO0a5ww/PA3L87ne1OZ4kSZLUCEzAeoBp0/KAGDfeWJ39/+1v8JvfwOc/n+f6qoW994Ytt7QZoiRJkvqWPjEIR083ahTsvHPuB/bFL27cPlKCSy/NS9uJo++7LydDn/xkl0OtWFNTHuzjvPPypM0jR9bu2JIkSVK9WAPWQ+yzD9xyS26K2Fn33gv77gvvfW9OtubMWXvZYovc/6tWQ+uXHH54Pp///d/aHleSJEmql4oSsIj4VET8IyLuj4hLIqLCqYfVXfbeG5YtgzvuqPw18+fDCSfArrvCP/4BP/4xPPIIzJy59jJjBrz5zdWLvSNTp+YJsv/nf2p/bEmSJKkeNtgEMSK2Aj4OvDKltCwiLgfeA1xU5dhUZu+98+03vwl77rnh7V96CX74Q5g3L49seMYZeSLpRhKRa8G+9rXWmjhJkiSpN6u0D1h/YHBErASGALOrF5LaM3YsTJ+eB8v4zW8qe820afC978GUKVUNrUve+14480y4/HL4+MfrHc3ann0Wvv/93DTzhBPynGySJElSV0RKacMbRXwC+CqwDLgmpfS+9W0/derUNHPmzO6JUP+2Zg28/HLl2w8eXL1YutOUKdDcDLfdVu9IsmefzTWNP/5x7qO2Zg1suimcckquTRw0qN4RSpIkqdFFxB0ppaltn6+kCeIo4O3AZGABcEVEHJFS+kWb7Y4DjgOYMGFCd8SsNvr16zlJVWccfjicdFKubRo1Kk/UXFqamnJTxUr07w9DhrQum2yS36+mpvzelW5LS9v9zp7dmnitWgVHHpmTrnnz8jxpn/oUfPe78OUvw/vfn/cnSZIkdcYGa8Ai4jDgoJTSB4vHRwKvSyl9tKPXWAOmznjqKdh+e1i+vPbHLk/IVq7Mt0cdBSefnAcIKXfttTkRmzkTJk+GCRNyzV1zc070mpthwIC199mvX04kN98cxo1rXbbcMjdprDS5lCRJUs+y0TVgwFPA6yJiCLkJ4v6A2ZW6zYQJ8NxzeT6wFStyM8sVK/KyalXl+1m5EpYuXXdZvTo3I1zfsnp1blp41FGw9dbt7/+AA2D//fOw+RddBIsX55iXLcvJ47JlOd62+y6ta8+AAfm4pRq/iRPhz3+2v5kkSVJvtcEELKU0IyJ+BdwJrALuAs6vdmDqW4YPz0uji4BDD81LpVLKydrs2bl/2ezZeVmypDXRXLEib/Pzn+fRK088sXrnIEmSpPqpaBCOzrIJorRxDjoI7roLHn8892OTJElSz9RRE8SKJmKWVBtf/CI8/zycbx2zJElSr2QCJjWQ178e3vAGOOus+gxKIkmSpOoyAZMazBe/mPuKXXhhvSORJElSdzMBkxrMvvvCtGnwjW90buJtSZIkNT4TMKnBRORasFmz8qiIkiRJ6j0cBVFqQCnB616XB+R4+OE8X1g9vfxyHjb/5ZfXXlavXnfi6QEDYNKk+scsSZJUT12ZiFlSjUXAl74EhxwCv/gFHHNM7WNYsAB+8xu4/PI8OfTKlZW/dtAg2Hln2G03eM1r8jJ5ck7KBgyA/v1zshZRtfAlSZIakjVgUoNKCaZOhUWL4IEHctICORF64YX8fP/+6y6lBKe09OsHa9bAwoUwf37rsnBh3t+gQTBwYF4GDYLHHoPLLoM//Skfa+LEPPH0xIl5ffnS1JTjXLOmdVm2DO6/H+64A+68s/U47Wkbb+n+iBEwfvzay1ZbweDBeZuBA9e+be+5gQPzuUuSJNWDNWBSDxMBp54K73wnvPa1ObGZOxfmzev8fiAnSpVqaYETToB3vxt2333ja6pSgn/9Kydjs2fDqlV5Wbly7du2z82bl/vA3XsvzJmzcceGnIC1l5i1vW0vEdxiC9huu9Zl221z0ilJktQV1oBJDWzNGjjyyJyMbLZZXsaOzbcjRuQ+WG0TmLb3V63KCdSoUWsvI0fmY6xYkftzlW5Hj841b41Se7RiBTzzTE7gSnGuXLnubXvPVbJuxYp137fSMcuTv379clI2YMDafd6amvLfZPx4mDChddlySxgyJNfalS9NTe2fp80xJUnqXTqqATMBk6QOLFoEjzwCDz2UB0N5+umc9K5Z03q7alWumXzqqZwod6avXLlBg6C5ed2l7fOlppVNTWvflpqQlpqUtm0uWnp+1Cg48MDWJq2SJKk6bIIoSZ00fHjrICKVWLMGnnsuJ2Nz5sDSpbnpaPmyZs26r1u9OtfuLV/eett2Wbgwj4r58sut/e3Kk8G2NZmrV3cc56c/Df/1Xxv3nkiSpK4xAZOkbtKvX256uOWW9Y6kNakrLaXE7BvfgO9+Nw+sstde9Y5SkqS+xyaIktSHLF4Mr3pV7o921135VpIkdb+OmiA2SDd7SVItDBsGF16Y+7Wddlq9o5Ekqe8xAZOkPuaAA+C443I/sNtuq3c0kiT1LSZgktQHfetbeXLrY47Jg3xIkqTaMAGTpD5o+HC44AJ48EH48pfrHY0kSX2HCZgk9VFvehN86ENw1lnw97/XOxpJkvoGEzBJ6sO+/W0YNw722w+OPBL+8IeNn0xakiRtmPOASVIfNmIEXHNNHpDjyivhv/8bRo+Gd70L3v3uPGT92LF5jrNqSgnmzoV//Qsee6z1dvbsvL5fP2hqar098ED48IerH5ckSd3NecAkSUCerPlPf4JLL4Xf/AZeeik/P3BgHrCjpQXGj88J2oABrUv//jkpWr4cli5de2luzq8dN671dsSInFw9+CA88EBeHnwQFi1aO57SMfv1gzVr8uTSa9bkucweeSRPJH3BBbDjjrV/ryRJ2pCO5gEzAZMkreOll+CGG+Dxx2HWLHj66dZl4cLcTHHlSli1KidGkJOwIUNal8GDYdmyXIv18svtH2fcONhhh5xEveIVsM02eZk0qeNJolPKNXWf+hQsWQKnnAInnZQTRUmSGoUJmCSpKtasyUtTE0Ssuz4lmDcvJ2KzZ8P8+TB5ck68RozY+OM+/zx88pNwySW5qeQ558DWW6+dADY1bfz+JUnqChMwSVKv9Pvfw/HH55q6tgYObE3Gym9HjICJE3NNW2mZODEnkvPm5WX+/Hy7bFluStncnF8/eHDr/bbPjRzZcc2dJKlv6SgBcxAOSVKPdsghsPfeeTCRJUta+58tW9b+/aVLc3L1u9/Bc891byz9+uWmlFOmwC675Nudd86JWanPXHu1hJKkvsMETJLU4w0fnkdu7KylS+HJJ+GJJ/Jt//55kJHRo2HUqHw7ZEgeYGT58pzILVvW8f05c+Cee2DGDLjssvaP2dSUE7HmZhg6FIYNW/u2VJs2aFBrzVt798eMgYMPzvuSJPUcJmCSpD5ryJA8AEg1RlJcsADuvRfuvz/XzJUGLikty5fn5xcvzsuSJfDCC/n5l19uTfpK99tzwglw7rndH7skqXpMwCRJqoKRI3PTyL337vq+UsrTBJQnZt/+NnzvezB9Ohx2WNePIUmqDaewlCSpwUXkpofDh8Nmm8GECTkBe93r4IMfzPOiSZJ6hg0mYBGxfUTcXbYsiohP1iA2SZLUgYEDcz+zAQNy/7dly+odkSSpEhtMwFJKD6WUpqSUpgCvAZYCV1U7MEmStH4TJuRJqe+9Fz7+8XpHI0mqRGebIO4PPJZSerIawUiSpM55y1vgC1+ACy6Aiy+udzSSpA3p7CAc7wEuaW9FRBwHHAcwYcKELoYlSZIqdcYZcMsteULqbbaBbbdtHa5+0CDnHpOkRlJxDVhEDATeBlzR3vqU0vkppakppaljx47trvgkSdIG9O8Pl1yS5xGbNg222CLPYzZ4cJ4cevjwPFjHXXfVJ74lS3KCuGhRfY4vSY2kMzVgbwbuTCk9V61gJEnSxtlyS7jtNrj++nXnEXvqKbj0UvjpT2GvvfL8Ye98Zx7Io5qefjoPlX/++bBwYa6J22mnHMOee+Zl/PhcU9fPcZkl9RGRUqpsw4hLgT+llH62oW2nTp2aZs6c2dXYJElSN1mwAC66CM47Dx59NNeS7btvTsIGDsyjKQ4YkO8PG7b2Mnx4+48HDWr/WDNmwHe/C7/6VZ7D7NBD81xlDzyQa8Juuy0nZOUGDMg1ds3Nef+veAVstx1sv33rMmaMTSol9RwRcUdKaeo6z1eSgEXEJsBTwNYppYUb2t4ETJKkxrRmDfzpT/CDH8CDD8LKlXlZsSLflmrPKtG//7rJWwQ880xOoo49Nte2TZy4bgwPPpgTtblz8xD6pRq7Zctg/nx4+OG8LF267nEHDWpN1nbcEa64IidnktRIupSAdZYJmCRJPdeqVbnf1qJFsHhx69L28eLFrQlceRI3dSocfXSuJeuKNWtyMldKxhYubE3Sli/Pydl//zfsthv85S85KZOkRtFRAtbZURAlSVIv178/jByZl3rq1y/3ERs/Hvbfv/1tDjooN288/HC48kpoaqptjJLUWXZ5lSRJPdahh8I558BvfpObO1ahYY8kdStrwCRJUo92wgkwaxacdRa0tMDJJ9c7IknqmAmYJEnq8b7+9dxf7JRTYNy43AdNkhqRCZgkSerx+vXL85zNmQMf+hDccw+86U0wfXqeoFqSGoWjIEqSpF5j0SI48ki4+uo8KmP//nnC5wMOgNe+Nidjzc2tw9g3N+dRFRctal0WL85D50+fXu+zkdSTOQqiJEnq9YYPh1//OidVf/sbXHttXk4/vfMDdBx9NJx9NowY0f1xSuq7TMAkSVKvM3hwrvU64ID8+MUX8+TPpXnESsvy5TBkSE7cSsuwYXDxxfC1r8F118HPfgb77Vff85HUe9gEUZIkqR0zZsBRR8FDD+WRFr/xjZysbYwnnoCvfAXuugsGDoRBg/Jt6f7w4bmmbcSIPP/aiBHwhjfA1lt35xlJqiWbIEqSJHXCHnvAnXfmYe3POSf3K5s2rbUPWWkZPz4P+LHlluvu47nn4Mwz4cc/zpNEv+ENsGZN7p+2dCksWJBr4RYtgoUL823pt/ExY+DWW+EVr6jpaUuqMmvAJEmSNuD66+Hzn88JVXkTxtWrW7fZZRd485vhoINgp51y/7Gzz84J1gc/CF/6Emy11fqPs2ZNHgTk0UfzfkaMyEnY2LHVPDtJ1dBRDZgJmCRJ0kZauRL++U/44x/zcvPNsGpV6/r//M/c9HBjarFuvTX3Pdt1V/jLX3Jtm6SewwRMkiSpyhYtygN3zJwJhx6ak6euuPJKOOwweNe74NJL83xnknoG+4BJkiRV2fDh8I535KU7HHoofOtb8NnPwqRJcNZZ3bNfSfVjAiZJktTAPv1p+Ne/ciI2aRJ8+MN5QA9JPZMJmCRJUgOLyKMwPvUUfOxjeRk4MPcJGzIkLyNHwmabweabt95uuilssknrNqVl8uSNH05fUteZgEmSJDW4/v1zH7CLLsqTSi9bloexLy3z58Pzz8N99+WRGleu7HhfQ4bk0Rrf+U44+OA80qKk2jEBkyRJ6gE22STXfm1ISnlOsblzc3JWnqwtWQI33QRXXZUH+BgwAPbfHw45JI/UOHFintfMGjKpehwFUZIkqY9ZswZmzID//d+ciD3++Nrrx46FCRNy08ZBg9Ze+vXLc5WVL0uW5CaP227bumyzDbS05OaSTU25Fq9//5z0OaS++gKHoZckSdI6UoKnn4Ynn8zLU0+13l+0CFasgJdfzsuKFXny6aFDYdiw1mWTTXITyMcey69bs2b9x5w2DT73uVzz5tD66q0chl6SJEnriMi1XRMmwPTpXd/fihXwxBPw6KPw7LN5YuryZeFC+PnP4e1vhx12gM98Bo44Apqbu35sqSewBkySJEk1tXIlXHFFHlr/7rvzqI3HHJMnrn7lK3N/tEGD2n9t6atrRM3ClTaKTRAlSZLUUFKC667Lidg117QmV01NuR/Z9tvnJo/z58O8eXmZPz/3LfvJT/IAIlKjsgmiJEmSGkpETqL23z+P1vjww/DPf7YuDz+cB+0YPRpe9ap8O2pUHsXxgAPg//0/+OY3HbVRPYs1YJIkSepRli6FU06Bs8/OzRV//nPYc896RyWtraMaMMedkSRJUo8yZAh897tw/fV50I9p0+Ckk3KN2erV9Y5OWj9rwCRJktRjLV6cR1L8yU/y48GD80Aer351XiZNys81N+dl8GAYMSI/70AeqiYH4ZAkSVKvdf/98Pe/w3335fv33Qdz5nS8/VFHwQ9/6KTQqh4H4ZAkSVKv9apX5aXc3LnwzDN5Eully2D58rzceiucdVZO1K68EiZOrE/M6ptMwCRJktQrjR2bl7be8Y7cb+yII2DqVLjsMthvv5qHpz6qokE4ImJkRPwqIh6MiAciwnFmJEmS1GO99a25yeLYsfDGN8K3v906D5lUTZXWgJ0D/DGl9K6IGAg424IkSZJ6tO22gxkz4Oij4XOfg0sugR13hAkTcrPEiRPzhNDbblvvSNWbbDABi4gRwN7A0QAppRXAiuqGJUmSJFXfsGHwq1/BOefkCZ5vvhlmzVp7OPu3vS3POTZ5ct3CVC9SSRPEycBc4GcRcVdEXBARm7TdKCKOi4iZETFz7ty53R6oJEmSVA0R8MlPwl//Ck88kQfteOopuOkm+MpX4C9/yUPbn3FGHsRD6opKErD+wG7AD1NKuwIvASe13SildH5KaWpKaerY9no7SpIkST1AUxOMH58H6jj1VHjwwVwLdtppsNNO8Pvf1ztC9WSV9AGbBcxKKc0oHv+KdhIwSZIkqTdqackjJR53HJxwQh7AY4cd8mTOLS15GT8ett4apk/PCZzUkQ0mYCmlORHxdERsn1J6CNgf+Gf1Q5MkSZIax/77w9135wmcb7gh9xW76y547rnWbbbbDk46KQ9xP2BAvSJVI6toGHrgBOCXEXEvMAX4WtUikiRJkhrUwIHwiU/kATv+/neYMyf3GXv8cbj0UhgyBD7wgTxy4nnn5QmgpXKRqjDhwdSpU9PMmTO7fb+SJElSI0sJrr4avvpVuOUW2HxzOOgg2GSTvAwZkpeRI2GPPeDVr4Z+lVaJqEeJiDtSSlPbPl/pPGCSJEmSNiAC3vIWePOb86iKZ50F110HS5fmpW2N2MiRud/Y3nvDPvvAbrvZh6y3MwGTJEmSulkE7LtvXsqtWZOHsn/uuTzn2I035kTtd7/L63feGX76U3jNa2odsWrFCk9JkiSpRvr1y00QJ0+G978ffvITePhhmD0bfvYzmDs3N008+WTnHOutTMAkSZKkOttySzj6aPjHP+DII+HrX8/NEW+7rd6RqbvZBFGSJElqEKNG5SaI7353nnfs9a+HY4/Ng3WMGtW6jB4N22xjf7GeyARMkiRJajAHHQT33w8nnpibKa5Zs+42r30tXHEFTJxY+/i08WyCKEmSJDWg4cPhRz/KIyfOmQMPPJCHtv+//4PvfQ8eeig3U7z66npHqs6wBkySJElqYAMH5vnENt987ecPPBDe9S44+GA49VQ47TSbJPYE1oBJkiRJPdArXpEH6Tj6aPjKV3Kzxblz6x2VNsQaMEmSJKmHGjw4D9oxbRp87GOw7baw4465X9ikSa23++6bh79X/ZmASZIkST3cBz6Q+4Oddx48/jjceSf8+tewYkVev+OOcNVVsP32dQ1T2ARRkiRJ6hWmTMkjJl57LTzySB6845lncuL1wguw++7w29/WO0qZgEmSJEm9UL9+MG4cvOMdcMcdsN128Pa3w5e+1P6w9qoNEzBJkiSplxs/Hm66CY45Jg/Y8da3woIF9Y6qbzIBkyRJkvqA5ma48EL4wQ/gmmtgjz3g2WfrHVXfYwImSZIk9RERcPzx8Je/5P5hBx4I8+fXO6q+xQRMkiRJ6mP23jsPzvHgg7k54tKl9Y6o7zABkyRJkvqgN74RfvlLuOUWOOwwWLmy3hH1DSZgkiRJUh912GHwox/BH/6QB+hwdMTqcyJmSZIkqQ877jh48UU4+WQYPRrOOSf3FVN1mIBJkiRJfdxJJ+XJmr/zHbj5ZnjDG2DffWH6dBg5st7R9S42QZQkSZL6uAj41rfgu9+FESPgvPPgbW/LNWKveQ189auwenW9o+wdTMAkSZIk0a8ffPKTcP31eZLmG26A006DTTaBU0+Fo46CVavqHGQvYAImSZIkaS3NzbDPPjkBu/HGXAP2y1/C4Yc7WmJX2QdMkiRJ0nqdfHJOyj7zGVixAi6/HAYNqndUPZM1YJIkSZI26NOfzn3DfvtbePvbnbx5Y5mASZIkSarIRz8KF1wA11wDBx8MS5bUO6KexwRMkiRJUsU++EG4+OLcN+y973V0xM4yAZMkSZLUKUccAeeeC7/7HZxySr2j6VkchEOSJElSp330o3D//fDNb8IrXwlHHlnviHqGihKwiHgCWAysBlallKZWMyhJkiRJjS0i14I9/DAceyxsuy3stVe9o2p8nWmC+IaU0hSTL0mSJEkAAwbAFVfAhAnwH/8BTz1V74gan33AJEmSJG200aNzX7CXX4a3vc2RETek0gQsAddExB0RcVx7G0TEcRExMyJmzp07t/silCRJktTQdtgBLrsM7rsPjjmm3tE0tkoTsGkppd2ANwMfi4i9226QUjo/pTQ1pTR17Nix3RqkJEmSpMZ24IFw5pnwq1/lecLUvooSsJTSM8Xt88BVwO7VDEqSJElSz/PpT8PWW8NnP+v8YB3ZYAIWEZtExLDSfeBNwP3VDkySJElSzzJoUB6W/r774Gc/q3c0jamSGrDNgZsj4h7gduD/Ukp/rG5YkiRJknqiQw+F178evvhFB+RozwYTsJTSv1JKuxTLTimlr9YiMEmSJEk9TwT813/BnDnwrW/VO5rG4zD0kiRJkrrVHnvAf/5nTsCeeabe0TQWEzBJkiRJ3e7rX88DcZx6ar0jaSwmYJIkSZK63eTJ8IlPwM9/DnffXe9oGocJmCRJkqSqOPlkGD0aPvMZSKne0TQGEzBJkiRJVTFyJJx2Glx3HfzlL/WOpjGYgEmSJEmqmuOOg+Zm+MMf6h1JYzABkyRJklQ1gwbB7rvDzTfXO5LGYAImSZIkqaqmTYM774SXXqp3JPVnAiZJkiSpqqZPz0PS33ZbvSOpPxMwSZIkSVW1554QYTNEMAGTJEmSVGUjRsDOO5uAgQmYJEmSpBqYNg1uvRVWrap3JPVlAiZJkiSp6qZPz4Nw3H13vSOpLxMwSZIkSVX3+tfn277eDNEETJIkSVLVtbTApEkmYCZgkiRJkmpi2rScgKVU70jqxwRMkiRJUk1Mnw7PPQePPVbvSOrHBEySJElSTUyblm9vuqm+cdSTCZgkSZKkmthhBxg9um/3AzMBkyRJklQT/frl0RBNwCRJkiSpBqZPh4cfhuefr3ck9WECJkmSJKlmSv3A/va3+sZRLyZgkiRJkmpmt92gubnvDsRhAiZJkiSpZgYNgt1377v9wEzAJEmSJNXUtGlw553w0kv1jqT2TMAkSZIk1dT06bB6NcyYUe9Ias8ETJIkSVJN7bknRPTNfmAmYJIkSZJqasQI2HlnEzBJkiRJqonXvhbuvbfeUdRexQlYRDRFxF0R8ftqBiRJkiSp95s8GebO7XsDcXSmBuwTwAPVCkSSJElS3zFpUr598sm6hlFzFSVgEdECHAxcUN1wJEmSJPUFkyfn28cfr28ctVZpDdjZwInAmuqFIkmSJKmvMAHrQEQcAjyfUrpjA9sdFxEzI2Lm3Llzuy1ASZIkSb3P5ptDczM88US9I6mtSmrAXg+8LSKeAC4F9ouIX7TdKKV0fkppakpp6tixY7s5TEmSJEm9SUTuB2YNWBsppS+klFpSSpOA9wDXpZSOqHpkkiRJknq1SZOsAZMkSZKkmpg82Rqw9Uop3ZBSOqRawUiSJEnqOyZNgvnzYeHCekdSO9aASZIkSaqL0kiIfakZogmYJEmSpLowAZMkSZKkGpk0Kd/2pX5gJmCSJEmS6mLMGBg61ARMkiRJkqquNBeYTRAlSZIkqQb62lD0JmCSJEmS6qZUA5ZSvSOpDRMwSZIkSXUzeTIsXgzz5tU7ktowAZMkSZJUN31tKHoTMEmSJEl109eGojcBkyRJklQ3JmCSJEmSVCMjR+bFJoiSJEmSVAN9aSh6EzBJkiRJddWXJmM2AZMkSZJUV5Mn9525wEzAJEmSJNXV5MmwbBk8/3y9I6k+EzBJkiRJddWXRkI0AZMkSZJUV31pMmYTMEmSJEl1NXFivrUGTJIkSZKqbOhQGDvWBEySJEmSaqKvDEVvAiZJkiSp7vrKZMwmYJIkSZLqbvJkePJJWLOm3pFUlwmYJEmSpLqbNAlWroTZs+sdSXWZgEmSJEmqu74yFL0JmCRJkqS66yuTMZuASZIkSaq70lxg1oBJkiRJUpU1N8OWW1oDJkmSJEk10ReGojcBkyRJktQQJk+2CSIR0RwRt0fEPRHxj4j4ci0CkyRJktS3TJoETz8Nq1bVO5LqqaQG7GVgv5TSLsAU4KCIeF1Vo5IkSZLU50yeDKtXw6xZ9Y6kejaYgKVsSfFwQLGkqkYlSZIkqc/pC0PRV9QHLCKaIuJu4HngzymlGe1sc1xEzIyImXPnzu3mMCVJkiT1dn1hMuaKErCU0uqU0hSgBdg9Il7Vzjbnp5SmppSmjh07tpvDlCRJktTbtbRABDz5ZL0jqZ5OjYKYUloAXA8cVJVoJEmSJPVZAwfCuHF9vAYsIsZGxMji/mDgjcCDVY5LkiRJUh80aZI1YFsC10fEvcDfyX3Afl/dsCRJkiT1RRMn9u4ErP+GNkgp3QvsWoNYJEmSJPVxEyfC5Zfn4eibmuodTffrVB8wSZIkSaqmSZPyRMyzZ9c7kuowAZMkSZLUMCZOzLe9dSAOEzBJkiRJDaM0GXNv7QdmAiZJkiSpYUyYkG9NwCRJkiSpygYPhs02swmiJEmSJNVEb54LzARMkiRJUkOZONEaMEmSJEmqiYkT4amnYM2aekfS/UzAJEmSJDWUSZPg5Zfh+efrHUn3MwGTJEmS1FB681xgJmCSJEmSGkpvngvMBEySJElSQ7EGTJIkSZJqZNgwGDXKGjBJkiRJqoneOheYCZgkSZKkhtNb5wIzAZMkSZLUcCZOzDVgKdU7ku5lAiZJkiSp4UyaBC+9BC++WO9IupcJmCRJkqSGUxoJsbf1AzMBkyRJktRweutcYCZgkiRJkhpOb50LzARMkiRJUsMZNQqGDrUGTJIkSZKqLiI3Q7QGTJIkSZJqoDQUfW9iAiZJkiSpIZmASZIkSVKNTJoECxbAwoX1jqT7mIBJkiRJaki9cS4wEzBJkiRJDak3zgVmAiZJkiSpIfXGucBMwCRJkiQ1pM02g+Zma8AkSZIkqeoici1Yn6oBi4jxEXF9RPwzIv4REZ+oRWCSJEmS1NuGoq+kBmwV8JmU0iuB1wEfi4hXVjcsSZIkSeqDCVhK6dmU0p3F/cXAA8BW1Q5MkiRJkiZNgrlz4aWX6h1J9+hUH7CImATsCsxoZ91xETEzImbOnTu3m8KTJEmS1JeVRkJ86qn6xtFdKk7AImIocCXwyZTSorbrU0rnp5SmppSmjh07tjtjlCRJktRHleYC6y0DcVSUgEXEAHLy9cuU0v9WNyRJkiRJyko1YL2lH1gloyAGcCHwQErpO9UPSZIkSZKyLbeE/v37UAIGvB54P7BfRNxdLG+pclySJEmSRFMTTJjQe5og9t/QBimlm4GoQSySJEmStI7eNBR9p0ZBlCRJkqRamzABnn663lF0DxMwSZIkSQ2tpQWefRZWrap3JF1nAiZJkiSpobW0wOrV8Nxz9Y6k60zAJEmSJDW0lpZ82xuaIZqASZIkSWpo48fn21mz6htHdzABkyRJktTQSjVgJmCSJEmSVGWjR0NzswmYJEmSJFVdRK4FMwGTJEmSpBoYP95BOCRJkiSpJqwBkyRJkqQaaWmB2bPzfGA9mQmYJEmSpIbX0gKrVsHzz9c7kq4xAZMkSZLU8EpzgfX0fmAmYJIkSZIaXm+ZC8wETJIkSVLDMwGTJEmSpBrZdFMYNMgETJIkSZKqrrdMxmwCJkmSJKlHaGlxEA5JkiRJqglrwCRJkiSpRlpa4JlnYM2aekey8UzAJEmSJPUI48fDypUwd269I9l4JmCSJEmSeoTeMBS9CZgkSZKkHqGUgPXkgThMwCRJkiT1CNaASZIkSVKNjB0LAweagEmSJElS1fXrB1ttZQImSZIkSTXR0ydjNgGTJEmS1GP09MmYTcAkSZIk9Rjjx+cELKV6R7JxTMAkSZIk9RgtLbBiBbzwQr0j2TgbTMAi4qcR8XxE3F+LgCRJkiSpIz19KPpKasAuAg6qchySJEmStEE9fTLmDSZgKaUbgXk1iEWSJEmS1mv8+Hzbm2vAKhIRx0XEzIiYOXfu3O7arSRJkiT922abQf/+JmCklM5PKU1NKU0dO3Zsd+1WkiRJkv6tp0/G7CiIkiRJknqUnjwZswmYJEmSpB6lNBdYT1TJMPSXALcC20fErIj4YPXDkiRJkqT2tbT03MmY+29og5TS4bUIRJIkSZIq0dICy5fDvHkwZky9o+kcmyBKkiRJ6lF68mTMJmCSJEmSepTSXGA9cSAOEzBJkiRJPYo1YJIkSZJUI5tvDk1NJmCSJEmSVHVNTTBunAmYJEmSJNXE+PH2AZMkSZKkmijNBdbTmIBJkiRJ6nF66mTMJmCSJEmSepyWFli6FBYsqHcknWMCJkmSJKnHKc0F1tOaIZqASZIkSepxSnOB9bSBOPrXOwBJkiRJ6qydd4Y77oDtt693JJ1jAiZJkiSpxxkyBHbbrd5RdJ5NECVJkiSpRkzAJEmSJKlGTMAkSZIkqUZMwCRJkiSpRkzAJEmSJKlGTMAkSZIkqUZMwCRJkiSpRkzAJEmSJKlGTMAkSZIkqUZMwCRJkiSpRkzAJEmSJKlGTMAkSZIkqUZMwCRJkiSpRiKl1P07jZgLPNntO67MpsALdTq21JblUY3E8qhGY5lUI7E8qrtNTCmNbftkVRKweoqImSmlqfWOQwLLoxqL5VGNxjKpRmJ5VK3YBFGSJEmSasQETJIkSZJqpDcmYOfXOwCpjOVRjcTyqEZjmVQjsTyqJnpdHzBJkiRJalS9sQZMkiRJkhqSCZgkSZIk1UiPTMAiYkC9Y5BKLI9qJJZHNZKIiHrHIJWzTKoR9Kg+YBExDPgasAK4IqV0W51DUh9meVQjsTyqkRTl8SvAbOB3KaUH6hyS+jjLpBpJj6kBK37V/Qk55keAUyPiuPpGpb7K8qhGYnlUI4mIEcAvgf5AE/DDiHhjfaNSX2aZVKPpX+8AOmFzYHJK6T0AETEbODAi3pZS+m19Q1MfZHlUI7E8qpFsBmyVUnobQES8BLwxIhallGbUNzT1UZZJNZSGrQGLiG0j4pyIOCYihqaUZgHzIuJ9xSY3A/8A9i+qlaWqiYgdivL4nogYWJTH5yPiiGITy6Nqxs9HNZKI2D4ivhYR+0bEgJTSI8CTEfGmYpOryE1j94qI5vpFqr4iIraJiG9ExMER0VyUyacsk2oUDZmARcQZwJXAs8DBwOXFqiuBacUXjnnAPUACtqhLoOoTIuI1wKXAXOA/gAsiYgK5XE6LiGGWR9WKn49qJEUzrivJ3yeOB75fJP0zgV0jYnBK6WngPmAi0M9BEFQtkZ1JLpMvA8fQOrnynVgm1SAaLgEr2uk+AbwppfQN4NPAvGL1LcBq4Oiyx9NpwPNQr/IK4KGU0pm0lr0DgTnAIiyPqhE/H9WAJgHXppROAo4FppDL3cPAWPJnJcDvgbcBw1NPGv1LPc0k4Hlgv5TSacC3gPnFupnAVlgm1QAa7h9zSmkh8LOU0nMR8VpgBjA0Ik4DHgV+CxwZEfsCO5MvrIY7D/V8Zb+IPQXMj4jxKaVlwCXAbuQvu38G3m95VC34+agGtJzc/HV0SmkR8D3gPcC95AFhjo2IXYBtgfvrF6b6gpTS4ymlc1NK8yJid+DXwOiI+HBK6Wpy02zLpOqu7oNwRES0/eUhpZQiYiAwDvgc8L/kJmDHp5TOiYgtgCOBacCXHUpU3aHo27Wi9LisXK4plu2Bp1NKV0fEwcBOKaXvRcRWWB7VzdqWxxI/H1UPRT+a5e2sWkhuJTAamJdS+kVEHAm8NqX042KEztPIPwh8KaU0p3ZRqzdbT5ksDTk/Bfg8cANwRUQsLcrkQCyTqrO6zQMWEacDv0op3R8RTSml1cXzBwF/apuURcT+wA9SStsXjwellF6uddzqnYryOBn4I3BNSunFiOhHbsZwbdHvZgVweUrp4Yh4M/C1lNKuxestj+o27ZXH4nk/H1VzRXnchVybcH1K6ani83HXlNIdEfEL4Fby5+PciHgPcHRK6aDi9aOLfolSt2ivTBbP7wHc3s5n5GHkZOvVxWPLpOqq5k1TImJCRPwe+Ax5TgbKkq9dyb/qDmrnpeOB/4uI/sVr/HKhLouIXSLidqCFPCrSe4FDiy8Xu5C/BEPu0DsC+FTRNHFL4M/FdpZHdYv1lUc/H1VrEfGaiPg7uXz9ADgc2KdY/WZyDQLAj4E9yDWvkMvpdaX9+EVX3WV9ZbJombId7bfu2hy4rPTAMql6q0cTxIXAxSmlQyLinxHxgZTST4t196SU7iptGBEjgVcBpxdPnZhSWlXTaNXbLSaXx+8DRMR4YPeU0vkRcV+pPKaU7omIeeTmDNeQR5Y7OqW0pl6Bq1eqqDwW60bi56Oq62lyuboeICLeQW4JAPDH0o+nKaWbih+m3hcRNwFDyaPPSd2tojJZrBtJ/iH1C+TJlz9T00il9ah6E8SIGE3+deK3ZTVdw1JKi4tmXD9LKW1RPN+v9IW2+CV3NflDfE1K6aKqBqo+oW15LL40DAGWFn1rXkf+kD68/MtsqUlXUeM1MaX0eF1OQL1KF8qjn4/qdu39vy6ebwbOA94C3E7ud3htSumZYn2/lNKaiGgCXpVSuqf20as36kKZDGAg8FlgdkrpZ7WOXVqfqjZBjIh3AU+SO4ofWjwXRfIVxYg090XE2QBlydcOwJnAqJTST/1yoe7QXnkESCm9VNZefH/giTZfdncATouILVJKa0y+1B26WB79fFS36uj/NUAx0MH1KaUtga+Sm3m9p9hmD+ATRZ+a1SZf6i5dLJOfBvqllL5q8qVGVNUasIh4A7A18BJ5XpAzUh4+OcgXxuqI2Ab4O7nPw3bkOW3mAwNso6vuVGF5/DH5l7b/i4ipwOPAKqDJ8qjuZHlUI1lPeezftmlrRJwFPJVS+n5EbAe8WBooRuoulkn1ZtUehOOmlNKFwAPkGckPgzyMclnb8ceA64ElwPeBgSmlxX65UBV0WB7Jw8xDHuCgJSL+BzgFaE4pLbQ8qgosj2okHZXHtl90tyQP7z23WP+wX3RVJZZJ9VrdkoBFRHNEDCtVDZeNDFe6SO4n13LtUozkRTGqV1NEHAtMBT6eUpqWUnq0O2JS37Ux5bHobzORPIrXceQP/v8otSeXNpblUY1kI/9f94+ITSPiQuAPwO9TSpe1s3up0yyT6ou6nIBFxPHAHcDZwBeLp9tOrLwamAk8C+xbPL1F8fy9wCtLo35JXbGx5TEixqWUSm3N90kp/bBGIasXszyqkXTh//VY4EXgr8D0lNK5NQhXfYBlUn1VlxKwiDicXCX8PuBHwH4RsVlZB/J/Syk9AvweeGtELAb+X/H8jJTSS12JQ4Iul8ePFs//V0ppSQ3DVi9leVQj6er/66LrwMWWR3UXy6T6so2aB6wYwTABrwZ+mVK6u+gs+RCwtJ3t+5PnYDiPPMTy0SmlKzc+bKmV5VGNxPKoRmJ5VKOxTEqdqAEr2tt+NiLGl/068Sjwzoi4CrgIGAP8NiKOK70GcjvelNLLwE9TSjt54airLI9qJJZHNRLLoxqNZVJaW0XD0EfEq4GfA1sB16WUDi9btxnwdeDclNI9EbEfcAmwZWqd1+vfEyxLXWV5VCOxPKqRWB7VaCyT0roqrQF7ATgX2AGYFBFvgn+PVNOP3BnyPoCU0nXAjcCE0ou9cNTNLI9qJJZHNRLLoxqNZVJqo6IELKX0LHBZSmk+uZr45OL5NSmlOcBw4IcR8aqIuIjcVnd2VSJWn2d5VCOxPKqRWB7VaCyT0roq7gOWUlpW3L0YWB4RHy9bfQR5IuXzgCdSSu9MKa3ovjCltVke1Ugsj2oklkc1GsuktLaK+oCt86KIA4EzUkp7RMQu5AtmYUQMSSmtM4KNVE2WRzUSy6MaieVRjcYyKW3kPGAppT8B8yPiZeCrwKDieS8c1ZzlUY3E8qhGYnlUo7FMShsxD1jRafIMYEfyRHg/6faopApZHtVILI9qJJZHNRrLpJRtbBPEN5OHEn25+0OSOsfyqEZieVQjsTyq0VgmpY1MwCRJkiRJnbdRfcAkSZIkSZ1nAiZJkiRJNWICJkmSJEk1YgImSZIkSTViAiZJkiRJNWICJknqVSLi9Ij4bL3jkCSpPSZgkiRJklQjJmCSpB4vIk6JiIcj4mZg++K5j0fEPyPi3oi4tM4hSpIEQP96ByBJUldExGuA9wBTyP/X7gTuAE4CJqeUXo6IkXULUJKkMtaASZJ6uunAVSmlpSmlRcBvi+fvBX4ZEUcAq+oWnSRJZUzAJEm91cHAecBuwN8jwlYfkqS6MwGTJPV0NwLviIjBETEMeCv5/9v4lNL1wOeBEcDQOsYoSRJgHzBJUg+XUrozIi4D7gGeB/4OJOAXETECCODclNKC+kUpSVIWKaV6xyBJkiRJfYJNECVJkiSpRkzAJEmSJKlGTMAkSZIkqUZMwCRJkiSpRkzAJEmSJKlGTMAkSZIkqUZMwCRJkiSpRv4/epnzKgOvEVoAAAAASUVORK5CYII=\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "gluon_dataset_copy['y_orig']=gluon_dataset_copy['y']\n",
+ "transformed = log_transformation(gluon_dataset_copy['y'])\n",
+ "gluon_dataset_copy['y']=transformed\n",
+ "\n",
+ "#plot before transformation\n",
+ "pd.plotting.register_matplotlib_converters()\n",
+ "f, ax = plt.subplots(figsize=(15,7))\n",
+ "gluon_dataset_copy.plot(kind='line', x='ds', y='y_orig', color='blue', label='Train', ax=ax)\n",
+ "plt.title(filename)\n",
+ "plt.show()\n",
+ "\n",
+ "#plot after transformation\n",
+ "pd.plotting.register_matplotlib_converters()\n",
+ "f, ax = plt.subplots(figsize=(15,7))\n",
+ "gluon_dataset_copy.plot(kind='line', x='ds', y='y', color='blue', label='Train', ax=ax)\n",
+ "#test.plot(kind='line', x='ds', y='y', color='red', label='Test', ax=ax)\n",
+ "plt.title(filename + \"_transformed using Square Root Transformation\")\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "brazilian-bailey",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " ds | \n",
+ " y | \n",
+ " y_orig | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2021-02-18 11:31:12.752 | \n",
+ " 8.306719 | \n",
+ " 4050.000000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2021-02-18 11:32:12.752 | \n",
+ " 8.305608 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2021-02-18 11:33:12.752 | \n",
+ " 8.305608 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2021-02-18 11:34:12.752 | \n",
+ " 8.305608 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2021-02-18 11:35:12.752 | \n",
+ " 8.331887 | \n",
+ " 4153.250000 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 135 | \n",
+ " 2021-02-18 13:46:12.752 | \n",
+ " 4.714025 | \n",
+ " 110.500000 | \n",
+ "
\n",
+ " \n",
+ " 136 | \n",
+ " 2021-02-18 13:47:12.752 | \n",
+ " 4.113432 | \n",
+ " 60.156250 | \n",
+ "
\n",
+ " \n",
+ " 137 | \n",
+ " 2021-02-18 13:48:12.752 | \n",
+ " 3.002739 | \n",
+ " 19.140625 | \n",
+ "
\n",
+ " \n",
+ " 138 | \n",
+ " 2021-02-18 13:49:12.752 | \n",
+ " 1.849930 | \n",
+ " 5.359375 | \n",
+ "
\n",
+ " \n",
+ " 139 | \n",
+ " 2021-02-18 13:50:12.752 | \n",
+ " 0.568505 | \n",
+ " 0.765625 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
140 rows × 3 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " ds y y_orig\n",
+ "0 2021-02-18 11:31:12.752 8.306719 4050.000000\n",
+ "1 2021-02-18 11:32:12.752 8.305608 4045.500000\n",
+ "2 2021-02-18 11:33:12.752 8.305608 4045.500000\n",
+ "3 2021-02-18 11:34:12.752 8.305608 4045.500000\n",
+ "4 2021-02-18 11:35:12.752 8.331887 4153.250000\n",
+ ".. ... ... ...\n",
+ "135 2021-02-18 13:46:12.752 4.714025 110.500000\n",
+ "136 2021-02-18 13:47:12.752 4.113432 60.156250\n",
+ "137 2021-02-18 13:48:12.752 3.002739 19.140625\n",
+ "138 2021-02-18 13:49:12.752 1.849930 5.359375\n",
+ "139 2021-02-18 13:50:12.752 0.568505 0.765625\n",
+ "\n",
+ "[140 rows x 3 columns]"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "gluon_dataset_copy"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "sufficient-myrtle",
+ "metadata": {},
+ "source": [
+ "# Splitting Data into Training and Testing"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "organized-label",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "gluon_dataset_copy=gluon_dataset_copy.set_index('ds')\n",
+ "gluon_dataset=gluon_dataset.set_index('ds')\n",
+ "validation_time = \"2021-02-18 13:10:00\"\n",
+ "train_time = \"2021-02-18 13:30:00\"\n",
+ "test_time = \"2021-02-18 13:50:12\"\n",
+ "freq='1min'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "possible-curtis",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "validation_ds = ListDataset([{\"start\":gluon_dataset_copy.index[0], \n",
+ " \"target\":gluon_dataset_copy.y[:train_time]}],\n",
+ " freq=freq\n",
+ " )\n",
+ "train_ds = ListDataset([{\"start\":gluon_dataset_copy.index[0], \n",
+ " \"target\":gluon_dataset_copy.y[:validation_time]}],\n",
+ " freq=freq\n",
+ " )\n",
+ "test_ds = ListDataset([{\"start\":gluon_dataset_copy.index[0],\n",
+ " \"target\":gluon_dataset_copy.y[:test_time]}],\n",
+ " freq=freq\n",
+ " )\n",
+ "test_orig_ds = ListDataset([{\"start\":gluon_dataset.index[0],\n",
+ " \"target\":gluon_dataset.y[:test_time]}],\n",
+ " freq=freq\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "spoken-seller",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkkAAAGfCAYAAABLD0abAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABHl0lEQVR4nO3deXxU9b3/8dd39mSyh7AjuxGEEBACiCiuIG6tett6FWvVYrVV7G211mpr79W299a6VotrterPpVjUqm0FJVW0SkFAkIDIKovsQ/ZkJvP9/ZFJTCAhIZlkJpP38/GYR8iZM+d85nwZ5s33nPP9GmstIiIiItKYI9YFiIiIiMQjhSQRERGRJigkiYiIiDRBIUlERESkCQpJIiIiIk1QSBIRERFpQqtCkjFmjjFmtTHmU2PMjR1ck4iIiEjMtRiSjDGjgO8CBcAY4FxjzLCOLkxEREQkllrTkzQC+MhaW26tDQH/BC7s2LJEREREYsvVinVWA3cZY7KBCmAmsPRIL8jIyLDDhqmzKVGUlZXh9/tjXYZ0ELVv4ourNl63rvZnbm5s6+iimjp8cdW+XdSyZcv2WmtzDl3eYkiy1hYZY/4XeAsoA1YANYeuZ4yZDcwGyMnJ4e67725vzRInSktLSUlJiXUZ0kHUvokvnto4/8YbAVih74g2ufHGfADuvntF/bJ4at+u6tRTT93S1HJztHO3GWN+BWyz1j7c3Dq5ubl2XV3clS6vsLCQadOmxboM6SBq38QXV21cV0dhYSyr6LKaOnxx1b5dlDFmmbV2/KHLW3O6DWNMT2vtbmPMMdRejzQp2gWKiIiIxJNWhSTg5cg1SUHg+9baQMeVJCIiIhJ7rQpJ1tqp7d1RMBhk27ZtVFZWtndT0snS09MpKiqKdRlH5PP56N+/P263O9aliIhIgmhtT1K7bdu2jdTUVAYNGoQxprN2K1FQUlJCampqrMtolrWWffv2sW3bNgYPHhzrckREJEF02rQklZWVZGdnKyBJ1BljyM7OVi+liIhEVafO3aaAJB1Ff7dERCTaNMGtiIiISBO6TUgKBAI8/HCzQzu16L777qO8vDyKFdVaunQpN9xwQ9S3KyIiIu2jkNRKHRGSQqEQ48eP54EHHojqdkVERKT9uk1IuuWWW9iwYQP5+fncdNNNAPz2t79lwoQJ5OXl8Ytf/AKonQPnnHPOYcyYMYwaNYoXX3yRBx54gB07dnDqqady6qmnNrntkSNHkpeXx49//GMA9uzZw0UXXcSECROYMGEC77//PgB33HEHs2bNYsqUKcyaNYvCwkLOPffc+n1feeWVFBQUMHbsWF599VUAPv30UwoKCsjPzycvL4/169d3+PESERHp7jptCICGfvnXT1mzoziq2xzZN41fnHd8s8//5je/YfXq1axYsQKAt956i/Xr17NkyRKstZx//vm8++677Nmzh759+/LGG28AcPDgQdLT07nnnntYtGgRPXr0aLTdffv2MX/+fNauXYsxhkAgAMCcOXP44Q9/yEknncTWrVuZPn16/VhDa9asYfHixSQlJVHYYGz5u+66i9NOO40nn3ySQCBAQUEBZ5xxBnPnzmXOnDlceumlVFdXU1Nz2NR5IiIiEmUxCUnx4K233uKtt95i7NixQO0EgevXr2fq1Kn86Ec/4ic/+QnnnnsuU6ceeRzN9PR0fD4fV111Feeee259r9DChQtZs2ZN/XrFxcWUlpYCcP7555OUlNRkTa+99lr95MCVlZVs3bqVyZMnc9ddd7Ft2zYuvPBChg8fHpVjICIiIs2LSUg6Uo9PZ7HW8tOf/pRrrrnmsOc+/vhj3nzzTW677TZOP/10fv7znze7HZfLxZIlS3j77beZN28ev//973nnnXcIh8N8+OGH+Hy+w17j9/ubrenll18mNze30fIRI0YwceJE3njjDWbOnMkjjzzCaaeddpTvWERERI5Gl78mKVgTpjJY0+hhrT1svdTUVEpKSup/nz59Ok8++WR978727dvZvXs3O3bsIDk5mcsuu4ybbrqJjz/+uMnX1yktLeXgwYPMnDmTe++9l5UrVwJw1lln8eCDD9avV3ea70imT5/Ogw8+WF//8uXLAdi4cSNDhgzhhhtu4IILLuCTTz5p5dERERGRturSp9uCNWHWfllyWCjql5lEtt/baFl2djZTpkxh1KhRnH322fz2t7+lqKiIyZMnA5CSksKzzz7L559/zk033YTD4cDtdvOHP/wBgNmzZzNjxgz69u3LokWL6rdbUlLCBRdcQGVlJdZa7rnnHgAeeOABvv/975OXl0coFOLkk09m7ty5R3w/t99+OzfeeCN5eXmEw2EGDx7M66+/zksvvcQzzzyD2+2md+/e3Hrrre0+diIiInJkpqlel/bK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ld/9Lht2F7MjUMGkY/vxx/t/zfgTxjJp0iR27doFwKZNm5g8eTKjR4/mtttua3Y/99xzD6NGjWLUqFHcd999AHzve99j48aNnH322dx7772N1p80aRJr1qzB73FRVl3DtGnTWLp0KUuWLGHy5MmMHTuWE088kUMH5AR46qmn+MEPfnDE+kpLSzn99NMZN24co0eP5tVXXwXglltuYcOGDeSNGcNNN93E5s2bGTVqFFA7Ye13vvMdRo8ezdixY1m0aFH9/i699FJmzJjB8OHDufnmm5s8BrfccgsjR44kLy+PH//4xwDs2bOHiy66iAkTJjBhwgTef/99AO644w5mzZrFlClTmDVrVqOesrKyMq688koKCgoYO3Zsfe2ffvopBQUF5Ofnk5eXx/r165ttDxERkWhosSfJWrvdGHM3sBWoAN6y1r7VwsuO6MYboRXThR2V/HyI5JN6Tofh2F4phMKWtUVFLP7HX3n//cW43W5uvP4HLH37NS69bBbl5WWcOHkyv/7Vr7j55pt57LHHuO2225gzZw7XXnstl19+OQ899FCT+122bBl//OMf+eijj7DWMnHiRE455RTmzp3L3//+dxYtWkSPHj0aveab3/wmL730Et//8U/ZsOULdu7cyfjx4ykuLua9997D5XKxcOFCbr31Vl5++eVm33Nz9fl8PubPn09aWhp79+5l0qRJnHfeefzXrXewdPlKnnvzXfqm+yjZ+9W0LA899BDGGFatWsXatWs566yz+OyzzwBYtWoVK1aswOv1kpuby/XXX8+AAQPqX7tv3z7mz5/P2rVrMcYQCATq6/vhD3/ISSedxNatW5k+fTpFRUUArFmzhsWLF5OUlERhg6Fj77rrLk477TSefPJJAoEABQUFnHHGGcydO5c5c+Zw6aWXUl1d3eb57ERERFqrNafbMoELgMFAAPizMeYya+2zh6w3G5gNkJOT0+iLDyA9PZ2SkhIAqqu91NRE926x6uowJSVVzT7/zoJ/sPzjZUydPBGAiooKsrMyqamqwOPxcMopp1BSUsLIkSNZtGgRJSUlLF68mKeeeoqSkhK+9rWv8ZOf/KT+PdRZuHAhM2fOJByuPZ13zjnnsGDBAoYNG4a1ltLSUrzexhd+z5w5k6997Wv84MYf8dbrr3D2OedRUlLC9u3bufnmm9mwYQPGGILBICUlJZSXlxMK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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "train_entry = next(iter(train_ds))\n",
+ "train_entry.keys()\n",
+ "\n",
+ "validation_entry = next(iter(validation_ds))\n",
+ "validation_entry.keys()\n",
+ "\n",
+ "test_entry = next(iter(test_ds))\n",
+ "test_entry.keys()\n",
+ "\n",
+ "test_orig_entry = next(iter(test_orig_ds))\n",
+ "test_orig_entry.keys()\n",
+ "\n",
+ "test_series = to_pandas(test_entry)\n",
+ "train_series = to_pandas(train_entry)\n",
+ "validation_series = to_pandas(validation_entry)\n",
+ "\n",
+ "prediction_length = len(test_series) - len(validation_series)\n",
+ "context_length = [50,60]\n",
+ "\n",
+ "\n",
+ "list1=train_series.index\n",
+ "list2=train_entry['target']\n",
+ "\n",
+ "d = {'ds':list1,'y':list2}\n",
+ "df_train=pd.DataFrame(d, columns=['ds','y'])\n",
+ "\n",
+ "fig, ax = plt.subplots( figsize=(10, 7))\n",
+ "\n",
+ "# train_series.plot(ax=ax[0])\n",
+ "# ax[0].grid(which=\"both\")\n",
+ "# ax[0].legend([\"train series\"], loc=\"upper left\")\n",
+ "\n",
+ "test_series.plot(ax=ax)\n",
+ "plt.axvline(train_series.index[-1], color='r') # end of train dataset\n",
+ "plt.axvline(validation_series.index[-1], color='b') # end of validation dataset\n",
+ "ax.grid(which=\"both\")\n",
+ "ax.legend([\"test series\", \"end of train series\",\"end of validation series\"], loc=\"upper left\")\n",
+ "\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "interracial-saying",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "21"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "prediction_length"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "demographic-procedure",
+ "metadata": {},
+ "source": [
+ "# Hyper-parameter Tuning"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "collective-intervention",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "batch_size = [75,100]\n",
+ "epochs = [5,10]\n",
+ "num_batches_per_epoch = [10,20]\n",
+ "learning_rate = [1e-3,1e-4]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "chronic-matthew",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total Possible Models 32\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sklearn.model_selection import ParameterGrid\n",
+ "\n",
+ "param_grid = {\n",
+ " 'batch_size': batch_size,\n",
+ " 'epochs': epochs,\n",
+ " 'num_batches_per_epoch': num_batches_per_epoch,\n",
+ " 'learning_rate': learning_rate,\n",
+ " 'context_length': context_length\n",
+ " }\n",
+ "grid = ParameterGrid(param_grid)\n",
+ "cnt = 0\n",
+ "for p in grid:\n",
+ " cnt = cnt+1\n",
+ "\n",
+ "print('Total Possible Models',cnt)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "paperback-thesis",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.60it/s, epoch=1/5, avg_epoch_loss=3.04]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.89it/s, epoch=2/5, avg_epoch_loss=2.27]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 12.05it/s, epoch=3/5, avg_epoch_loss=1.3]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.59it/s, epoch=4/5, avg_epoch_loss=0.787]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.83it/s, epoch=5/5, avg_epoch_loss=0.545]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 11.36it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.12it/s, epoch=1/5, avg_epoch_loss=2.97]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.33it/s, epoch=2/5, avg_epoch_loss=2.21]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.26it/s, epoch=3/5, avg_epoch_loss=1.15]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.92it/s, epoch=4/5, avg_epoch_loss=0.606]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.24it/s, epoch=5/5, avg_epoch_loss=0.398]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 10.40it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 9.65it/s, epoch=1/5, avg_epoch_loss=3.5]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 12.49it/s, epoch=2/5, avg_epoch_loss=3.39]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 12.72it/s, epoch=3/5, avg_epoch_loss=3.29]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 12.03it/s, epoch=4/5, avg_epoch_loss=3.2]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 12.27it/s, epoch=5/5, avg_epoch_loss=3.12]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 10.28it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.27it/s, epoch=1/5, avg_epoch_loss=3.57]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.06it/s, epoch=2/5, avg_epoch_loss=3.42]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.96it/s, epoch=3/5, avg_epoch_loss=3.29]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.74it/s, epoch=4/5, avg_epoch_loss=3.18]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.94it/s, epoch=5/5, avg_epoch_loss=3.07]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 10.29it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:01<00:00, 10.70it/s, epoch=1/5, avg_epoch_loss=3.06]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 12.10it/s, epoch=2/5, avg_epoch_loss=1.54]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 12.11it/s, epoch=3/5, avg_epoch_loss=0.387]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 12.38it/s, epoch=4/5, avg_epoch_loss=0.258]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 12.15it/s, epoch=5/5, avg_epoch_loss=0.0651]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 9.95it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.88it/s, epoch=1/5, avg_epoch_loss=3.07]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.50it/s, epoch=2/5, avg_epoch_loss=1.42]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.53it/s, epoch=3/5, avg_epoch_loss=0.413]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.78it/s, epoch=4/5, avg_epoch_loss=0.0279]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.47it/s, epoch=5/5, avg_epoch_loss=0.0125]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 9.55it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:01<00:00, 10.56it/s, epoch=1/5, avg_epoch_loss=4.66]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.93it/s, epoch=2/5, avg_epoch_loss=4.09]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.85it/s, epoch=3/5, avg_epoch_loss=3.66]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 12.38it/s, epoch=4/5, avg_epoch_loss=3.31]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 12.03it/s, epoch=5/5, avg_epoch_loss=3.04]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 9.11it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.35it/s, epoch=1/5, avg_epoch_loss=3.75]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.98it/s, epoch=2/5, avg_epoch_loss=3.3]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.86it/s, epoch=3/5, avg_epoch_loss=2.9]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.64it/s, epoch=4/5, avg_epoch_loss=2.55]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.68it/s, epoch=5/5, avg_epoch_loss=2.31]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 8.91it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 9.17it/s, epoch=1/10, avg_epoch_loss=2.83]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.61it/s, epoch=2/10, avg_epoch_loss=2.23]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 12.08it/s, epoch=3/10, avg_epoch_loss=1.46]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 12.09it/s, epoch=4/10, avg_epoch_loss=0.739]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.98it/s, epoch=5/10, avg_epoch_loss=0.511]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.75it/s, epoch=6/10, avg_epoch_loss=0.285]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.04it/s, epoch=7/10, avg_epoch_loss=0.144]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.53it/s, epoch=8/10, avg_epoch_loss=0.126]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.81it/s, epoch=9/10, avg_epoch_loss=0.177]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 12.22it/s, epoch=10/10, avg_epoch_loss=0.1]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 9.00it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.87it/s, epoch=1/10, avg_epoch_loss=3.34]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.02it/s, epoch=2/10, avg_epoch_loss=2.75]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.39it/s, epoch=3/10, avg_epoch_loss=1.78]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.54it/s, epoch=4/10, avg_epoch_loss=0.677]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.26it/s, epoch=5/10, avg_epoch_loss=0.361]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.42it/s, epoch=6/10, avg_epoch_loss=0.425]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.10it/s, epoch=7/10, avg_epoch_loss=0.235]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.24it/s, epoch=8/10, avg_epoch_loss=0.198]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.05it/s, epoch=9/10, avg_epoch_loss=0.109]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.33it/s, epoch=10/10, avg_epoch_loss=0.0308]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 8.64it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.97it/s, epoch=1/10, avg_epoch_loss=2.94]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.55it/s, epoch=2/10, avg_epoch_loss=2.79]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.54it/s, epoch=3/10, avg_epoch_loss=2.67]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.69it/s, epoch=4/10, avg_epoch_loss=2.56]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.95it/s, epoch=5/10, avg_epoch_loss=2.47]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.94it/s, epoch=6/10, avg_epoch_loss=2.37]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 12.15it/s, epoch=7/10, avg_epoch_loss=2.25]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.84it/s, epoch=8/10, avg_epoch_loss=2.11]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.82it/s, epoch=9/10, avg_epoch_loss=1.94]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.85it/s, epoch=10/10, avg_epoch_loss=1.78]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.67it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.94it/s, epoch=1/10, avg_epoch_loss=3.86]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.73it/s, epoch=2/10, avg_epoch_loss=3.64]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.33it/s, epoch=3/10, avg_epoch_loss=3.44]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.55it/s, epoch=4/10, avg_epoch_loss=3.26]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.67it/s, epoch=5/10, avg_epoch_loss=3.09]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.58it/s, epoch=6/10, avg_epoch_loss=2.94]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.30it/s, epoch=7/10, avg_epoch_loss=2.81]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.14it/s, epoch=8/10, avg_epoch_loss=2.7]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.30it/s, epoch=9/10, avg_epoch_loss=2.6]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.26it/s, epoch=10/10, avg_epoch_loss=2.48]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 8.18it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:01<00:00, 10.11it/s, epoch=1/10, avg_epoch_loss=2.43]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.26it/s, epoch=2/10, avg_epoch_loss=1.12]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.86it/s, epoch=3/10, avg_epoch_loss=0.336]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.07it/s, epoch=4/10, avg_epoch_loss=0.073]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.36it/s, epoch=5/10, avg_epoch_loss=0.0214]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.52it/s, epoch=6/10, avg_epoch_loss=0.283]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.47it/s, epoch=7/10, avg_epoch_loss=-.103]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.47it/s, epoch=8/10, avg_epoch_loss=-.311]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.41it/s, epoch=9/10, avg_epoch_loss=-.341]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.76it/s, epoch=10/10, avg_epoch_loss=-.384]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.84it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.67it/s, epoch=1/10, avg_epoch_loss=2.9]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.85it/s, epoch=2/10, avg_epoch_loss=1.38]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.31it/s, epoch=3/10, avg_epoch_loss=0.326]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.91it/s, epoch=4/10, avg_epoch_loss=0.166]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.08it/s, epoch=5/10, avg_epoch_loss=-.00566]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.67it/s, epoch=6/10, avg_epoch_loss=0.0119]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.50it/s, epoch=7/10, avg_epoch_loss=-.0567]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.27it/s, epoch=8/10, avg_epoch_loss=0.13]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.42it/s, epoch=9/10, avg_epoch_loss=-.108]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.27it/s, epoch=10/10, avg_epoch_loss=-.00739]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.98it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:01<00:00, 10.07it/s, epoch=1/10, avg_epoch_loss=3.54]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.61it/s, epoch=2/10, avg_epoch_loss=3.27]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.43it/s, epoch=3/10, avg_epoch_loss=2.98]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.34it/s, epoch=4/10, avg_epoch_loss=2.72]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.37it/s, epoch=5/10, avg_epoch_loss=2.49]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.27it/s, epoch=6/10, avg_epoch_loss=2.23]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.57it/s, epoch=7/10, avg_epoch_loss=1.87]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.04it/s, epoch=8/10, avg_epoch_loss=1.32]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.79it/s, epoch=9/10, avg_epoch_loss=0.692]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.60it/s, epoch=10/10, avg_epoch_loss=0.348]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.43it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.27it/s, epoch=1/10, avg_epoch_loss=3.6]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.47it/s, epoch=2/10, avg_epoch_loss=3.33]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.13it/s, epoch=3/10, avg_epoch_loss=3.11]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.49it/s, epoch=4/10, avg_epoch_loss=2.92]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.70it/s, epoch=5/10, avg_epoch_loss=2.71]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.70it/s, epoch=6/10, avg_epoch_loss=2.45]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.25it/s, epoch=7/10, avg_epoch_loss=2.07]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.13it/s, epoch=8/10, avg_epoch_loss=1.5]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.16it/s, epoch=9/10, avg_epoch_loss=0.734]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.25it/s, epoch=10/10, avg_epoch_loss=0.295]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.56it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.79it/s, epoch=1/5, avg_epoch_loss=3.44]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.98it/s, epoch=2/5, avg_epoch_loss=2.74]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.47it/s, epoch=3/5, avg_epoch_loss=2.11]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.87it/s, epoch=4/5, avg_epoch_loss=1.2]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.57it/s, epoch=5/5, avg_epoch_loss=0.448]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:13<00:00, 13.82s/it]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 6.79it/s, epoch=1/5, avg_epoch_loss=2.81]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.50it/s, epoch=2/5, avg_epoch_loss=2.01]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 7.97it/s, epoch=3/5, avg_epoch_loss=1.04]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.41it/s, epoch=4/5, avg_epoch_loss=0.663]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.07it/s, epoch=5/5, avg_epoch_loss=0.464]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.91it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.11it/s, epoch=1/5, avg_epoch_loss=3.33]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.24it/s, epoch=2/5, avg_epoch_loss=3.19]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.33it/s, epoch=3/5, avg_epoch_loss=3.08]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.30it/s, epoch=4/5, avg_epoch_loss=2.98]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.01it/s, epoch=5/5, avg_epoch_loss=2.88]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 8.07it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.80it/s, epoch=1/5, avg_epoch_loss=4.36]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.54it/s, epoch=2/5, avg_epoch_loss=4.14]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.27it/s, epoch=3/5, avg_epoch_loss=3.93]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.04it/s, epoch=4/5, avg_epoch_loss=3.74]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.81it/s, epoch=5/5, avg_epoch_loss=3.55]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.68it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.45it/s, epoch=1/5, avg_epoch_loss=2.38]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.70it/s, epoch=2/5, avg_epoch_loss=0.725]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.79it/s, epoch=3/5, avg_epoch_loss=0.287]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.35it/s, epoch=4/5, avg_epoch_loss=0.256]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.06it/s, epoch=5/5, avg_epoch_loss=0.142]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.63it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.05it/s, epoch=1/5, avg_epoch_loss=2.88]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.22it/s, epoch=2/5, avg_epoch_loss=1.39]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 10.00it/s, epoch=3/5, avg_epoch_loss=0.483]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.94it/s, epoch=4/5, avg_epoch_loss=0.187]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.04it/s, epoch=5/5, avg_epoch_loss=0.00529]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.81it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.68it/s, epoch=1/5, avg_epoch_loss=3.31]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.47it/s, epoch=2/5, avg_epoch_loss=3.05]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.69it/s, epoch=3/5, avg_epoch_loss=2.83]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.96it/s, epoch=4/5, avg_epoch_loss=2.63]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.75it/s, epoch=5/5, avg_epoch_loss=2.36]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.70it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.14it/s, epoch=1/5, avg_epoch_loss=3.64]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.21it/s, epoch=2/5, avg_epoch_loss=3.24]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.05it/s, epoch=3/5, avg_epoch_loss=2.84]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.22it/s, epoch=4/5, avg_epoch_loss=2.46]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.14it/s, epoch=5/5, avg_epoch_loss=2.21]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.13it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.65it/s, epoch=1/10, avg_epoch_loss=3.09]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.23it/s, epoch=2/10, avg_epoch_loss=2.37]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.77it/s, epoch=3/10, avg_epoch_loss=1.5]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.92it/s, epoch=4/10, avg_epoch_loss=0.852]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.57it/s, epoch=5/10, avg_epoch_loss=0.489]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.88it/s, epoch=6/10, avg_epoch_loss=0.392]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.23it/s, epoch=7/10, avg_epoch_loss=0.173]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.32it/s, epoch=8/10, avg_epoch_loss=0.344]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.96it/s, epoch=9/10, avg_epoch_loss=0.277]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.23it/s, epoch=10/10, avg_epoch_loss=0.131]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.18it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.93it/s, epoch=1/10, avg_epoch_loss=3.09]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.57it/s, epoch=2/10, avg_epoch_loss=2.53]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 10.00it/s, epoch=3/10, avg_epoch_loss=1.96]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.51it/s, epoch=4/10, avg_epoch_loss=1.09]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.71it/s, epoch=5/10, avg_epoch_loss=0.441]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.04it/s, epoch=6/10, avg_epoch_loss=0.347]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.10it/s, epoch=7/10, avg_epoch_loss=0.197]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.20it/s, epoch=8/10, avg_epoch_loss=0.066]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.11it/s, epoch=9/10, avg_epoch_loss=0.0626]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.13it/s, epoch=10/10, avg_epoch_loss=0.167]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.25it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.90it/s, epoch=1/10, avg_epoch_loss=3.3]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.81it/s, epoch=2/10, avg_epoch_loss=3.12]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.10it/s, epoch=3/10, avg_epoch_loss=2.97]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.11it/s, epoch=4/10, avg_epoch_loss=2.84]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.45it/s, epoch=5/10, avg_epoch_loss=2.73]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.50it/s, epoch=6/10, avg_epoch_loss=2.64]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.39it/s, epoch=7/10, avg_epoch_loss=2.56]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.21it/s, epoch=8/10, avg_epoch_loss=2.46]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.60it/s, epoch=9/10, avg_epoch_loss=2.35]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.94it/s, epoch=10/10, avg_epoch_loss=2.22]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.67it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 6.41it/s, epoch=1/10, avg_epoch_loss=3.39]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.59it/s, epoch=2/10, avg_epoch_loss=3.16]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.30it/s, epoch=3/10, avg_epoch_loss=2.96]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.04it/s, epoch=4/10, avg_epoch_loss=2.78]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.26it/s, epoch=5/10, avg_epoch_loss=2.65]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.75it/s, epoch=6/10, avg_epoch_loss=2.53]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.07it/s, epoch=7/10, avg_epoch_loss=2.45]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.35it/s, epoch=8/10, avg_epoch_loss=2.35]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.17it/s, epoch=9/10, avg_epoch_loss=2.25]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.28it/s, epoch=10/10, avg_epoch_loss=2.13]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.16it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:01<00:00, 10.45it/s, epoch=1/10, avg_epoch_loss=2.89]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.98it/s, epoch=2/10, avg_epoch_loss=1.5]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.73it/s, epoch=3/10, avg_epoch_loss=0.473]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.87it/s, epoch=4/10, avg_epoch_loss=0.297]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.86it/s, epoch=5/10, avg_epoch_loss=0.086]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.84it/s, epoch=6/10, avg_epoch_loss=0.0551]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 12.12it/s, epoch=7/10, avg_epoch_loss=-.0448]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.69it/s, epoch=8/10, avg_epoch_loss=-.0296]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.82it/s, epoch=9/10, avg_epoch_loss=-.062]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.45it/s, epoch=10/10, avg_epoch_loss=-.132]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.14it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.69it/s, epoch=1/10, avg_epoch_loss=2.68]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.17it/s, epoch=2/10, avg_epoch_loss=0.825]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.62it/s, epoch=3/10, avg_epoch_loss=0.385]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.58it/s, epoch=4/10, avg_epoch_loss=0.199]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.70it/s, epoch=5/10, avg_epoch_loss=-.0685]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.35it/s, epoch=6/10, avg_epoch_loss=-.142]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.37it/s, epoch=7/10, avg_epoch_loss=-.269]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.27it/s, epoch=8/10, avg_epoch_loss=-.15]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.49it/s, epoch=9/10, avg_epoch_loss=0.00324]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.28it/s, epoch=10/10, avg_epoch_loss=-.265]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.94it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:01<00:00, 10.17it/s, epoch=1/10, avg_epoch_loss=3.34]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.61it/s, epoch=2/10, avg_epoch_loss=2.97]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.35it/s, epoch=3/10, avg_epoch_loss=2.65]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.46it/s, epoch=4/10, avg_epoch_loss=2.43]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.21it/s, epoch=5/10, avg_epoch_loss=2.18]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.36it/s, epoch=6/10, avg_epoch_loss=1.86]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.37it/s, epoch=7/10, avg_epoch_loss=1.46]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.12it/s, epoch=8/10, avg_epoch_loss=0.955]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.17it/s, epoch=9/10, avg_epoch_loss=0.484]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.58it/s, epoch=10/10, avg_epoch_loss=0.304]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.66it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.99it/s, epoch=1/10, avg_epoch_loss=3.97]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.11it/s, epoch=2/10, avg_epoch_loss=3.63]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.15it/s, epoch=3/10, avg_epoch_loss=3.38]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.35it/s, epoch=4/10, avg_epoch_loss=3.15]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.25it/s, epoch=5/10, avg_epoch_loss=2.93]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.30it/s, epoch=6/10, avg_epoch_loss=2.69]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.15it/s, epoch=7/10, avg_epoch_loss=2.42]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.09it/s, epoch=8/10, avg_epoch_loss=2.03]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.28it/s, epoch=9/10, avg_epoch_loss=1.5]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.35it/s, epoch=10/10, avg_epoch_loss=0.784]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.69it/s]\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " MSE abs_error abs_target_sum abs_target_mean seasonal_error \\\n",
+ "0 0.026899 2.397813 134.142426 6.387735 0.036878 \n",
+ "1 0.049821 4.092772 134.142426 6.387735 0.036878 \n",
+ "2 4.069673 33.743214 134.142426 6.387735 0.036878 \n",
+ "3 8.224060 27.871288 134.142426 6.387735 0.036878 \n",
+ "4 0.040288 3.925679 134.142426 6.387735 0.036878 \n",
+ "5 0.011509 1.671842 134.142426 6.387735 0.036878 \n",
+ "6 7.952866 53.838654 134.142426 6.387735 0.036878 \n",
+ "7 0.729253 10.792194 134.142426 6.387735 0.036878 \n",
+ "8 0.014860 2.167851 134.142426 6.387735 0.036878 \n",
+ "9 0.025239 2.633072 134.142426 6.387735 0.036878 \n",
+ "10 0.434753 8.159090 134.142426 6.387735 0.036878 \n",
+ "11 1.206231 18.100065 134.142426 6.387735 0.036878 \n",
+ "12 0.008423 1.878267 134.142426 6.387735 0.036878 \n",
+ "13 0.024485 2.537538 134.142426 6.387735 0.036878 \n",
+ "14 0.030586 3.203564 134.142426 6.387735 0.036878 \n",
+ "15 0.101327 4.386444 134.142426 6.387735 0.036878 \n",
+ "16 0.030801 2.639282 134.142426 6.387735 0.036878 \n",
+ "17 0.031420 2.743434 134.142426 6.387735 0.036878 \n",
+ "18 7.026206 43.340939 134.142426 6.387735 0.036878 \n",
+ "19 15.217635 81.156578 134.142426 6.387735 0.036878 \n",
+ "20 0.020197 2.171837 134.142426 6.387735 0.036878 \n",
+ "21 0.038291 3.172178 134.142426 6.387735 0.036878 \n",
+ "22 1.367421 11.488754 134.142426 6.387735 0.036878 \n",
+ "23 0.735144 18.881205 134.142426 6.387735 0.036878 \n",
+ "24 0.017177 2.420433 134.142426 6.387735 0.036878 \n",
+ "25 0.101187 6.525856 134.142426 6.387735 0.036878 \n",
+ "26 3.760458 31.362814 134.142426 6.387735 0.036878 \n",
+ "27 0.905433 10.961872 134.142426 6.387735 0.036878 \n",
+ "28 0.015290 2.132457 134.142426 6.387735 0.036878 \n",
+ "29 0.009222 1.541191 134.142426 6.387735 0.036878 \n",
+ "30 0.138464 6.838367 134.142426 6.387735 0.036878 \n",
+ "31 0.045096 3.577421 134.142426 6.387735 0.036878 \n",
+ "\n",
+ " MASE MAPE sMAPE OWA MSIS ... wQuantileLoss[0.5] \\\n",
+ "0 3.096178 0.017658 0.017858 NaN 42.599279 ... 0.017875 \n",
+ "1 5.284796 0.030831 0.030304 NaN 34.898750 ... 0.030511 \n",
+ "2 43.570959 0.251263 0.238998 NaN 1145.304885 ... 0.251548 \n",
+ "3 35.988829 0.207997 0.241253 NaN 1049.503266 ... 0.207774 \n",
+ "4 5.069037 0.029673 0.029083 NaN 25.342889 ... 0.029265 \n",
+ "5 2.158767 0.012506 0.012462 NaN 19.834589 ... 0.012463 \n",
+ "6 69.519216 0.401942 0.316780 NaN 1210.943531 ... 0.401354 \n",
+ "7 13.935432 0.080540 0.080977 NaN 438.256770 ... 0.080453 \n",
+ "8 2.799240 0.016068 0.016117 NaN 27.453354 ... 0.016161 \n",
+ "9 3.399957 0.019797 0.019608 NaN 24.659764 ... 0.019629 \n",
+ "10 10.535433 0.060805 0.061289 NaN 324.075965 ... 0.060824 \n",
+ "11 23.371727 0.134821 0.137553 NaN 632.617827 ... 0.134932 \n",
+ "12 2.425314 0.014125 0.014005 NaN 13.080941 ... 0.014002 \n",
+ "13 3.276598 0.018864 0.018916 NaN 29.805514 ... 0.018917 \n",
+ "14 4.136605 0.024141 0.023806 NaN 29.954845 ... 0.023882 \n",
+ "15 5.664000 0.033208 0.032385 NaN 76.076483 ... 0.032700 \n",
+ "16 3.407976 0.019665 0.019655 NaN 35.278396 ... 0.019675 \n",
+ "17 3.542462 0.020338 0.020451 NaN 38.765422 ... 0.020452 \n",
+ "18 55.964030 0.322826 0.269972 NaN 908.948892 ... 0.323096 \n",
+ "19 104.793513 0.606768 0.976067 NaN 1511.272326 ... 0.605003 \n",
+ "20 2.804387 0.016286 0.016194 NaN 24.785705 ... 0.016191 \n",
+ "21 4.096078 0.023910 0.023554 NaN 33.542780 ... 0.023648 \n",
+ "22 14.834865 0.086130 0.084330 NaN 513.108583 ... 0.085646 \n",
+ "23 24.380374 0.141633 0.131864 NaN 608.925452 ... 0.140755 \n",
+ "24 3.125387 0.018286 0.018064 NaN 30.334958 ... 0.018044 \n",
+ "25 8.426518 0.049185 0.047703 NaN 35.301399 ... 0.048649 \n",
+ "26 40.497265 0.233942 0.204442 NaN 556.716873 ... 0.233802 \n",
+ "27 14.154528 0.081867 0.081228 NaN 511.951430 ... 0.081718 \n",
+ "28 2.753537 0.016032 0.015907 NaN 23.542589 ... 0.015897 \n",
+ "29 1.990065 0.011587 0.011494 NaN 19.829225 ... 0.011489 \n",
+ "30 8.830048 0.051611 0.049868 NaN 102.636663 ... 0.050978 \n",
+ "31 4.619349 0.026408 0.026784 NaN 39.263923 ... 0.026669 \n",
+ "\n",
+ " wQuantileLoss[0.9] mean_absolute_QuantileLoss mean_wQuantileLoss \\\n",
+ "0 0.007101 1.632354 0.012169 \n",
+ "1 0.012383 2.369283 0.017662 \n",
+ "2 0.309128 36.800291 0.274337 \n",
+ "3 0.157397 31.151284 0.232225 \n",
+ "4 0.011700 2.248848 0.016765 \n",
+ "5 0.008177 1.164833 0.008684 \n",
+ "6 0.290684 38.885850 0.289885 \n",
+ "7 0.100536 13.460071 0.100342 \n",
+ "8 0.007236 1.448446 0.010798 \n",
+ "9 0.008798 1.655149 0.012339 \n",
+ "10 0.070685 9.071054 0.067623 \n",
+ "11 0.161359 20.516419 0.152945 \n",
+ "12 0.006063 1.020151 0.007605 \n",
+ "13 0.011130 1.761987 0.013135 \n",
+ "14 0.011215 1.923794 0.014341 \n",
+ "15 0.013453 2.885338 0.021510 \n",
+ "16 0.010990 1.828134 0.013628 \n",
+ "17 0.013372 2.101308 0.015665 \n",
+ "18 0.304799 34.441461 0.256753 \n",
+ "19 0.199697 55.808523 0.416039 \n",
+ "20 0.008685 1.458518 0.010873 \n",
+ "21 0.009788 2.087325 0.015561 \n",
+ "22 0.098009 13.120572 0.097811 \n",
+ "23 0.156914 18.074777 0.134743 \n",
+ "24 0.011047 1.554889 0.011591 \n",
+ "25 0.015958 3.819437 0.028473 \n",
+ "26 0.179222 23.145745 0.172546 \n",
+ "27 0.114346 13.403531 0.099920 \n",
+ "28 0.006425 1.296319 0.009664 \n",
+ "29 0.007001 1.088829 0.008117 \n",
+ "30 0.014953 5.099846 0.038018 \n",
+ "31 0.013542 2.402735 0.017912 \n",
+ "\n",
+ " MAE_Coverage epochs learning_rate num_batches_per_epoch \\\n",
+ "0 0.150794 5 0.0010 10 \n",
+ "1 0.103175 5 0.0010 10 \n",
+ "2 0.074603 5 0.0001 10 \n",
+ "3 0.185714 5 0.0001 10 \n",
+ "4 0.230159 5 0.0010 20 \n",
+ "5 0.058730 5 0.0010 20 \n",
+ "6 0.169841 5 0.0001 20 \n",
+ "7 0.090476 5 0.0001 20 \n",
+ "8 0.106349 10 0.0010 10 \n",
+ "9 0.087302 10 0.0010 10 \n",
+ "10 0.106349 10 0.0001 10 \n",
+ "11 0.090476 10 0.0001 10 \n",
+ "12 0.230159 10 0.0010 20 \n",
+ "13 0.084127 10 0.0010 20 \n",
+ "14 0.138095 10 0.0001 20 \n",
+ "15 0.246032 10 0.0001 20 \n",
+ "16 0.039683 5 0.0010 10 \n",
+ "17 0.055556 5 0.0010 10 \n",
+ "18 0.185714 5 0.0001 10 \n",
+ "19 0.233333 5 0.0001 10 \n",
+ "20 0.042857 5 0.0010 20 \n",
+ "21 0.103175 5 0.0010 20 \n",
+ "22 0.106349 5 0.0001 20 \n",
+ "23 0.122222 5 0.0001 20 \n",
+ "24 0.122222 10 0.0010 10 \n",
+ "25 0.357143 10 0.0010 10 \n",
+ "26 0.217460 10 0.0001 10 \n",
+ "27 0.074603 10 0.0001 10 \n",
+ "28 0.134921 10 0.0010 20 \n",
+ "29 0.138095 10 0.0010 20 \n",
+ "30 0.436508 10 0.0001 20 \n",
+ "31 0.198413 10 0.0001 20 \n",
+ "\n",
+ " context_length forecast \n",
+ "0 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "1 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "2 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "3 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "4 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "5 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "6 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "7 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "8 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "9 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "10 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "11 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "12 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "13 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "14 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "15 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "16 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "17 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "18 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "19 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "20 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "21 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "22 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "23 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "24 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "25 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "26 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "27 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "28 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "29 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "30 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "31 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "\n",
+ "[32 rows x 30 columns]\n"
+ ]
+ }
+ ],
+ "source": [
+ "all_params = [dict(zip(param_grid.keys(), v)) for v in itertools.product(*param_grid.values())]\n",
+ "agg_metrics_all=list()\n",
+ "item_metrics_all=list()\n",
+ "for params in all_params:\n",
+ " estimator = DeepAREstimator(\n",
+ " #num_hidden_dimensions=[params['num_hidden_dimensions']],\n",
+ " prediction_length=prediction_length,\n",
+ " context_length=params['context_length'],\n",
+ " freq=freq,\n",
+ " trainer=Trainer(ctx=\"cpu\",\n",
+ " epochs=params['epochs'],\n",
+ " learning_rate=params['learning_rate'],\n",
+ " num_batches_per_epoch=params['num_batches_per_epoch']\n",
+ " )\n",
+ " )\n",
+ " predictor = estimator.train(training_data = train_ds)\n",
+ " forecast_it, ts_it = make_evaluation_predictions(\n",
+ " dataset=validation_ds, # test dataset\n",
+ " predictor=predictor, # predictor\n",
+ " num_samples=20, # number of sample paths we want for evaluation\n",
+ " )\n",
+ " forecasts = list(forecast_it)\n",
+ " #print(forecasts)\n",
+ " tss = list(ts_it)\n",
+ " evaluator = Evaluator(quantiles=[0.1, 0.5, 0.9])\n",
+ " agg_metrics, item_metrics = evaluator(iter(tss), iter(forecasts), num_series=len(test_ds))\n",
+ " #agg_metrics['num_hidden_dimensions'] = params['num_hidden_dimensions']\n",
+ " agg_metrics['epochs'] = params['epochs']\n",
+ " agg_metrics['learning_rate'] = params['learning_rate']\n",
+ " agg_metrics['num_batches_per_epoch'] = params['num_batches_per_epoch']\n",
+ " agg_metrics['context_length'] = params['context_length']\n",
+ " agg_metrics['forecast'] = forecasts\n",
+ " agg_metrics_all.append(agg_metrics)\n",
+ " item_metrics_all.append(item_metrics)\n",
+ " \n",
+ "dataframe = pd.DataFrame(agg_metrics_all)\n",
+ "print(dataframe)\n",
+ "sorted1 = dataframe.sort_values(by=['MAPE'])\n",
+ "sorted1 = sorted1.reset_index(drop=True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "shared-compression",
+ "metadata": {},
+ "source": [
+ "# Forecast and Evaluation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "usual-century",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "estimator = DeepAREstimator(\n",
+ " #num_hidden_dimensions=[sorted1['num_hidden_dimensions'][0]],\n",
+ " prediction_length=prediction_length,\n",
+ " context_length=sorted1['context_length'][0],\n",
+ " freq=freq,\n",
+ " trainer=Trainer(ctx=\"cpu\",\n",
+ " epochs=sorted1['epochs'][0],\n",
+ " learning_rate=sorted1['learning_rate'][0],\n",
+ " num_batches_per_epoch=sorted1['num_batches_per_epoch'][0]\n",
+ " )\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "progressive-stationery",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.71it/s, epoch=1/10, avg_epoch_loss=3.01]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.98it/s, epoch=2/10, avg_epoch_loss=1.34]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.28it/s, epoch=3/10, avg_epoch_loss=0.563]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.81it/s, epoch=4/10, avg_epoch_loss=0.269]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.86it/s, epoch=5/10, avg_epoch_loss=0.0896]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.03it/s, epoch=6/10, avg_epoch_loss=-.0415]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.20it/s, epoch=7/10, avg_epoch_loss=-.0295]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.95it/s, epoch=8/10, avg_epoch_loss=0.0615]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.02it/s, epoch=9/10, avg_epoch_loss=-.176]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.76it/s, epoch=10/10, avg_epoch_loss=0.064]\n"
+ ]
+ }
+ ],
+ "source": [
+ "predictor = estimator.train(train_ds)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "pediatric-ancient",
+ "metadata": {},
+ "source": [
+ "# Save the Model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "abandoned-forge",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING:root:Serializing RepresentableBlockPredictor instances does not save the prediction network structure in a backwards-compatible manner. Be careful not to use this method in production.\n"
+ ]
+ }
+ ],
+ "source": [
+ "from pathlib import Path\n",
+ "predictor.serialize(Path(\"Models/Log\"))\n",
+ "\n",
+ "# loads it back\n",
+ "# from gluonts.model.predictor import Predictor\n",
+ "# predictor_deserialized = Predictor.deserialize(Path(\"Models/CubeRoot\"))\n",
+ "# print(predictor_deserialized)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "connected-snake",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "forecast_it, ts_it = make_evaluation_predictions(\n",
+ " dataset=test_ds, # test dataset\n",
+ " predictor=predictor, # predictor\n",
+ " num_samples=100, # number of sample paths we want for evaluation\n",
+ ")\n",
+ "\n",
+ "forecasts = list(forecast_it)\n",
+ "tss = list(ts_it)\n",
+ "ts_entry = tss[0]\n",
+ "forecast_entry = forecasts[0]\n",
+ "\n",
+ "forecasts_val=sorted1['forecast'][0]\n",
+ "forecast_entry_val = forecasts_val[0]\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "amino-desperate",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#return forecast to original\n",
+ "inv = np.vectorize(log_inverse_transformation)\n",
+ "\n",
+ "forecast_entry.samples = inv(forecast_entry.samples)\n",
+ "forecast_entry_inv=SampleForecast(freq=freq, start_date=forecast_entry.start_date, samples=forecast_entry.samples)\n",
+ "\n",
+ "forecast_entry_val.samples = inv(forecast_entry_val.samples)\n",
+ "forecast_entry_val_inv=SampleForecast(freq=freq, start_date=forecast_entry_val.start_date, samples=forecast_entry_val.samples)\n",
+ "\n",
+ "ts_entry_inv=inv(ts_entry)\n",
+ "ts_entry_inv_df=pd.DataFrame(ts_entry_inv, index=ts_entry.index)\n",
+ "tss_inv=list()\n",
+ "tss_inv.append(ts_entry_inv_df)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "muslim-medicaid",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAAGYCAYAAACXjTyPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABoAUlEQVR4nO3dd3jb1cH28e/R9J5xpjMhe08ChEwgacsKpIwCSUqBwlM6nrZQWkoJtFCevm0pDTNsKJRQyipQNiaskJAQAmSTOHt6b8vSef+QLOLYWbZkWc79uS5fsX5LRzq2deec8zvHWGsRERERkehxxLoAIiIiIu2dApeIiIhIlClwiYiIiESZApeIiIhIlClwiYiIiESZK9YFOJQOHTrYXr16RfSaFRUVJCcnR/SaEn2qt/ijOotPqrf4ozprO5YtW7bPWpvT1L42Hbh69erFp59+GtFr5uXlMXny5IheU6JP9RZ/VGfxSfUWf1RnbYcxZvPB9qlLUURERCTKFLhEREREokyBS0RERCTK2vQYrqb4fD62bdtGdXV1s85PT09n9erVES6VRFtbqreEhARyc3Nxu92xLoqIiMSJuAtc27ZtIzU1lV69emGMOerzy8rKSE1NjULJJJraSr1ZaykoKGDbtm307t071sUREZE4EXdditXV1WRnZzcrbIm0lDGG7OzsZrewiojIsSnuAhegsCUxpZ8/ERE5WnEZuERERETiiQJXhOTn5zNkyJBYF4MVK1bw6quvhh+/9NJL3H777TEskYiIiChwtWF1dXVHfc6Bgeuss87i+uuvj2SxRERE5CgpcDXTX//6V4YMGcKQIUP429/+BgQD0sUXX8zAgQOZNWsWlZWVAFx//fUMGjSIYcOG8ctf/hKAvXv3ct555zF27FjGjh3Lhx9+CMC8efO49NJLOfnkk7n00ksZP348X331Vfh5J0+ezKeffsqSJUs48cQTGTlyJCeddBJr166ltraW3/3udyxcuJARI0awcOFCHn30Ua655hog2Ao3depUhg0bxrRp09iyZQsAc+fO5Sc/+QknnXQSffr04dlnnwVg586dTJw4kREjRjBkyBDef//9VnlvRURE2pu4mxZifzf/5ytW7Sg9qnP8fj9Op/Og+wd1TeOmMwcf8hrLli3jkUce4ZNPPsFaywknnMCkSZNYu3YtDz30ECeffDKXXXYZ99xzD9///vd5/vnnWbNmDcYYiouLAfjpT3/K//7v/zJhwgS2bNnC9OnTw/NMrVq1ig8++IDExETuuOMOnnnmGW6++WZ27tzJzp07GTNmDKWlpbz//vu4XC7eeustfvOb3/Dvf/+bW265hU8//ZS77roLgEcffTRc7h//+MfMmTOHOXPm8PDDD/OTn/yEF154AQiGqw8++IA1a9Zw1llnMWvWLJ566immT5/ODTfcgN/vDwdIEREROTpxHbhi5YMPPmDmzJnh1dnPPfdc3n//fbp3787JJ58MwCWXXMLf//53fvazn5GQkMAPfvADzjjjDM444wwA3nrrLVatWhW+ZmlpKeXl5UCwGzAxMRGA888/n9NPP52bb76ZZ555hlmzZgFQUlLCnDlzWL9+PcYYfD7fYcv98ccf89xzzwFw6aWXct1114X3nXPOOTgcDgYNGsTu3bsBGDt2LJdddhk+n49zzjmHESNGtORtExEROWbFdeA6XEtUU6I5geaB0wUYY4ItUO99yHMvv8aTzzzPn/76Nx7918v4/QEWL15MQkJCo+vUBzmAbt26kZ2dzcqVK1m4cCH33XcfADfeeCNTpkzh+eefJz8/v8UrxXu93vD31loAJk6cyKJFi3jllVeYO3cuP//5z5k9e3aLnkdERORYpDFczXDKKafwwgsvUFlZSUVFBc8//zynnHIKW7Zs4eOPPwbgqaeeYsKECZSXl7NzbwEnTT6NW27/E2tXfYU/YJkweSrz588PX3PFihUHfb4LLriAP/3pT5SUlDBs2DAg2MLVrVs3oGG3YWpqKmVlZU1e56STTuLpp58G4Mknn+SUU0455OvcvHkznTp14oorruDyyy9n+fLlh31vREREpDEFrmYYNWoUc+fOZdy4cZxwwglcfvnlZGZm0r9/f+6++24GDhxIUVERV199NWVlZcy+8DxmnX4yF555On+746+4XQ7m/fH/8emnnzJs2DAGDRoUbrlqyqxZs3j66ac5//zzw9uuu+46fv3rXzNy5MgGdzNOmTKFVatWhQfN72/+/Pk88sgjDBs2jCeeeII777zzkK8zLy+P4cOHM3LkSBYuXMhPf/rTZr5jIiIixzZT333UFo0ZM8Z++umnDbatXr2agQMHNvuasViTb0thJZW1dQzonAbA+t1luJ0OenVIPsyZUq+trKVYr6U/h8eCvLy8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YG666abD1rWIiMjRUOBqBmMMp59+OqNHj2bBggXh7bt376ZLly4AdO7cmb179uBwBCc5rbd9+3a6d++OMRCwkJuby/bt2znttNPIz89n/Pjx/OQnP+Gll15i1KhRdO3a9ZBlWblyJe+88w4ff/wxt9xyCzt27ABg+fLl3Hnnnaxbt46HHnqI9PR0li5dytKlS3nggQfYtGkTzz//PGvXrmXVqlU8/vjjDVqs6u3du5crrriCf//733z++ef861//olevXlx11VX87//+LytWrOCUU05pcM7s2bP5v//7P1auXMnQoUO5+eabw/vq6upYsmQJf/vb3xpsP5gVK1awcOFCFi9ezMKFC9m6dSu33347iYmJrFixgieffJLVq1ezcOFCPvzwQ1asWIHT6eTJJ58EoKKighNOOIHPP/+c66+/nk8++YSKigoAFi5cGF5P8dZbb+XTTz9l5cqVvPfee6xcufKwZRMRETlScTVovq344IMP6NatG3v27OG0005jwIABTJw4scEx9bPJN3WHYv1+Wz8zKuByuXjqqacA8Pl8TJ8+nRdffJGf//znbNmyhdmzZ3PWWWc1us7ZZ59NYmIiiYmJTJkyhSVLlpCRkcG4cePo3bs3AG+88QYrV64Md9WVlJSwfv16Fi1axEUXXYTT6aRr165MnTq10fUXL17MxIkTw9faf93HppSUlFBcXBxesHrOnDkNWpXOPfdcAEaPHk1+fv4hrwXBhanT09MpKytj0KBBbN68me7duzc45u2332bZsmXhhburqqro2LEjEFw78bzzzgOC7/GMGTP4z3/+w6xZs3jllVf405/+BMAzzzzDggULqKurY+fOnaxatYphw4YdtnwiIiJHQoGrGbp16wZAx44dmTlzJkuWLGHixIl06tSJnTt30qVLF3bu3El2h5xGgatbt27k5eUFJz4Ftm3b1mgNrHvuuYfZs2ezePFi0tPTWbhwIVOnTm0ycJkmlg0CSE5ODm+z1jJ//nymT5/e4NhXX321uW9Bs3m9wTUlnU7nEY0vqz/+UOdYa5kzZw5//OMfG+1LSEjA6XSGH1944YXcddddZGVlMWbMGFJTU9m0aRN//vOfWbp0KZmZmcydO5fq6urmvDwREZEmqUvxKFVUVFBWVhb+/o033giPOTrrrLPCdx0+9thjnPqt73DgJPPTp0/njTfeoLS4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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "def plot_prob_forecasts(ts_entry, forecast_entry):\n",
+ " plot_length = len(ts_entry)\n",
+ " prediction_intervals = (50.0,98.0)\n",
+ " legend = [\"observations\", \"median prediction\"] + [f\"{k}% prediction interval\" for k in prediction_intervals][::-1]\n",
+ "\n",
+ " fig, ax = plt.subplots(1, 1, figsize=(10, 7))\n",
+ " ts_entry[-plot_length:].plot(ax=ax) # plot the time series\n",
+ " forecast_entry.plot(prediction_intervals=prediction_intervals, color='g')\n",
+ " plt.grid(which=\"both\")\n",
+ " plt.legend(legend, loc=\"upper left\")\n",
+ " plt.show()\n",
+ "plot_prob_forecasts(gluon_dataset['y'], forecast_entry_inv)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "experimental-jonathan",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.89it/s]\n"
+ ]
+ }
+ ],
+ "source": [
+ "evaluator = Evaluator(quantiles=[0.1, 0.5, 0.9])\n",
+ "agg_metrics, item_metrics = evaluator(iter(tss_inv), iter([forecast_entry_inv]), num_series=len(test_ds))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "otherwise-winner",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'MSE': 28775.041666666668,\n",
+ " 'abs_error': 2826.3955078125,\n",
+ " 'abs_target_sum': 4846.515625,\n",
+ " 'abs_target_mean': 230.78645833333334,\n",
+ " 'seasonal_error': 86.95240499205508,\n",
+ " 'MASE': 1.547861295947862,\n",
+ " 'MAPE': 23.938071251136698,\n",
+ " 'sMAPE': 0.6052190021513292,\n",
+ " 'OWA': nan,\n",
+ " 'MSIS': 25.965856988129495,\n",
+ " 'QuantileLoss[0.1]': 2810.276113891602,\n",
+ " 'Coverage[0.1]': 0.6190476190476191,\n",
+ " 'QuantileLoss[0.5]': 2826.395523071289,\n",
+ " 'Coverage[0.5]': 1.0,\n",
+ " 'QuantileLoss[0.9]': 925.3613464355468,\n",
+ " 'Coverage[0.9]': 1.0,\n",
+ " 'RMSE': 169.6320773517399,\n",
+ " 'NRMSE': 0.735017464095463,\n",
+ " 'ND': 0.583180933789417,\n",
+ " 'wQuantileLoss[0.1]': 0.5798549579403455,\n",
+ " 'wQuantileLoss[0.5]': 0.583180936937821,\n",
+ " 'wQuantileLoss[0.9]': 0.1909333257200727,\n",
+ " 'mean_absolute_QuantileLoss': 2187.3443277994793,\n",
+ " 'mean_wQuantileLoss': 0.4513230735327464,\n",
+ " 'MAE_Coverage': 0.373015873015873}"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "agg_metrics"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "premier-healthcare",
+ "metadata": {},
+ "source": [
+ "# Residual"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "hydraulic-religion",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#get the mean for all the samples\n",
+ "f1 = forecast_entry_val_inv.samples.mean(axis=0)\n",
+ "f2 = forecast_entry_inv.samples.mean(axis=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "assisted-fault",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "original_values=list(gluon_dataset['y'])\n",
+ "orig_test = original_values[:len(original_values)-prediction_length]\n",
+ "test_extract=original_values[-prediction_length:]\n",
+ "val_extract=orig_test[-prediction_length:]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "id": "assured-siemens",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "valandtest_orig=list()\n",
+ "valandtest_pred=list()\n",
+ "for a1 in val_extract:\n",
+ " valandtest_orig.append(a1)\n",
+ "\n",
+ "for b1 in test_extract:\n",
+ " valandtest_orig.append(b1)\n",
+ " \n",
+ "for a2 in f1:\n",
+ " valandtest_pred.append(a2)\n",
+ "\n",
+ "for b2 in f2:\n",
+ " valandtest_pred.append(b2)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 29,
+ "id": "decimal-viewer",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'Residuals')"
+ ]
+ },
+ "execution_count": 29,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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GFZvWR10CCIiMWXxYvjyS7j3XjjkkKCjSWwqjxQRERERkVx75x2b05acHHQkiU9Jm4iIiIiI5MquXfD223D++VCnTtDRJD4lbSIiIiIikitffglLl6rNf0FR0iYiIiIiIrnSpw/UrAlt2wYdSeGgpE1ERERERMI2bx6MHm1z2YqprWGBUNImIiIiIiJh69sXihaFzp2DjqTwUNImIiIiIiJh2bYN3nsPLr8cqlcPOprCQ0mbiIiIiIiE5fPPYc0aNSApaEraREREREQkLG++CXXrQqtWQUdSuGjqoIiISBg+aPdB0CGIiATq119hwgR48UUooqGfAqWkTUREJAz1q9QPOgQRkUD16QOHHAKdOgUdSeGjHFlERERERA5o0yb44AO46iqoVCnoaAofJW0iIiIiInJAH34IGzfC7bcHHUnhpKRNRERERET2y3trQNKgAZxxRtDRFE6a0yYiIhKGpL5JWbdTk1MDjEREpGBNnQozZlji5lzQ0RROGmkTEREREZH9evNNKFMGrrsu6EgKLyVtIiIiIiKSo3/+gU8+geuvh7Jlg46m8FLSJiIiIiIiOerfH7Ztg9tuCzqSwk1Jm4iIiIiI7MN7W5utaVNrQiLBUSMSERERERHZx/ffQ1oaDBgQdCSikTYREREREdlHnz5QsSJceWXQkYiSNhERERER2cOyZTB0KPzrX1CyZNDRiJI2ERERERHZw3vvwa5d0KVL0JEIKGkTEREREZFs0tOhb18491yoWzfoaASUtImIiIiISDZffw1//w233x50JBKi7pEiIiJh+Pq6r4MOQUSkQLz5JlSrBpdcEnQkEqKkTUREJAxVDq0SdAgiIlG3YIGNtD36KBQvHnQ0EqLySBERERERAaB/f7vu3DnYOGRPStpERERERISMDEvazj0Xjjoq6GgkOyVtIiIiYVi1eVXWRUQkEf34I/z1F3TqFHQksjfNaRMREQnDhYMuzLqdmpwaYCQiItHRrx+UKweXXx50JLI3jbSJiIiIiBRymzbBZ5/B1VdD6dJBRyN7U9ImIiIiIlLIff45bN6s0shYddCkzTl3pHPue+fc786535xz3TPvf8I5t8Q5NyPzclG21zzonJvnnJvrnDs/mm9ARERERETyp18/qFsXmjYNOhLJSThz2nYB//HeT3fOlQWmOee+zXysl/f+xexPds6dAHQETgSqA985547z3qdHMnAREREREcm/v/6CsWPh6afBuaCjkZwcdKTNe7/Mez898/ZGYDZQ4wAvuQz42Hu/3Xv/FzAPaByJYEVEREREJLIGDLBk7YYbgo5E9idXc9qcc7WAhsCUzLu6Oed+cc6955yrkHlfDWBRtpct5sBJnoiIiIiIBCC0Nlvr1lqbLZaFnbQ558oAnwN3e+83AG8CxwCnAsuAnrnZsXMu2TmX6pxLXbVKa96IiIiIiBQ0rc0WH8JK2pxzxbGEbZD3fgiA936F9z7de58BvM3uEsglwJHZXl4z8749eO/7eu+TvPdJVapUyc97EBERERGRPOjXD8qWhXbtgo5EDiSc7pEOeBeY7b1/Kdv91bI9rR0wK/P2F0BH59whzrnaQF1gauRCFhERERGR/NLabPEjnO6RZwE3AL8652Zk3vcQcI1z7lTAAwuALgDe+9+cc58Cv2OdJ7uqc6SIiIiISGzR2mzxw3nvg46BpKQkn5qaGnQYIiIiIiKFRsuWsHgxpKWp1X8scM5N894n5fRYrrpHioiIiIhI/AutzdapkxK2eKCkTURERESkkNHabPFFSZuIiIiISCGitdniTziNSERERAq92atmZ92uX6V+gJGIiORPaG22p54KOhIJl5I2ERGRMNwwdHcNUWqymmeJSPzS2mzxR+WRIiIiIiKFhNZmi09K2kRERERECgmtzRaflLSJiIiIiBQS/fvDscfCmWcGHYnkhpI2EREREZFCYMEC+P57rc0Wj5S0iYiIiIgUAlqbLX4paRMRERERSXAZGdY1slUrrc0Wj5S0iYiIiIgkuPHjbW02NSCJT0raREREREQSnNZmi29K2kREREREEtimTfDpp3DVVXDooUFHI3lRLOgARERE4kHl0pWDDkFEJE+GDNHabPFOSZuIiEgYvrn+m6BDEBHJk3794Jhj4Kyzgo5E8krlkSIiIiIiCUprsyUGJW0iIiIiIgkqtDbbjTcGHYnkh5I2EREREZEEpLXZEofmtImIiIRh3MJxWbebH908wEhERMITWputR4+gI5H8UtImIiIShntG3ZN1OzU5NcBIRETCo7XZEofKI0VEREREEozWZkssStpERERERBKM1mZLLEraREREREQSjNZmSyxK2kREREREEojWZks8StpERERERBKI1mZLPEraREREREQShNZmS0xK2kREREREEkRobTY1IEksStpERERERBJEv35QpozWZks0StpERERERBKA1mZLXMWCDkBERCQe1KtcL+gQREQOSGuzJS4lbSIiImEY2H5g0CGIiBxQv35Qpw40axZ0JBJpKo8UEREREYlzCxdqbbZEpqRNRERERCTODRhg11qbLTEpaRMRERERiWNjxkDPntC6NRx9dNDRSDRoTpuIiEgYhsweknW7ff32AUYiIrJbnz7QrRvUrw/vvBN0NBItStpERETC8OyPz2bdVtImIkHbtQv+/W947TVo2xY+/BDKlQs6KomWg5ZHOueOdM5975z73Tn3m3Oue+b9FZ1z3zrn/si8rpB5v3PO9XbOzXPO/eKcOy3ab0JEREREpLBYt84Stddeg//8B4YPV8KW6MKZ07YL+I/3/gTgDKCrc+4E4AFgjPe+LjAm82uAC4G6mZdk4M2IRy0iIiIiUgjNmwdnnGGdIt99F158EYoWDToqibaDJm3e+2Xe++mZtzcCs4EawGVA/8yn9Qcuz7x9GTDAm8lAeedctUgHLiIiIiJSmHz/PTRuDKtXw3ffwc03Bx2RFJRcdY90ztUCGgJTgKre+2WZDy0HqmbergEsyvayxZn3iYiIiIhIHvTtC+edB9WqwdSp0Lx50BFJQQo7aXPOlQE+B+723m/I/pj33gM+Nzt2ziU751Kdc6mrVq3KzUtFRERERAqFXbvg7ruhSxdo0wYmToQ6dYKOSgpaWEmbc644lrAN8t6Heh6vCJU9Zl6vzLx/CXBktpfXzLxvD977vt77JO99UpUqVfIav4iIiIhIQlq/Hi6+GF55xRK3L7+Eww4LOioJQjjdIx3wLjDbe/9Stoe+AG7KvH0TMDzb/TdmdpE8A1ifrYxSREREREQO4s8/oWlTWzi7b1/o1UsNRwqzcNZpOwu4AfjVOTcj876HgOeAT51znYGFwFWZj30FXATMA7YA/4pkwCIiIiIiieyHH6B95nKQ334LLVoEGo7EgIMmbd778YDbz8Otc3i+B7rmMy4RERERkULnnXfg9tvh2GOtHPLYY4OOSGJBOCNtIiIihd7ZR50ddAgiksDS0+G++6wM8rzz4JNPoHz5oKOSWKGkTUREJAy9LugVdAgikqA2bIBrroGvvoI774SXXoJiOkqXbPRxEBEREREJyPz5cMklMHcuvPkm3HZb0BFJLFLSJiIiIiISgPHjoV07K40cPRpatQo6IolVYS+uLSIiIiIikfHJJ9C6NVSoAJMnK2GTA9NIm4iISBj6TuubdTu5UXKAkYhIPPMenn8eHnwQmjWDYcOgUqWgo5JYp6RNREQkDEraRCS/du6Erl3h7behY0d4/30oWTLoqCQeqDxSRERERCTKNmywhiNvvw0PPQSDBilhk/BppE1EREREJIoWL4a2beG33yxpu+WWoCOSeKOkTUREREQkSmbMsIRt40Zbh+2884KOSOKRyiNFRERERKLg66/h7LOhSBGYMEEJm+SdkjYRERERkQh76y2bw3bssTBlCpx8ctARSTxT0iYiIiIiEiEZGXD//XDbbXD++TBuHFSvHnRUEu80p01EREREJAK2boWbboLPPrOk7dVXoZiOtiUC9DESEREREcmn1avhsstg4kR44QX4z3/AuaCjkkShpE1EREREJB/++AMuusha+3/2GXToEHREkmiUtImIiIShXb12QYcgIjFo/Hi4/HIbVUtJgaZNg45IEpGSNhERkTA83PzhoEMQkRjzySdw441Qq5atwXbMMUFHJIlK3SNFRERERHLBe3j+eejYERo3tnlsStgkmpS0iYiIiIiEyXvo2hUeeACuuQa+/RYqVQo6Kkl0StpERERERML06qvw5ptw770wcCCULBl0RFIYaE6biIhIGJ4Z90zWbc1vEymcJk2yVv6XXmrlkUU0/CEFREmbiIhIGIbOGZp1W0mbSOGzahVcdRUceST066eETQqWkjYRERERkQNIT4frr7fEbeJEqFAh6IiksFHSJiIiIiJyAE89BaNHQ9++cNppQUcjhZEGdkVERERE9mPUKOjRw9Zju+WWoKORwkpJm4iIiIhIDv7+G667Dk46yTpGOhd0RFJYKWkTEREREdnLjh3WeGTHDhg8GEqXDjoiKcw0p01EREREZC/33gtTpsBnn8FxxwUdjRR2GmkTEREREcnmk09sEe2774YOHYKORkQjbRGRnJzM9OnTKVKkCKNHj6Z8+fJ7PD5gwAB69+4NQI8ePbjooovC2m5SUhIAF198MU888QQAl1xyCcuWLeO0006jb9+++33ttGnT6NKlCwCPP/44l1xySa7e04cffsimTZuoVq3aPq8NN4Zo6Nu3b9Y+nXMUL16csmXLcvTRR3POOefQrl07SuexfiG03eOOO44WLVpEKmQREZG4Evo/fzBvvfUWjRo1isg+Y+m4Y84cazhy5plw991LSUq6NOuxIkWKULp0aapWrcqpp55Kx44dqV27dp72M3bsWNLS0gA7lhQ5EI20RcC5554LQEZGBt9///0+j3/33XcAlChRIm6SgY8++oi+ffvy5ZdfBh3Kfnnv2bFjB2vWrGH69On06tWLG2+8keXLl+dpe6GEcOzYsZENVERERA4oVo47Nm+2kbWSJW20rXjxPR/PyMhg06ZN/Pnnn3z++edce+21fP3113na19ixY/c4GS1yIBppi4Bzzz2XF198kYyMDMaMGUO7du2yHlu+fDm///47AE2bNs3zKFBI0H/MYiUGsBHEiy66iEWLFvHee+/x1VdfsWDBAu69914GDBhAkSI6JyEikZPcSGfCpXDI/n8+e+VO9sqfoOKJJu+hSxf4/Xdbk61mTVi6dPfjoZG+devWkZKSQq9evdi6dStPPvkkRx99NCeccEKBxCmFk5K2CKhYsSKnnXYaqamppKamsmHDBsqVKwdASkpK1vPOO+88AHr16sVPP/3E8uXL2bx5M2XLluWUU07htttu47iDzHTNqUQgIyOD119/neHDh7Njxw5atmxJq1at9nlteno6Tz31FL///jurVq1iy5YtlC9fnqSkJLp27Ur16tVZunQpl166uwxg+vTpWWWaycnJJCcn77dMYdy4cQwcOJA5c+awa9cujjzySC6++GKuu+66rAQq+xmlvn37MnDgQKZOnUr58uW56qqruPHGG3P1vS9atCi1atWiR48eLFmyhJkzZzJnzhzGjRtHixYtWLt2LS+88AJz5sxh9erV7Nixg0qVKnHWWWdxxx13UL58+T3+IQGMGDGCESNGALtLS/PzMxORxKCkTWRPK1eu5O2332bChAn8888/lC9fPuv/a6VKlbKe99lnnzF06FAWL15MRkYGlSpVon79+iQnJ1OyZMk8HXeEpqZUq1aNJ554gldeeYV58+Zx5JFH8u9//5szzjgja5tLlizh2Wef5eeff6ZKlSp07tyZ6dOnZ/2vT01NBeCtt2DQIFuTLbOIKkfly5enffv2FClShKeffppdu3bx7rvv0rNnTwD69+9PSkoKS5YsYePGjZQuXZr69etz8803Z723vUtQQ/eH3uO4ceP4+OOPmT9/PuvXr8863mnfvj3t27fP889M4peGIiKk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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "residuals = abs(np.array(valandtest_pred)-np.array(valandtest_orig))\n",
+ "residuals_df=pd.DataFrame()\n",
+ "residuals_df['residuals']=residuals\n",
+ "#residuals_df['ds']=prophet_dataset2['ds']\n",
+ "\n",
+ "f, ax = plt.subplots(figsize=(15,7))\n",
+ "ax.text(x=len(val_extract)/2 - 10,y=150, s='Validation Data', color='black', fontsize=15, fontweight='bold', alpha=0.8)\n",
+ "ax.text(x=len(val_extract)+10,y=150, s='Testing Data', color='black', fontsize=15, fontweight='bold', alpha=0.8)\n",
+ "ax.axvline(x=len(val_extract), c='green', lw=3, alpha=0.8, ls='--')\n",
+ "residuals_df.plot(kind='line', y='residuals', color='blue', label='Residual',figsize=(15, 6),ax=ax)\n",
+ "plt.title(\"Residuals\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "inside-amber",
+ "metadata": {},
+ "source": [
+ "# Save the Predictions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "id": "alert-recruitment",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "predictions_df=pd.DataFrame()\n",
+ "predictions_df['original'] = valandtest_orig\n",
+ "predictions_df['predictions'] = valandtest_pred\n",
+ "predictions_df.to_csv(Path(\"Predictions/Log.csv\"),index=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "blocked-dakota",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "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.7.10"
+ },
+ "toc-autonumbering": true
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/no_transformation.ipynb b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/no_transformation.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..5876bdd0fee7867f3a64918cdf24b655247ccc91
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/no_transformation.ipynb
@@ -0,0 +1,1752 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "unique-lightweight",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%matplotlib inline\n",
+ "import mxnet as mx\n",
+ "from mxnet import gluon\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "import json\n",
+ "from gluonts.dataset.common import ListDataset\n",
+ "from datetime import datetime, timedelta\n",
+ "from gluonts.model.simple_feedforward import SimpleFeedForwardEstimator\n",
+ "from gluonts.model.deepar import DeepAREstimator\n",
+ "from gluonts.mx.trainer import Trainer\n",
+ "from gluonts.evaluation.backtest import make_evaluation_predictions\n",
+ "from gluonts.evaluation import Evaluator\n",
+ "from gluonts.dataset.util import to_pandas\n",
+ "from gluonts.dataset.field_names import FieldName\n",
+ "from gluonts.model.forecast import SampleForecast\n",
+ "from pandas import Timestamp\n",
+ "import itertools\n",
+ "from gluonts.model.estimator import GluonEstimator"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "identical-holly",
+ "metadata": {},
+ "source": [
+ "# Data Loading"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "lyric-netherlands",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "filename='EstimatedRemainingTimeContext'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "legislative-diesel",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dataset= pd.read_csv(filename + \".csv\")\n",
+ "X= dataset[['name','time', 'countryCode', 'ipAddress', 'level',\n",
+ " 'producer']]\n",
+ "y= dataset.iloc[:,6]\n",
+ "#changing the names of the attributes\n",
+ "gluon_dataset= pd.DataFrame()\n",
+ "gluon_dataset['ds'] = pd.to_datetime(X[\"time\"])\n",
+ "gluon_dataset['y']=y\n",
+ "gluon_dataset['ds'] = gluon_dataset['ds'].dt.tz_convert(None)\n",
+ "gluon_dataset_copy=gluon_dataset.copy()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "similar-serbia",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " ds | \n",
+ " y | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2021-02-18 11:31:12.752 | \n",
+ " 4050.000000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2021-02-18 11:31:32.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2021-02-18 11:32:02.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2021-02-18 11:32:32.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2021-02-18 11:33:02.752 | \n",
+ " 4153.250000 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 135 | \n",
+ " 2021-02-18 12:38:32.752 | \n",
+ " 110.500000 | \n",
+ "
\n",
+ " \n",
+ " 136 | \n",
+ " 2021-02-18 12:39:02.752 | \n",
+ " 60.156250 | \n",
+ "
\n",
+ " \n",
+ " 137 | \n",
+ " 2021-02-18 12:39:32.752 | \n",
+ " 19.140625 | \n",
+ "
\n",
+ " \n",
+ " 138 | \n",
+ " 2021-02-18 12:40:02.752 | \n",
+ " 5.359375 | \n",
+ "
\n",
+ " \n",
+ " 139 | \n",
+ " 2021-02-18 12:40:32.752 | \n",
+ " 0.765625 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
140 rows × 2 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " ds y\n",
+ "0 2021-02-18 11:31:12.752 4050.000000\n",
+ "1 2021-02-18 11:31:32.752 4045.500000\n",
+ "2 2021-02-18 11:32:02.752 4045.500000\n",
+ "3 2021-02-18 11:32:32.752 4045.500000\n",
+ "4 2021-02-18 11:33:02.752 4153.250000\n",
+ ".. ... ...\n",
+ "135 2021-02-18 12:38:32.752 110.500000\n",
+ "136 2021-02-18 12:39:02.752 60.156250\n",
+ "137 2021-02-18 12:39:32.752 19.140625\n",
+ "138 2021-02-18 12:40:02.752 5.359375\n",
+ "139 2021-02-18 12:40:32.752 0.765625\n",
+ "\n",
+ "[140 rows x 2 columns]"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "gluon_dataset_copy"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "willing-syntax",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " This is separate from the ipykernel package so we can avoid doing imports until\n",
+ "/usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:5: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " \"\"\"\n"
+ ]
+ }
+ ],
+ "source": [
+ "for i in range(0,len(gluon_dataset_copy)):\n",
+ " ds=gluon_dataset_copy['ds'][i]\n",
+ " gluon_dataset_copy['ds'][i+1]=ds + timedelta(seconds=60)\n",
+ " ds=gluon_dataset['ds'][i]\n",
+ " gluon_dataset['ds'][i+1]=ds + timedelta(seconds=60)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "czech-anatomy",
+ "metadata": {},
+ "source": [
+ "# Splitting Data into Training and Testing"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "ultimate-spread",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "gluon_dataset_copy=gluon_dataset_copy.set_index('ds')\n",
+ "gluon_dataset=gluon_dataset.set_index('ds')\n",
+ "validation_time = \"2021-02-18 13:10:00\"\n",
+ "train_time = \"2021-02-18 13:30:00\"\n",
+ "test_time = \"2021-02-18 13:50:12\"\n",
+ "freq='1min'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "alpha-prior",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "validation_ds = ListDataset([{\"start\":gluon_dataset.index[0],\"target\":gluon_dataset.y[:train_time]}],freq=freq) \n",
+ "train_ds = ListDataset([{\"start\":gluon_dataset.index[0], \"target\":gluon_dataset.y[:validation_time]}],freq=freq)\n",
+ "test_ds = ListDataset([{\"start\":gluon_dataset.index[0],\"target\":gluon_dataset.y[:test_time]}],freq=freq)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "internal-deployment",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAAGbCAYAAAARGU4hAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAABTi0lEQVR4nO3deXxU1f3/8deZNXsCWdjCKhhAiEFZBSqLglIqdanaWrQutd9aq7Vf11a729rWr7sWbavW1hb9Ya1WrQJKquCCoIDsO8geCNnXmTm/P2YSAyRhIDPJJHk/H488krlz586ZuRl453POPcdYaxERERGR6HG0dQNEREREOjoFLhEREZEoU+ASERERiTIFLhEREZEoU+ASERERiTJXWzegOWlpaXbgwIFt3QyJoPLychITE9u6GRIlOr8dX0yd4w0bgt9zctq2He1UY29fTJ3fdmj58uUHrbWZjd0X04GrW7duLFu2rK2bIRGUn5/PpEmT2roZEiU6vx1fTJ3junbk57dlK9qtxt6+mDq/7ZAxZkdT96lLUURERCTKFLhEREREokyBS0RERCTKYnoMV2Nqa2vZtWsXVVVVbd0UOQmpqamsW7eurZvRpLi4OLKzs3G73W3dFBER6UDaXeDatWsXycnJ9OvXD2NMWzdHTlBpaSnJyclt3YxGWWs5dOgQu3bton///m3dHBER6UDaXZdiVVUV6enpClsSccYY0tPTVT0VEZGIa3eBC1DYkqjR75aIiERDuwxcIiIiIu2JAtcJKioq4oknnjjpxz/00ENUVFREsEVBy5Yt46abbor4cUVERKTlFLhOUCwGLp/Px8iRI3nkkUcielwRERGJDAWuE3TnnXeyZcsW8vLyuO222wD4/e9/z6hRo8jNzeWnP/0pEFyP6stf/jKnn346w4YN44UXXuCRRx5hz549TJ48mcmTJzd67KFDh5Kbm8utt94KQEFBARdffDGjRo1i1KhRLFmyBICf/exnzJ49m/HjxzN79mzy8/OZOXNm/XNfc801jB49mhEjRvDKK68AsGbNGkaPHk1eXh65ubls2rQp6u+XiIiItMNpIRr6+b/XsHZPSUSPObRnCj/9ymlN3n/fffexevVqVqxYAcD8+fPZtGkTS5cuxVrLBRdcwLvvvktBQQE9e/bk9ddfB6C4uJjU1FQeeOABFi1aREZGxhHHPXToEC+//DLr16/HGENRUREAN998M7fccgsTJkxg586dTJ8+vX4eq7Vr17J48WLi4+PJb7AY1r333suUKVN4+umnKSoqYvTo0ZxzzjnMmTOHm2++mSuuuIKamhr8fn/k3jgRERFpUrsOXLFg/vz5zJ8/nxEjRgBQVlbGpk2bmDhxIv/7v//LHXfcwcyZM5k4cWKzx0lNTSUuLo5rr72WmTNn1lerFi5cyNq1a+v3KykpoaysDIALLriA+Pj4Rtv06quvcv/99wPBqTR27tzJuHHjuPfee9m1axcXXXQRgwYNish7ICIiIs1r14GruUpUa7HWctddd/Gd73znmPs++eQT3njjDe6++26mTp3KT37ykyaP43K5WLp0KW+//Tbz5s3jscce45133iEQCPDhhx8SFxd3zGMSExObbNNLL71ETk7OEduHDBnCmDFjeP3115kxYwZPPvkkU6ZMOcFXLCIiIidKY7hCrLVU+/xU1X7xVeMLHLNfcnIypaWl9benT5/O008/XV912r17NwcOHGDPnj0kJCTwzW9+k9tuu41PPvmk0cfXKSsro7i4mBkzZvDggw+ycuVKAKZNm8ajjz5av19dV2Zzpk+fzqOPPoq1FoBPP/0UgK1btzJgwABuuukmZs2axapVq8J8d0RERKQl2nWFK5LKqn1sO1h+zPac7sl4Xc762+np6YwfP55hw4Zx/vnn8/vf/55169Yxbtw4AJKSkvjb3/7G5s2bue2223A4HLjdbv7whz8AcP3113PeeefRs2dPFi1aVH/c0tJSZs2aRVVVFdZaHnjgAQAeeeQRvve975Gbm4vP5+NLX/oSc+bMafa13HPPPfzgBz8gNzeXQCBA//79ee2113jxxRf561//itvtpnv37vzoRz9q8fsmIiIix2fqqiCxKCcnx27YsOGIbevWrWPIkCERf67C8hp2Ha6gV1o8LoehstbPgdJqBmYmkeBVLo2UWF5LsU60fsc6g/z8fCZNmtTWzZAoiqlzXNeOBhcNSfgae/ti6vy2Q8aY5dbakY3dpy7FkEAoeKbGu0lN8JAUClnHdiqKiIiInBgFrpC6wOUIraVXt6ZeLFcARUREpH1Q4AoJBMAAdWsX131X3hIREZGWUuAKCViLw5j6ypYhVOFCiUtERERaRoErJBCwOBym/rYqXCIiIhIpClwhdRWuOnXZK6DAJSIiIi2kwBUSsF+ELIjuoPmkpKQT2v+RRx5hyJAhXHHFFUdsX7FiBW+88cYJP/+ePXu45JJLTvhxJ2vZsmXcdNNNrfZ8IiIisUYTTIX47VFdiqHvsVDgeuKJJ1i4cCHZ2dlHbF+xYgXLli1jxowZxzzG5/PhcjV+env27Mm8efOi0tbG2jFy5EhGjmx0WhIREZFOQRWukEDA4jQNx3A1XeH629/+xujRo8nLy+M73/kOfr8fCFaufvzjH3P66aczduxY9u/fD8C2bdsYN24cw4cP5+67726yDQ888ADDhg1j2LBhPPTQQwD8z//8D1u3buX888/nwQcfrN+3pqaGn/zkJ7zwwgvk5eXxwgsv8LOf/YzZs2czfvx4Zs+ezfbt25k4cSJnnHEGZ5xxBu+//z4A27dvZ9iwYQA8++yzXHTRRZx33nkMGjSI22+/vdG23XnnnQwdOpTc3FxuvfVWAAoKCrj44osZNWoUo0aNYsmSJQDHtCM/P79+Me7y8nKuueYaRo8ezYgRI3jllVcAWLNmTf17mpuby6ZNm5o7XSIiIu1K+65w/eAHEMbaguHoVeMPdimOOhMeeqjJQfPr1q3jhRdeYMmSJbjdbm644Qaef/55rrzySsrLyxk7diz33nsvt99+O3/84x+5++67ufnmm/nud7/LlVdeyeOPP97o8y9fvpxnnnmGjz76CGstY8aM4eyzz2bOnDm8+eabLFq0iIyMjPr9PR4Pv/jFL1i2bBmPPfYYEAw6a9euZfHixcTHx1NRUcGCBQuIi4tj06ZNfP3rX2fZsmXHPPeKFSv49NNP8Xq95OTk8P3vf5/evXvX33/o0CFefvll1q9fjzGGoqIiAG6++WZuueUWJkyYwM6dO5k+fTrr1q0DOKId+Q2mMb7//vuZMmUKTz/9NEVFRYwePZpzzjmHOXPmcPPNN3PFFVdQU1NTH2JFREQ6gvYduCLI8kVVC77oUjx60Pzbb7/N8uXLGTVqFACVlZVkZWUBwRBUV8k588wzWbBgAQBLlizhpZdeAmD27Nnccccdxzz/4sWLufDCC0lMTATgoosu4r333mPEiBEn9DouuOAC4uPjAaitreXGG29kxYoVOJ1ONm7c2Ohjpk6dSmpqKgBDhw5lx44dRwSu1NRU4uLiuPbaa5k5c2b9a1y4cCFr166t36+kpKR+Ee+G7WjonXfe4c033+T+++8HoKqqip07dzJu3Djuvfdedu3axUUXXcSgQYNO6HWLiIjEsvYduELdbpGwfXcxXRI99EwLhgQTmpPr6Hm4rLVcddVV/OY3vznmGG63uz60OZ1OfD5f/X0Nw1w01QU2gAcffJBu3bqxcuVKAoEAcXFxjT7G6/XW/3x0uwFcLhdLly7l7bffZt68eTz22GO88847BAIBPvzww0aP27AdDVlreemll8jJyTli+5AhQxgzZgyvv/46M2bM4Mknn2TKlClhv24REZFYpjFcBEPA0dNCQPDNObpLcerUqcybN48DBw4AUFhYyI4dO5o9/vjx45k7dy4Azz//fKP7TJw4kX/9619UVFRQXl7Oyy+/zMSJE5s9bnJyMqWlpU3eX1xcTI8ePXA4HPz1r3896W66srIyiouLmTFjBg8++CArV64EYNq0aTz66KP1+60Io3t36tSpPProo/Vj4z799FMAtm7dyoABA7jpppuYNWsWq1atOqm2ioiIxCIFLoKhygKOo94NY8wxg+aHDh3Kr371K6ZNm0Zubi7nnnsue/fubfb4Dz/8MI8//jjDhw9n9+7dje5zxhln8K1vfYvRo0czZswYrrvuuuN2J06ePJm1a9fWD5o/2g033MBf/vIXTj/9dNavX99k1el4SktLmTlzJrm5uUyYMIEHHngACE5XsWzZMnJzcxk6dChz5sw57rFuv/12amtryc3N5bTTTuOee+4B4MUXX2TYsGHk5eWxevVqrrzyypNqq4iISCwysbw4c05Ojt2wYcMR29atW8eQIUMi+jy1/gDr9pbQMy2ejKQvutfW7S0h2esiu2tCRJ+vMystLSU5Obmtm9GsaPyOdRb5+flMmjSprZshURRT57iuHQ0uzJHwNfb2xdT5bYeMMcuttY3Og6QKF8FZ5oFjuhSNiY15uERERKR9U+ACAoHgd+dR49oNpj6MiYiIiJwsBS4aVLgcjVS4lLdERESkhRS4aLpL0WGMuhRFRESkxRS4CC7rA42M4SI6i1eLiIhI56LABfhDmerYaSGOnWleRERE5EQpcNHcVYrHzsMVCUlJSSe0/yOPPMKQIUO44oorWvS8DReRfvXVV7nvvvtOqn1FRUU88cQT9bf37NnDJZdc0qK2RcKyZcu46aab2roZIiIix2jfS/tESF3gch4zhis2poV44oknWLhwIdnZ2RE75gUXXMAFF1xwUo+tC1w33HADAD179mTevHkRa9vJ8Pl8jBw5kpEjG53+REREpE2pwkVwWghDsAuxoeAYrmP3/9vf/sbo0aPJy8vjO9/5Tv2SOUlJSfz4xz/m9NNPZ+zYsezfvx+Abdu2MW7cOIYPH87dd9/dZDseeOABhg0bxrBhw3gotE7k//zP/7B161bOP/98HnzwwSP2Hzt2LGvWrKm/PWnSJJYtW8bSpUsZN24cI0aM4KyzzuLoyWMBnn32WW688cZm21dWVsbUqVM544wzGD58OK+88goAd955J1u2bCEvL4/bbruN7du3M2zYMCC4GPXVV1/N8OHDGTFiBIsWLap/vosuuogLL7yQQYMGcfvttzf6Htx5550MHTqU3Nxcbr31VgAKCgq4+OKLGTVqFKNGjWLJkiUA/OxnP2P27NmMHz+e2bNnH1HBKy8v55prrmH06NGMGDGivu1r1qypP3e5ubls2rSpyfMhIiISKe26wvWDH0AYy/cdV43PTa3fRaLXkJf3xZrYjXUprlu3jhdeeIElS5bgdru54YYbeP7557nyyispLy9n7Nix3Hvvvdx+++388Y9/5O677+bmm2/mu9/9LldeeSWPP/54o21Yvnw5zzzzDB999BHWWsaMGcPZZ5/NnDlzePPNN1m0aBEZGRlHPOayyy7jxRdf5Oc//zl79+5l7969jBw5kpKSEt577z1cLhcLFy7kRz/6ES+99FKTr7+p9sXFxfHyyy+TkpLCwYMHGTt2LBdccAH33Xcfq1evrl87cfv27fWPefzxxzHG8Nlnn7F+/XqmTZvGxo0bgeBai++++y4ZGRnk5OTw/e9/n969e9c/9tChQ7z88susX78eYwxFRUX17bvllluYMGECO3fuZPr06axbtw6AtWvXsnjxYuLj48lvMF3yvffey5QpU3j66acpKipi9OjRnHPOOcyZM4ebb76ZK664gpqampNeX1JEROREtOvAFSmWY6tbhLYFjtr29ttvs3z5ckaNGgVAZWUlWVlZAHg8nvoKy5lnnsmCBQsAWLJkSX3gmT17Nnfccccxz7V48WIuvPDC+vUOL7roIt57771m11O89NJLmTZtGj//+c958cUX68dRFRcXc9VVV7Fp0yaMMdTW1jb7+ptqn7WWH/3oR7z77rs4HA52795dX7VryuLFi/n+978PwODBg+nb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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "train_entry = next(iter(train_ds))\n",
+ "train_entry.keys()\n",
+ "\n",
+ "validation_entry = next(iter(validation_ds))\n",
+ "validation_entry.keys()\n",
+ "\n",
+ "test_entry = next(iter(test_ds))\n",
+ "test_entry.keys()\n",
+ "\n",
+ "\n",
+ "test_series = to_pandas(test_entry)\n",
+ "train_series = to_pandas(train_entry)\n",
+ "validation_series = to_pandas(validation_entry)\n",
+ "\n",
+ "prediction_length = len(test_series) - len(validation_series)\n",
+ "context_length = [50,60]\n",
+ "\n",
+ "\n",
+ "list1=train_series.index\n",
+ "list2=train_entry['target']\n",
+ "\n",
+ "d = {'ds':list1,'y':list2}\n",
+ "df_train=pd.DataFrame(d, columns=['ds','y'])\n",
+ "\n",
+ "fig, ax = plt.subplots( figsize=(10, 7))\n",
+ "\n",
+ "# train_series.plot(ax=ax[0])\n",
+ "# ax[0].grid(which=\"both\")\n",
+ "# ax[0].legend([\"train series\"], loc=\"upper left\")\n",
+ "\n",
+ "test_series.plot(ax=ax)\n",
+ "plt.axvline(train_series.index[-1], color='r') # end of train dataset\n",
+ "plt.axvline(validation_series.index[-1], color='b') # end of validation dataset\n",
+ "ax.grid(which=\"both\")\n",
+ "ax.legend([\"test series\", \"end of train series\",\"end of validation series\"], loc=\"upper left\")\n",
+ "\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "minus-brooks",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "21"
+ ]
+ },
+ "execution_count": 9,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "prediction_length"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "manual-cleveland",
+ "metadata": {},
+ "source": [
+ "# Hyper-parameter Tuning"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "ethical-shoulder",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "batch_size = [75,100]\n",
+ "epochs = [5,10]\n",
+ "num_batches_per_epoch = [10,20]\n",
+ "learning_rate = [1e-3,1e-4]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "divine-seeking",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total Possible Models 32\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sklearn.model_selection import ParameterGrid\n",
+ "\n",
+ "param_grid = {'batch_size': batch_size,\n",
+ " 'epochs': epochs,\n",
+ " 'num_batches_per_epoch': num_batches_per_epoch,\n",
+ " 'learning_rate': learning_rate,\n",
+ " 'context_length': context_length\n",
+ " }\n",
+ "grid = ParameterGrid(param_grid)\n",
+ "cnt = 0\n",
+ "for p in grid:\n",
+ " cnt = cnt+1\n",
+ "\n",
+ "print('Total Possible Models',cnt)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "phantom-algebra",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:21<00:00, 2.16s/it, epoch=1/5, avg_epoch_loss=8.58]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.22it/s, epoch=2/5, avg_epoch_loss=7.98]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.90it/s, epoch=3/5, avg_epoch_loss=7.73]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.14it/s, epoch=4/5, avg_epoch_loss=7.56]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.23it/s, epoch=5/5, avg_epoch_loss=7.42]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:26<00:00, 26.11s/it]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:03<00:00, 3.25it/s, epoch=1/5, avg_epoch_loss=9.38]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.15it/s, epoch=2/5, avg_epoch_loss=8.77]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.03it/s, epoch=3/5, avg_epoch_loss=8.36]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.99it/s, epoch=4/5, avg_epoch_loss=8.09]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.78it/s, epoch=5/5, avg_epoch_loss=7.83]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 11.13it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.54it/s, epoch=1/5, avg_epoch_loss=10.7]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 12.38it/s, epoch=2/5, avg_epoch_loss=10.4]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.73it/s, epoch=3/5, avg_epoch_loss=10.1]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.49it/s, epoch=4/5, avg_epoch_loss=9.86]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.67it/s, epoch=5/5, avg_epoch_loss=9.65]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 11.46it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.29it/s, epoch=1/5, avg_epoch_loss=9]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.64it/s, epoch=2/5, avg_epoch_loss=8.85]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.23it/s, epoch=3/5, avg_epoch_loss=8.72]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.29it/s, epoch=4/5, avg_epoch_loss=8.64]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.78it/s, epoch=5/5, avg_epoch_loss=8.52]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 11.25it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:01<00:00, 10.81it/s, epoch=1/5, avg_epoch_loss=8.85]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 12.11it/s, epoch=2/5, avg_epoch_loss=8.03]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.75it/s, epoch=3/5, avg_epoch_loss=7.79]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.79it/s, epoch=4/5, avg_epoch_loss=7.48]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.63it/s, epoch=5/5, avg_epoch_loss=7.31]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 10.13it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.13it/s, epoch=1/5, avg_epoch_loss=9.05]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.98it/s, epoch=2/5, avg_epoch_loss=8.14]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.83it/s, epoch=3/5, avg_epoch_loss=7.74]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.28it/s, epoch=4/5, avg_epoch_loss=7.49]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.68it/s, epoch=5/5, avg_epoch_loss=7.36]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 9.34it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.82it/s, epoch=1/5, avg_epoch_loss=9.21]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.09it/s, epoch=2/5, avg_epoch_loss=8.92]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.55it/s, epoch=3/5, avg_epoch_loss=8.72]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.30it/s, epoch=4/5, avg_epoch_loss=8.53]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.45it/s, epoch=5/5, avg_epoch_loss=8.32]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 10.08it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.65it/s, epoch=1/5, avg_epoch_loss=9.13]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.24it/s, epoch=2/5, avg_epoch_loss=8.82]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.01it/s, epoch=3/5, avg_epoch_loss=8.65]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.11it/s, epoch=4/5, avg_epoch_loss=8.49]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.07it/s, epoch=5/5, avg_epoch_loss=8.32]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 9.79it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.25it/s, epoch=1/10, avg_epoch_loss=8.3]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.49it/s, epoch=2/10, avg_epoch_loss=7.94]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.74it/s, epoch=3/10, avg_epoch_loss=7.75]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.53it/s, epoch=4/10, avg_epoch_loss=7.63]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.80it/s, epoch=5/10, avg_epoch_loss=7.44]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.81it/s, epoch=6/10, avg_epoch_loss=7.37]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.23it/s, epoch=7/10, avg_epoch_loss=7.23]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.81it/s, epoch=8/10, avg_epoch_loss=7.29]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.96it/s, epoch=9/10, avg_epoch_loss=7.19]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.91it/s, epoch=10/10, avg_epoch_loss=7.14]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 8.33it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.21it/s, epoch=1/10, avg_epoch_loss=8.49]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.49it/s, epoch=2/10, avg_epoch_loss=8.17]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.17it/s, epoch=3/10, avg_epoch_loss=7.99]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.66it/s, epoch=4/10, avg_epoch_loss=7.8]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.82it/s, epoch=5/10, avg_epoch_loss=7.62]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.87it/s, epoch=6/10, avg_epoch_loss=7.46]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.38it/s, epoch=7/10, avg_epoch_loss=7.33]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.82it/s, epoch=8/10, avg_epoch_loss=7.22]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.73it/s, epoch=9/10, avg_epoch_loss=7.24]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.10it/s, epoch=10/10, avg_epoch_loss=7.13]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 8.74it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 5.01it/s, epoch=1/10, avg_epoch_loss=9.31]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.12it/s, epoch=2/10, avg_epoch_loss=9.2]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.04it/s, epoch=3/10, avg_epoch_loss=9.08]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.99it/s, epoch=4/10, avg_epoch_loss=8.97]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.85it/s, epoch=5/10, avg_epoch_loss=8.87]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.14it/s, epoch=6/10, avg_epoch_loss=8.77]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.22it/s, epoch=7/10, avg_epoch_loss=8.64]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.54it/s, epoch=8/10, avg_epoch_loss=8.52]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.12it/s, epoch=9/10, avg_epoch_loss=8.4]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.51it/s, epoch=10/10, avg_epoch_loss=8.24]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 8.01it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 6.93it/s, epoch=1/10, avg_epoch_loss=9.7]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.43it/s, epoch=2/10, avg_epoch_loss=9.42]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.98it/s, epoch=3/10, avg_epoch_loss=9.14]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.79it/s, epoch=4/10, avg_epoch_loss=8.91]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.10it/s, epoch=5/10, avg_epoch_loss=8.7]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.10it/s, epoch=6/10, avg_epoch_loss=8.56]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.99it/s, epoch=7/10, avg_epoch_loss=8.5]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.74it/s, epoch=8/10, avg_epoch_loss=8.41]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.91it/s, epoch=9/10, avg_epoch_loss=8.37]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.21it/s, epoch=10/10, avg_epoch_loss=8.31]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 8.23it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.56it/s, epoch=1/10, avg_epoch_loss=9.34]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.81it/s, epoch=2/10, avg_epoch_loss=8.29]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.80it/s, epoch=3/10, avg_epoch_loss=7.87]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.95it/s, epoch=4/10, avg_epoch_loss=7.43]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.14it/s, epoch=5/10, avg_epoch_loss=7.29]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.74it/s, epoch=6/10, avg_epoch_loss=7.25]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.66it/s, epoch=7/10, avg_epoch_loss=7.14]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.87it/s, epoch=8/10, avg_epoch_loss=6.94]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.19it/s, epoch=9/10, avg_epoch_loss=6.89]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.61it/s, epoch=10/10, avg_epoch_loss=6.84]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:15<00:00, 15.19s/it]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 7.92it/s, epoch=1/10, avg_epoch_loss=8.71]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.97it/s, epoch=2/10, avg_epoch_loss=7.98]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.80it/s, epoch=3/10, avg_epoch_loss=7.68]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.94it/s, epoch=4/10, avg_epoch_loss=7.46]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.50it/s, epoch=5/10, avg_epoch_loss=7.29]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.22it/s, epoch=6/10, avg_epoch_loss=7.28]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.94it/s, epoch=7/10, avg_epoch_loss=7.13]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.49it/s, epoch=8/10, avg_epoch_loss=7.02]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.40it/s, epoch=9/10, avg_epoch_loss=6.95]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.42it/s, epoch=10/10, avg_epoch_loss=6.92]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.36it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.35it/s, epoch=1/10, avg_epoch_loss=9.35]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.72it/s, epoch=2/10, avg_epoch_loss=8.88]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.10it/s, epoch=3/10, avg_epoch_loss=8.63]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.33it/s, epoch=4/10, avg_epoch_loss=8.48]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.24it/s, epoch=5/10, avg_epoch_loss=8.4]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.30it/s, epoch=6/10, avg_epoch_loss=8.27]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.99it/s, epoch=7/10, avg_epoch_loss=8.2]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.88it/s, epoch=8/10, avg_epoch_loss=8.1]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.78it/s, epoch=9/10, avg_epoch_loss=8.01]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.59it/s, epoch=10/10, avg_epoch_loss=7.84]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.79it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.01it/s, epoch=1/10, avg_epoch_loss=9.68]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.68it/s, epoch=2/10, avg_epoch_loss=9.3]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.37it/s, epoch=3/10, avg_epoch_loss=8.94]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.03it/s, epoch=4/10, avg_epoch_loss=8.66]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.60it/s, epoch=5/10, avg_epoch_loss=8.44]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.60it/s, epoch=6/10, avg_epoch_loss=8.27]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.01it/s, epoch=7/10, avg_epoch_loss=8.14]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.08it/s, epoch=8/10, avg_epoch_loss=8.04]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.94it/s, epoch=9/10, avg_epoch_loss=7.99]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.88it/s, epoch=10/10, avg_epoch_loss=7.93]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:06<00:00, 6.92s/it]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.44it/s, epoch=1/5, avg_epoch_loss=9.12]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.81it/s, epoch=2/5, avg_epoch_loss=8.33]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.07it/s, epoch=3/5, avg_epoch_loss=7.97]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.81it/s, epoch=4/5, avg_epoch_loss=7.69]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.87it/s, epoch=5/5, avg_epoch_loss=7.52]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.09it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 6.64it/s, epoch=1/5, avg_epoch_loss=8.72]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.69it/s, epoch=2/5, avg_epoch_loss=8.15]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.74it/s, epoch=3/5, avg_epoch_loss=7.97]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.18it/s, epoch=4/5, avg_epoch_loss=7.9]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.07it/s, epoch=5/5, avg_epoch_loss=7.78]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.99it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.93it/s, epoch=1/5, avg_epoch_loss=9.57]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.01it/s, epoch=2/5, avg_epoch_loss=9.28]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.87it/s, epoch=3/5, avg_epoch_loss=9.02]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.57it/s, epoch=4/5, avg_epoch_loss=8.84]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.92it/s, epoch=5/5, avg_epoch_loss=8.72]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.57it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.70it/s, epoch=1/5, avg_epoch_loss=9.76]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.50it/s, epoch=2/5, avg_epoch_loss=9.55]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 7.86it/s, epoch=3/5, avg_epoch_loss=9.34]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.16it/s, epoch=4/5, avg_epoch_loss=9.15]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.21it/s, epoch=5/5, avg_epoch_loss=8.99]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 1.20it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:03<00:00, 6.61it/s, epoch=1/5, avg_epoch_loss=8.7]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.27it/s, epoch=2/5, avg_epoch_loss=8.09]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.17it/s, epoch=3/5, avg_epoch_loss=7.69]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.14it/s, epoch=4/5, avg_epoch_loss=7.38]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.02it/s, epoch=5/5, avg_epoch_loss=7.15]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.91it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.25it/s, epoch=1/5, avg_epoch_loss=9.04]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.04it/s, epoch=2/5, avg_epoch_loss=8.07]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.38it/s, epoch=3/5, avg_epoch_loss=7.56]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.47it/s, epoch=4/5, avg_epoch_loss=7.37]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.27it/s, epoch=5/5, avg_epoch_loss=7.25]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.35it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:01<00:00, 10.15it/s, epoch=1/5, avg_epoch_loss=9.75]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.65it/s, epoch=2/5, avg_epoch_loss=9.34]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.83it/s, epoch=3/5, avg_epoch_loss=9.06]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 12.22it/s, epoch=4/5, avg_epoch_loss=8.89]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.37it/s, epoch=5/5, avg_epoch_loss=8.72]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.50it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.04it/s, epoch=1/5, avg_epoch_loss=9.3]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.67it/s, epoch=2/5, avg_epoch_loss=9.06]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.16it/s, epoch=3/5, avg_epoch_loss=8.82]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.34it/s, epoch=4/5, avg_epoch_loss=8.6]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.51it/s, epoch=5/5, avg_epoch_loss=8.39]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.72it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.89it/s, epoch=1/10, avg_epoch_loss=8.86]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.31it/s, epoch=2/10, avg_epoch_loss=8.37]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.95it/s, epoch=3/10, avg_epoch_loss=8.11]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.63it/s, epoch=4/10, avg_epoch_loss=7.95]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.75it/s, epoch=5/10, avg_epoch_loss=7.8]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.30it/s, epoch=6/10, avg_epoch_loss=7.67]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.55it/s, epoch=7/10, avg_epoch_loss=7.45]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.73it/s, epoch=8/10, avg_epoch_loss=7.39]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.21it/s, epoch=9/10, avg_epoch_loss=7.28]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.02it/s, epoch=10/10, avg_epoch_loss=7.22]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.34it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.98it/s, epoch=1/10, avg_epoch_loss=8.98]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.16it/s, epoch=2/10, avg_epoch_loss=8.44]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.36it/s, epoch=3/10, avg_epoch_loss=8.13]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.35it/s, epoch=4/10, avg_epoch_loss=7.93]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.94it/s, epoch=5/10, avg_epoch_loss=7.79]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.47it/s, epoch=6/10, avg_epoch_loss=7.63]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.70it/s, epoch=7/10, avg_epoch_loss=7.53]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.90it/s, epoch=8/10, avg_epoch_loss=7.53]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.56it/s, epoch=9/10, avg_epoch_loss=7.44]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.60it/s, epoch=10/10, avg_epoch_loss=7.33]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.20it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.68it/s, epoch=1/10, avg_epoch_loss=9.01]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.68it/s, epoch=2/10, avg_epoch_loss=8.9]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.60it/s, epoch=3/10, avg_epoch_loss=8.79]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.12it/s, epoch=4/10, avg_epoch_loss=8.73]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.11it/s, epoch=5/10, avg_epoch_loss=8.62]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.35it/s, epoch=6/10, avg_epoch_loss=8.54]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.40it/s, epoch=7/10, avg_epoch_loss=8.44]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.71it/s, epoch=8/10, avg_epoch_loss=8.35]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.41it/s, epoch=9/10, avg_epoch_loss=8.28]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.09it/s, epoch=10/10, avg_epoch_loss=8.2]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.05it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.16it/s, epoch=1/10, avg_epoch_loss=9.27]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.32it/s, epoch=2/10, avg_epoch_loss=9.15]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.70it/s, epoch=3/10, avg_epoch_loss=9.04]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.96it/s, epoch=4/10, avg_epoch_loss=8.94]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.09it/s, epoch=5/10, avg_epoch_loss=8.83]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.41it/s, epoch=6/10, avg_epoch_loss=8.68]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.34it/s, epoch=7/10, avg_epoch_loss=8.59]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.23it/s, epoch=8/10, avg_epoch_loss=8.45]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.22it/s, epoch=9/10, avg_epoch_loss=8.32]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.09it/s, epoch=10/10, avg_epoch_loss=8.21]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.89it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:01<00:00, 10.06it/s, epoch=1/10, avg_epoch_loss=8.34]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.40it/s, epoch=2/10, avg_epoch_loss=7.78]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.30it/s, epoch=3/10, avg_epoch_loss=7.41]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.16it/s, epoch=4/10, avg_epoch_loss=7.25]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.84it/s, epoch=5/10, avg_epoch_loss=7.22]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.86it/s, epoch=6/10, avg_epoch_loss=7.12]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.26it/s, epoch=7/10, avg_epoch_loss=6.92]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.85it/s, epoch=8/10, avg_epoch_loss=6.86]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.86it/s, epoch=9/10, avg_epoch_loss=6.76]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.48it/s, epoch=10/10, avg_epoch_loss=6.98]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.63it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.35it/s, epoch=1/10, avg_epoch_loss=8.39]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.29it/s, epoch=2/10, avg_epoch_loss=7.85]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.42it/s, epoch=3/10, avg_epoch_loss=7.56]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.65it/s, epoch=4/10, avg_epoch_loss=7.31]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.61it/s, epoch=5/10, avg_epoch_loss=7.26]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.96it/s, epoch=6/10, avg_epoch_loss=7.15]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.68it/s, epoch=7/10, avg_epoch_loss=7.03]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.60it/s, epoch=8/10, avg_epoch_loss=7]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.48it/s, epoch=9/10, avg_epoch_loss=6.86]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.40it/s, epoch=10/10, avg_epoch_loss=6.75]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.01it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.93it/s, epoch=1/10, avg_epoch_loss=8.82]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.19it/s, epoch=2/10, avg_epoch_loss=8.53]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.52it/s, epoch=3/10, avg_epoch_loss=8.32]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.93it/s, epoch=4/10, avg_epoch_loss=8.15]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.68it/s, epoch=5/10, avg_epoch_loss=8.02]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.66it/s, epoch=6/10, avg_epoch_loss=7.89]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.13it/s, epoch=7/10, avg_epoch_loss=7.77]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.88it/s, epoch=8/10, avg_epoch_loss=7.69]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.56it/s, epoch=9/10, avg_epoch_loss=7.58]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.20it/s, epoch=10/10, avg_epoch_loss=7.48]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.91it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.59it/s, epoch=1/10, avg_epoch_loss=9.29]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.30it/s, epoch=2/10, avg_epoch_loss=9.06]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.49it/s, epoch=3/10, avg_epoch_loss=8.84]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.00it/s, epoch=4/10, avg_epoch_loss=8.6]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.95it/s, epoch=5/10, avg_epoch_loss=8.38]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.23it/s, epoch=6/10, avg_epoch_loss=8.17]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.77it/s, epoch=7/10, avg_epoch_loss=8]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.46it/s, epoch=8/10, avg_epoch_loss=7.88]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.48it/s, epoch=9/10, avg_epoch_loss=7.75]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.08it/s, epoch=10/10, avg_epoch_loss=7.68]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.15it/s]\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " MSE abs_error abs_target_sum abs_target_mean \\\n",
+ "0 75610.738095 5638.069336 12598.287109 599.918434 \n",
+ "1 13777.693452 2219.666016 12598.287109 599.918434 \n",
+ "2 216859.523810 4523.641113 12598.287109 599.918434 \n",
+ "3 422305.238095 12879.628906 12598.287109 599.918434 \n",
+ "4 28001.416667 3305.172363 12598.287109 599.918434 \n",
+ "5 7431.552083 1785.927246 12598.287109 599.918434 \n",
+ "6 70048.339286 5539.708984 12598.287109 599.918434 \n",
+ "7 370954.595238 12369.715820 12598.287109 599.918434 \n",
+ "8 24462.799107 3188.888672 12598.287109 599.918434 \n",
+ "9 11003.570685 1867.763428 12598.287109 599.918434 \n",
+ "10 100479.202381 5483.866211 12598.287109 599.918434 \n",
+ "11 67142.279762 4284.879883 12598.287109 599.918434 \n",
+ "12 14262.958333 2232.208984 12598.287109 599.918434 \n",
+ "13 83980.750000 5856.414551 12598.287109 599.918434 \n",
+ "14 11128.295387 1990.343750 12598.287109 599.918434 \n",
+ "15 38062.660714 3589.191406 12598.287109 599.918434 \n",
+ "16 3500.404390 1100.377808 12598.287109 599.918434 \n",
+ "17 16822.827381 2081.288330 12598.287109 599.918434 \n",
+ "18 629042.952381 16509.544922 12598.287109 599.918434 \n",
+ "19 207152.476190 6356.685547 12598.287109 599.918434 \n",
+ "20 6442.921131 1427.700684 12598.287109 599.918434 \n",
+ "21 14169.273810 2059.448486 12598.287109 599.918434 \n",
+ "22 311213.071429 9781.377930 12598.287109 599.918434 \n",
+ "23 59468.107143 4499.717285 12598.287109 599.918434 \n",
+ "24 13617.433036 2247.804932 12598.287109 599.918434 \n",
+ "25 19773.733631 2626.716309 12598.287109 599.918434 \n",
+ "26 39571.625000 3741.313477 12598.287109 599.918434 \n",
+ "27 32198.479167 2871.193604 12598.287109 599.918434 \n",
+ "28 23919.455357 2819.139160 12598.287109 599.918434 \n",
+ "29 29902.101190 3322.099121 12598.287109 599.918434 \n",
+ "30 3507.030878 875.688171 12598.287109 599.918434 \n",
+ "31 11905.996280 2122.710693 12598.287109 599.918434 \n",
+ "\n",
+ " seasonal_error MASE MAPE sMAPE OWA MSIS ... \\\n",
+ "0 101.736922 2.638958 0.460914 0.371694 NaN 45.779449 ... \n",
+ "1 101.736922 1.038938 0.191553 0.170186 NaN 9.306270 ... \n",
+ "2 101.736922 2.117338 0.351433 0.453519 NaN 92.875062 ... \n",
+ "3 101.736922 6.028447 1.061062 0.675011 NaN 29.316504 ... \n",
+ "4 101.736922 1.547021 0.283062 0.241053 NaN 31.766426 ... \n",
+ "5 101.736922 0.835922 0.150314 0.137758 NaN 5.171483 ... \n",
+ "6 101.736922 2.592920 0.475628 0.364200 NaN 21.841991 ... \n",
+ "7 101.736922 5.789777 1.040815 0.651168 NaN 40.775811 ... \n",
+ "8 101.736922 1.492593 0.266585 0.231997 NaN 26.180070 ... \n",
+ "9 101.736922 0.874227 0.163790 0.145113 NaN 12.887236 ... \n",
+ "10 101.736922 2.566782 0.472751 0.358514 NaN 29.723870 ... \n",
+ "11 101.736922 2.005584 0.366962 0.299787 NaN 36.544057 ... \n",
+ "12 101.736922 1.044809 0.192189 0.170307 NaN 24.601826 ... \n",
+ "13 101.736922 2.741157 0.494767 0.385227 NaN 84.465175 ... \n",
+ "14 101.736922 0.931602 0.165524 0.152213 NaN 12.520577 ... \n",
+ "15 101.736922 1.679959 0.318867 0.254712 NaN 9.717930 ... \n",
+ "16 101.736922 0.515044 0.092445 0.086275 NaN 5.507889 ... \n",
+ "17 101.736922 0.974169 0.170876 0.163398 NaN 11.807540 ... \n",
+ "18 101.736922 7.727468 1.373200 0.786470 NaN 48.473372 ... \n",
+ "19 101.736922 2.975314 0.527164 0.378815 NaN 70.056177 ... \n",
+ "20 101.736922 0.668250 0.124509 0.113774 NaN 5.971789 ... \n",
+ "21 101.736922 0.963947 0.183049 0.159623 NaN 15.722762 ... \n",
+ "22 101.736922 4.578278 0.822408 0.539231 NaN 52.579715 ... \n",
+ "23 101.736922 2.106140 0.380885 0.309239 NaN 37.019529 ... \n",
+ "24 101.736922 1.052109 0.192994 0.172047 NaN 15.951367 ... \n",
+ "25 101.736922 1.229462 0.224433 0.194239 NaN 20.181419 ... \n",
+ "26 101.736922 1.751162 0.314591 0.265121 NaN 22.259166 ... \n",
+ "27 101.736922 1.343893 0.244954 0.212879 NaN 15.803676 ... \n",
+ "28 101.736922 1.319528 0.247331 0.209631 NaN 29.752142 ... \n",
+ "29 101.736922 1.554944 0.286044 0.241782 NaN 40.685702 ... \n",
+ "30 101.736922 0.409875 0.072522 0.070044 NaN 4.289901 ... \n",
+ "31 101.736922 0.993557 0.182652 0.163945 NaN 8.408627 ... \n",
+ "\n",
+ " wQuantileLoss[0.5] wQuantileLoss[0.9] mean_absolute_QuantileLoss \\\n",
+ "0 0.447527 0.121410 4522.922929 \n",
+ "1 0.176188 0.093621 1370.945766 \n",
+ "2 0.359068 0.419255 5252.025273 \n",
+ "3 1.022332 0.400698 7354.808614 \n",
+ "4 0.262351 0.066458 2813.525452 \n",
+ "5 0.141760 0.045660 1097.885765 \n",
+ "6 0.439719 0.227526 3152.703546 \n",
+ "7 0.981857 0.390147 7323.939134 \n",
+ "8 0.253121 0.067574 2613.837516 \n",
+ "9 0.148255 0.040482 1475.181840 \n",
+ "10 0.435287 0.273578 3760.034597 \n",
+ "11 0.340116 0.252654 3328.291735 \n",
+ "12 0.177184 0.043652 1972.310319 \n",
+ "13 0.464858 0.103869 5442.727169 \n",
+ "14 0.157985 0.099611 1375.708388 \n",
+ "15 0.284895 0.117048 1974.950529 \n",
+ "16 0.087343 0.067173 784.576935 \n",
+ "17 0.165204 0.088933 1392.367655 \n",
+ "18 1.310460 0.535208 8918.634493 \n",
+ "19 0.504567 0.608256 6319.886753 \n",
+ "20 0.113325 0.038075 981.879602 \n",
+ "21 0.163471 0.047018 1588.421667 \n",
+ "22 0.776405 0.587453 7053.628190 \n",
+ "23 0.357169 0.326901 3916.305494 \n",
+ "24 0.178421 0.050557 1834.510498 \n",
+ "25 0.208498 0.060230 2092.761875 \n",
+ "26 0.296970 0.203645 2566.404112 \n",
+ "27 0.227903 0.133225 1978.389431 \n",
+ "28 0.223772 0.054202 2460.546163 \n",
+ "29 0.263694 0.062856 3006.736308 \n",
+ "30 0.069509 0.035706 649.824780 \n",
+ "31 0.168492 0.073108 1256.491420 \n",
+ "\n",
+ " mean_wQuantileLoss MAE_Coverage epochs learning_rate \\\n",
+ "0 0.359011 0.500000 5 0.0010 \n",
+ "1 0.108820 0.182540 5 0.0010 \n",
+ "2 0.416884 0.074603 5 0.0001 \n",
+ "3 0.583794 0.373016 5 0.0001 \n",
+ "4 0.223326 0.452381 5 0.0010 \n",
+ "5 0.087146 0.325397 5 0.0010 \n",
+ "6 0.250249 0.198413 5 0.0001 \n",
+ "7 0.581344 0.325397 5 0.0001 \n",
+ "8 0.207476 0.484127 10 0.0010 \n",
+ "9 0.117094 0.436508 10 0.0010 \n",
+ "10 0.298456 0.217460 10 0.0001 \n",
+ "11 0.264186 0.138095 10 0.0001 \n",
+ "12 0.156554 0.452381 10 0.0010 \n",
+ "13 0.432021 0.500000 10 0.0010 \n",
+ "14 0.109198 0.169841 10 0.0001 \n",
+ "15 0.156763 0.230159 10 0.0001 \n",
+ "16 0.062276 0.201587 5 0.0010 \n",
+ "17 0.110520 0.074603 5 0.0010 \n",
+ "18 0.707924 0.277778 5 0.0001 \n",
+ "19 0.501647 0.153968 5 0.0001 \n",
+ "20 0.077938 0.293651 5 0.0010 \n",
+ "21 0.126082 0.341270 5 0.0010 \n",
+ "22 0.559888 0.230159 5 0.0001 \n",
+ "23 0.310860 0.169841 5 0.0001 \n",
+ "24 0.145616 0.452381 10 0.0010 \n",
+ "25 0.166115 0.420635 10 0.0010 \n",
+ "26 0.203711 0.169841 10 0.0001 \n",
+ "27 0.157036 0.106349 10 0.0001 \n",
+ "28 0.195308 0.452381 10 0.0010 \n",
+ "29 0.238662 0.500000 10 0.0010 \n",
+ "30 0.051580 0.026984 10 0.0001 \n",
+ "31 0.099735 0.090476 10 0.0001 \n",
+ "\n",
+ " num_batches_per_epoch context_length \\\n",
+ "0 10 50 \n",
+ "1 10 60 \n",
+ "2 10 50 \n",
+ "3 10 60 \n",
+ "4 20 50 \n",
+ "5 20 60 \n",
+ "6 20 50 \n",
+ "7 20 60 \n",
+ "8 10 50 \n",
+ "9 10 60 \n",
+ "10 10 50 \n",
+ "11 10 60 \n",
+ "12 20 50 \n",
+ "13 20 60 \n",
+ "14 20 50 \n",
+ "15 20 60 \n",
+ "16 10 50 \n",
+ "17 10 60 \n",
+ "18 10 50 \n",
+ "19 10 60 \n",
+ "20 20 50 \n",
+ "21 20 60 \n",
+ "22 20 50 \n",
+ "23 20 60 \n",
+ "24 10 50 \n",
+ "25 10 60 \n",
+ "26 10 50 \n",
+ "27 10 60 \n",
+ "28 20 50 \n",
+ "29 20 60 \n",
+ "30 20 50 \n",
+ "31 20 60 \n",
+ "\n",
+ " forecast \n",
+ "0 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "1 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "2 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "3 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "4 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "5 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "6 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "7 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "8 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "9 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "10 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "11 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "12 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "13 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "14 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "15 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "16 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "17 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "18 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "19 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "20 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "21 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "22 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "23 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "24 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "25 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "26 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "27 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "28 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "29 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "30 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "31 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "\n",
+ "[32 rows x 30 columns]\n"
+ ]
+ }
+ ],
+ "source": [
+ "all_params = [dict(zip(param_grid.keys(), v)) for v in itertools.product(*param_grid.values())]\n",
+ "agg_metrics_all=list()\n",
+ "item_metrics_all=list()\n",
+ "for params in all_params:\n",
+ " estimator = DeepAREstimator(\n",
+ " #num_hidden_dimensions=[params['num_hidden_dimensions']],\n",
+ " prediction_length=prediction_length,\n",
+ " context_length=params['context_length'],\n",
+ " freq=freq,\n",
+ " trainer=Trainer(ctx=\"cpu\",\n",
+ " epochs=params['epochs'],\n",
+ " learning_rate=params['learning_rate'],\n",
+ " num_batches_per_epoch=params['num_batches_per_epoch']\n",
+ " )\n",
+ " )\n",
+ " predictor = estimator.train(training_data = train_ds)\n",
+ " forecast_it, ts_it = make_evaluation_predictions(\n",
+ " dataset=validation_ds, # test dataset\n",
+ " predictor=predictor, # predictor\n",
+ " num_samples=20, # number of sample paths we want for evaluation\n",
+ " )\n",
+ " forecasts = list(forecast_it)\n",
+ " #print(forecasts)\n",
+ " tss = list(ts_it)\n",
+ " evaluator = Evaluator(quantiles=[0.1, 0.5, 0.9])\n",
+ " agg_metrics, item_metrics = evaluator(iter(tss), iter(forecasts), num_series=len(test_ds))\n",
+ " #agg_metrics['num_hidden_dimensions'] = params['num_hidden_dimensions']\n",
+ " agg_metrics['epochs'] = params['epochs']\n",
+ " agg_metrics['learning_rate'] = params['learning_rate']\n",
+ " agg_metrics['num_batches_per_epoch'] = params['num_batches_per_epoch']\n",
+ " agg_metrics['context_length'] = params['context_length']\n",
+ " agg_metrics['forecast'] = forecasts\n",
+ " agg_metrics_all.append(agg_metrics)\n",
+ " item_metrics_all.append(item_metrics)\n",
+ " \n",
+ "dataframe = pd.DataFrame(agg_metrics_all)\n",
+ "print(dataframe)\n",
+ "sorted1 = dataframe.sort_values(by=['MAPE'])\n",
+ "sorted1 = sorted1.reset_index(drop=True)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "coordinated-status",
+ "metadata": {},
+ "source": [
+ "# Forecast and Evaluation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "dressed-vault",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "estimator = DeepAREstimator(\n",
+ " #num_hidden_dimensions=[sorted1['num_hidden_dimensions'][0]],\n",
+ " prediction_length=prediction_length,\n",
+ " context_length=sorted1['context_length'][0],\n",
+ " freq=freq,\n",
+ " trainer=Trainer(ctx=\"cpu\",\n",
+ " epochs=sorted1['epochs'][0],\n",
+ " learning_rate=learning_rate[0],\n",
+ " num_batches_per_epoch=sorted1['num_batches_per_epoch'][0]\n",
+ " )\n",
+ ")\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "parliamentary-alert",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.25it/s, epoch=1/10, avg_epoch_loss=8.68]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.30it/s, epoch=2/10, avg_epoch_loss=7.97]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.83it/s, epoch=3/10, avg_epoch_loss=7.62]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.73it/s, epoch=4/10, avg_epoch_loss=7.37]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.19it/s, epoch=5/10, avg_epoch_loss=7.21]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.84it/s, epoch=6/10, avg_epoch_loss=7.03]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.79it/s, epoch=7/10, avg_epoch_loss=7.1]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.95it/s, epoch=8/10, avg_epoch_loss=6.94]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.95it/s, epoch=9/10, avg_epoch_loss=6.76]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.90it/s, epoch=10/10, avg_epoch_loss=6.86]\n"
+ ]
+ }
+ ],
+ "source": [
+ "predictor = estimator.train(train_ds)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "developed-personality",
+ "metadata": {},
+ "source": [
+ "# Save the model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "ranging-heath",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING:root:Serializing RepresentableBlockPredictor instances does not save the prediction network structure in a backwards-compatible manner. Be careful not to use this method in production.\n"
+ ]
+ }
+ ],
+ "source": [
+ "from pathlib import Path\n",
+ "predictor.serialize(Path(\"Models/NoTransformation\"))\n",
+ "\n",
+ "# loads it back\n",
+ "# from gluonts.model.predictor import Predictor\n",
+ "# predictor_deserialized = Predictor.deserialize(Path(\"Models/CubeRoot\"))\n",
+ "# print(predictor_deserialized)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "stupid-gibson",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "forecast_it, ts_it = make_evaluation_predictions(\n",
+ " dataset=test_ds, # test dataset\n",
+ " predictor=predictor, # predictor\n",
+ " num_samples=50, # number of sample paths we want for evaluation\n",
+ ")\n",
+ "\n",
+ "forecasts = list(forecast_it)\n",
+ "tss = list(ts_it)\n",
+ "ts_entry = tss[0]\n",
+ "forecast_entry = forecasts[0]\n",
+ "\n",
+ "forecasts_val=sorted1['forecast'][0]\n",
+ "forecast_entry_val = forecasts_val[0]\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "necessary-black",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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bU/1FntUZ+2HMWaFtXZMU/vUwtUG/H6L87DxXcYY/O046IqIiEh4KXC1Ab+1OBoELlDeEhEROXEocLUBv7U4HIcFLkB5S0RE5MShwNUGfH44LG/hMIb2PHZOREREwkuBqw001aXoV94SERE5YShwtQG/tTgdDQfNW3UqioiInDAUuCLMWov/y12KHBo0X78YNcA555wTWmuxPZk3b15oQevLL7+8wZJEX5abm8uHH34Yen3vvffy6KOPRryMIiIi7VlML+0TC6wFS/OeUnz11VfbrFx1dXW4XMdf/ffff/9R9+fm5pKUlMTpp58OwFVXXdWi8omIiHQkauE6Tnl5eQwYMIB58+Zxyimn8O1vf5u33nqLM844g379+rF06VIAysvLueyyyzj11FP5xsxJvP7qywBUVlby/743l3Mnj2XWrFlUVlaGrt27d2/2798PBBaTHj16NIMHD2bBggWhY5KSkrj++usZPnw448ePDy00fbj58+dz6aWXctppp9GvXz/uu+8+IBCGJk6cyHnnncegQYPw+Xz88pe/ZOzYsQwbNox//etfQKBV7pprrqF///6ceeaZ7N27N3Ttw1vkXnvtNUaNGsXw4cOZPn06eXl53Hvvvfz9739nxIgRvPfee8yfP5+//OUvQGD5ovHjxzNs2DBmzZpFYWFh6Jq/+tWvGDduHKeccgrvvfdeeCpLRESknYjpFq6fvPYTVu1ZdVzn+Hw+nE7nEfeP6DKC22feftRrbN68mf/85z88+OCDjB07lieffJL333+fl156iVtvvZUXXniBW265hWnTpnHvgvtYumEn8y44kwu/9hX+9a9/EZ8Qz4u5S7EHtjFq1Kgm7/Hggw+SkZFBZWUlY8eO5aKLLiIzM5Py8nLGjx/PLbfcwrXXXst9993Hb3/720bnr1mzhiVLllBeXs7IkSP56le/CsDKlSv57LPP6NOnDwsWLCA1NZVly5ZRXV3NGWecwdlnn80nn3zChg0bWLt2LQUFBQwaNIjLLruswfX37dvHFVdcweLFi+nTpw8HDx4kIyODq666iqSkJH7xi18A8Pbbb4fOmTNnDnfeeSeTJ0/md7/7HTfddBO33x74XNfV1bF06VJeffVVbrrpJt56662j1oGIiEgsienAFS19+vRh6NChAAwePJjp06djjGHo0KHk5eUB8MYbb/DSSy/x5z//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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "def plot_prob_forecasts(ts_entry, forecast_entry):\n",
+ " plot_length = len(ts_entry)\n",
+ " prediction_intervals = (50.0,98.0)\n",
+ " legend = [\"observations\", \"median prediction\"] + [f\"{k}% prediction interval\" for k in prediction_intervals][::-1]\n",
+ "\n",
+ " fig, ax = plt.subplots(1, 1, figsize=(10, 7))\n",
+ " ts_entry[-plot_length:].plot(ax=ax) # plot the time series\n",
+ " forecast_entry.plot(prediction_intervals=prediction_intervals, color='g')\n",
+ " plt.grid(which=\"both\")\n",
+ " plt.legend(legend, loc=\"upper left\")\n",
+ " plt.show()\n",
+ "plot_prob_forecasts(gluon_dataset['y'], forecast_entry)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "atmospheric-thanks",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.63it/s]\n"
+ ]
+ }
+ ],
+ "source": [
+ "evaluator = Evaluator(quantiles=[0.1, 0.5, 0.9])\n",
+ "agg_metrics, item_metrics = evaluator(iter(tss), iter([forecast_entry]), num_series=len(test_ds))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "southwest-undergraduate",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'MSE': 354766.61904761905,\n",
+ " 'abs_error': 12105.1337890625,\n",
+ " 'abs_target_sum': 4846.515625,\n",
+ " 'abs_target_mean': 230.78645833333334,\n",
+ " 'seasonal_error': 86.95233050847457,\n",
+ " 'MASE': 6.629321364539261,\n",
+ " 'MAPE': 62.452435257275035,\n",
+ " 'sMAPE': 1.159284458125296,\n",
+ " 'OWA': nan,\n",
+ " 'MSIS': 208.114852388088,\n",
+ " 'QuantileLoss[0.1]': 18653.952172851565,\n",
+ " 'Coverage[0.1]': 1.0,\n",
+ " 'QuantileLoss[0.5]': 12105.134765625,\n",
+ " 'Coverage[0.5]': 1.0,\n",
+ " 'QuantileLoss[0.9]': 2775.030053710937,\n",
+ " 'Coverage[0.9]': 1.0,\n",
+ " 'RMSE': 595.6228832471256,\n",
+ " 'NRMSE': 2.580839827208777,\n",
+ " 'ND': 2.497698290008608,\n",
+ " 'wQuantileLoss[0.1]': 3.848940892014882,\n",
+ " 'wQuantileLoss[0.5]': 2.4976984915064624,\n",
+ " 'wQuantileLoss[0.9]': 0.572582504303994,\n",
+ " 'mean_absolute_QuantileLoss': 11178.038997395835,\n",
+ " 'mean_wQuantileLoss': 2.306407295941779,\n",
+ " 'MAE_Coverage': 0.5}"
+ ]
+ },
+ "execution_count": 19,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "agg_metrics"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "extraordinary-arbitration",
+ "metadata": {},
+ "source": [
+ "# Residual"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "affecting-generation",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#get the mean for all the samples\n",
+ "f1 = forecast_entry_val.samples.mean(axis=0)\n",
+ "f2 = forecast_entry.samples.mean(axis=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "institutional-blade",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "original_values=list(gluon_dataset['y'])\n",
+ "orig_test = original_values[:len(original_values)-prediction_length]\n",
+ "test_extract=original_values[-prediction_length:]\n",
+ "val_extract=orig_test[-prediction_length:]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "running-afternoon",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "valandtest_orig=list()\n",
+ "valandtest_pred=list()\n",
+ "for a1 in val_extract:\n",
+ " valandtest_orig.append(a1)\n",
+ "\n",
+ "for b1 in test_extract:\n",
+ " valandtest_orig.append(b1)\n",
+ " \n",
+ "for a2 in f1:\n",
+ " valandtest_pred.append(a2)\n",
+ "\n",
+ "for b2 in f2:\n",
+ " valandtest_pred.append(b2)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "every-venture",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'Residuals')"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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hatIU6fGoB1CDCrNmlXs8crbjBkxdE6YUPJlzpxln1+7dgxuJQW6Rx6Jyz188AHssEM670eqqQxtkiRVgs8/j2uiXXttHGekVTN1agxvvXvH7n7nnAPXXANNmpT/sfLy4pT5w4bFS1aJp0tVV5LE9fT+GOQmTlz29oIFS1/Tu3f8mUuqXIY2SZIqwXHHxXXPfvyxYgJGTfPLL3DddXFNsnXWicHtnHPiFPTl5fLL4fbb43i2U04pv/1WJUkSp/efMCFut2/vemxSGgxtkiStpptzbi7avqrTVcs9/vXXcfHpyy6DW2+tzMqqv88/jzNxvvlmnG3yttvgyCNXP1j85z9xso2zzooTo0hSmgxtFSg7O5vRo0dTq1Yt3nrrLRo3brzM43379uXee+8FoEePHnTp0qVU+80q6J9xyCGHcP311wNw6KGHMnnyZHbYYQf69OmzwteOGjWKM888E4DrrruOQw89tEzv6ZlnnmHOnDm0aNFiudeWtoaK0KdPn6JjhhCoW7cujRo1olWrVuy5554ceeSRNGjQYJX3DbD55puz1157lVfJkqqRla3T1q0bvPBCHMu23nqVV1dN8uabcPHF8MUXccKQO++EnXZatX19+SXssgtssw0MGRIn3tDSv/Mr8/DDD7NjOa0FkKnnHT///DOHHXZY0e1atWrRoEED1l9/fbbffnuOPfZY2rRps0r7HjJkCN988w0QzyUlcJ22CrVfwWqW+fn5vPfee8s9/s477wBQr169KhMGnn32Wfr06cN///vftEtZoSRJWLRoEdOnT2f06NH06tWLk046iV9++WWV9lcYCIcMGVK+hUqqEcaPh379YouNga3iHHAAfPwxPPxwbNnceec40+RPP5VtP7NmxZa6Bg2gf38DW9qqwnkHxHO9OXPm8N133/Gf//yH448/ntdff32V9jVkyJBlvoyWVqaKTGibufbbbz969uxJfn4+7777LkceuXT9nl9++YUvv/wSgN12222VW4EKZcJ/ZplQA8QWxC5dujBhwgQef/xxXnvtNX744QcuueQS+vbtS61afh8hqfLcemucQv2SS9KupPqrUweys+P4wVtvjYs//+c/cNFFcc2ytdf+89fn58PJJ8c14gYPho02qpy6q4rif+eL99wp3vMnrXrSVNjSN3PmTAYPHkyvXr2YP38+N9xwA61atWKrTF+JXVWeoW01NWnShB122IHc3Fxyc3P5/fffWbvgL8bgwYOLnrf//vsD0KtXLz766CN++eUX5s6dS6NGjdhuu+0466yz2HwlC9KU1EUgPz+f+++/n0GDBrFo0SL23ntv9tlnn+Veu2TJEm688Ua+/PJLpk6dyrx582jcuDFZWVmcc845bLjhhst1Axg9enRRN83s7Gyys7NX2E0hJyeHfv36MXbsWPLy8th444055JBDOOGEE4oCVPFvlPr06UO/fv0YOXIkjRs35phjjuGkk04q08++du3atG7dmh49ejBp0iQ++eQTxo4dS05ODnvttRczZszgjjvuYOzYsUybNo1FixbRtGlTOnTowNlnn03jxo2X+YME8Morr/DKK68AS7uWrs7vTFL1N2ECPPEEnHEGbLhh2tXUHI0axbXwzjwzrun2r3/BY4/FWTtPP33F65DdeisMGgS9ekGnTpVbc3UyZcoUHnnkEd5//31+++03GjduXPT3tWnTpkXPe/HFFxk4cCATJ04kPz+fpk2bsuWWW5KdnU39+vVX6byjcGhKixYtuP7667nnnnsYN24cG2+8MRdeeCG77rpr0T4nTZrELbfcwpgxY2jevDmnnXYao0ePLvpbX9bhOY0bN6Zr167UqlWLm266iby8PB577DHuvPNOAJ588kkGDx7MpEmTmD17Ng0aNGDLLbfk1FNPLXpvf+yCWnh/4XvMycnhueeeY/z48cyaNavofKdr16507dq1TPWq+rA5ohx07twZgLy8vGW617377rsArLHGGuyxxx4AvP7663zzzTf8/vvvLFmyhJkzZ5KTk0N2djbTpk0r87H79OnDk08+ycyZM5k3bx6vvvoqt9xyy3LPW7JkCa+88grjx49n9uzZLFmyhOnTp/Pmm29y5plnsmjRolV451H//v256KKLGD16NPPmzWPRokV899133HPPPVx11fKD9QEuuugicnJyWLBgAb/88gv33nsvw4cPX+Uajj322KLtwv3MmjWLt956i59++ol58+aRl5fHr7/+yoABAzj//PNLve/y/p1Jql5uvz3OuHf55WlXUjNtsgk89RSMHAl//Sv84x/Qrl1cIPuPw/bffBOuvjq20pXhz4D+YMqUKZx00kkMHDiQKVOmkJeXx7Rp0xg0aBDdunVj5syZALz11lvcdtttfPPNN8ybN48FCxYwadIk3nnnHb7//vvVruO3336je/fufPnll0XnHpdeeimzZs0CYPHixZxzzjl8+OGHLFq0iEmTJtGjRw9GjBix2sc+7LDDinpQjRw5kvz8fADee+89vvjiC2bOnMmSJUuYPXs2I0eOpHv37kVj2Fbmk08+YeTIkUybNo3FixezYMECxo4dyy233EL//v1Xu3ZVTYa2crDPPvsUtSYVBrVp06bx6aefAtChQ4eif9iXX345L730EsOGDWP48OH07t0bgDlz5vDmm2+W6bizZ8/mmWeeAWCDDTagf//+vPrqqzQpYZ7pOnXqcMstt/DKK68wfPhwhg0bxjXXXAPA5MmTGTZsGBtuuCG5ubm0aNECYJkWxBUNkp03b17RRCvrrbcezz77LG+99RY7FYwMf/vttxk1atRyr2vdujWvv/560fsv/rNbFa1atSraLhzX1qRJE+68805ef/11PvjgA/73v/8VvY8vvviCsWPHsuOOOy7zLdshhxxS9J4LB0OX5+9MUvUyeXJcjPjkk2N4UHp22gn+97/YVXLhQujSJY6BK/hTzPffx7C2zTbxd+aU9qvuoYceYtq0aTRu3JgnnniCDz74gEcffZR69eoxefJknnrqKQA+/vhjADbaaCPefPNN3n//ffr378+ll15KixYtVum8o7iFCxdy+OGHM3jwYE4//XQA5s+fz/vvvw/Aq6++ysSJE4HYuvXee+9x++23M3369NX+GdSqVYuWLVsWHbMwqJ5++un079+fnJwcRowYwVNPPUX9+vXJy8tj0KBBQOzyecghhxTtq/A9F7Yk7rXXXvTt25fBgwfz4Ycf8sorr7DFFlsAGNpqMLtHloN1112XrKwsRo4cyciRI5kzZw6DBw+mcGbOwpY4gLp169KjRw+++eYb5s6dS/HZO3/88ccyHffbb79l3rx5ABxxxBG0bt0agOOOO44ePXos89xatWqxYMECLrvsMn744Yei1xX6qayjuAt88skny9TQtm1bAM444ww++ugjAEaMGLHcDFPZ2dk0b96c5s2b06RJE3777Td+/fXXVaoBoKRZUBs1asSPP/7IQw89xE8//cTChQuXefynn34q+k/wz5Tn70xS9XLnnXFx5n/+M+1KBDGIde0KhxwCDzwAPXrENcdOOQVGjYotbwMHQsOGaVdatRX2aJk5cybdunVb7vHCL0MLw9jUqVN55JFH2HzzzWnbti1HHXUUtWvXXu06ateuzXnnnUeDBg044IADePTRRwGKzicKvzwHOOuss2jUqBH77LMP7dq1KwqUq2NF5x49e/bkq6++Yvbs2UUtcFD6c63111+f3r17k5uby/Tp01myZEmZ96Hqx9BWTjp37szIkSNZvHgxOTk5Ra1G9evXL+oa+fnnn3PppZcu84+vuLJ2USzeNW+9YtOVNW/efLnnDh48eLkgtzrHLlT4zRLE1r6S6pkxY8Zyr9t4442LtusVrJK6Ol00i/8nVvhH4plnnilqBSzJH0NcScr7dyap+pg6Na7tdfzx8Je/pF2NiqtXDy64AE46CW68EXr3hiVL4sLn/q5WX0l/14v7/fffATj66KMZM2YMQ4cOXaaFqHnz5tx5552rPXlH06ZNi3oyrVFsCtDFixcDy54nFT83Wq8cpnjNz89n0qRJAKy55po0btyYn3/+mXPPPXe5L8YLlea8Iz8/nwsuuGCFXSk976i5St09MoRQO4QwJoTwSsHtNiGED0MI40IIz4cQ6hXcv0bB7XEFj7euoNozyj777FP0rVH//v0ZM2YMAB07dqR+/fpAnN618OS/V69ejBgxgpycnFU+ZrNmzYq2p0yZUrQ9derU5Z5bfOmBJ598kpEjR/L888+XuN9Qhj4jxdelK95SVryeP65dByzzDVtZjrcizz33XNH27rvvDix9z02bNqV///589NFH9OrVq0z7Le/fmaTq4+67Yf58uPLKtCvRijRpEicc+eoreO+92GVSq6/w7/rmm29e1LWv+GXAgAFA/OL6rrvu4u233+aBBx7g0ksvpVmzZkydOnWZ4RGreh6wsta64udJxQPc6vTsKTRo0KCicLbLLrtQq1YtRowYUXTf5ZdfzvDhw8nNzWWdddZZ7vUres8TJkwoCmxdunRhyJAh5ObmljjJnGqWsoxpOx/4qtjt24BeSZJsBswATiu4/zRgRsH9vQqeV+2ts8467LzzzkBsji9sDi+cNRKWfvMD0LBhQxYtWsT999+/ysds27Zt0TdML730Ej/88AO//vorzz777HLPzcvLA+J/Eg0aNGD27Nk8/PDDJe63UaNGQBwbNmfOnD+tYbvttiuqYeDAgYwbN44ZM2YUdVEAlpnFqTzl5+fz448/cu211/LJJ58AsNVWWxW1bBb+vGvXrk2DBg2YOnUqTz75ZIn7Kpzxc8KECct8E1bevzNJ1cOMGXDffXD00VCKXtZK2WabwZ57pl1F9VH45eg333xD3759mTNnDvPmzWPUqFFce+21RWuXvfvuuwwYMIDff/+ddu3a0blz56JWruI9dcpy3lEW7dq1K9p+9NFHi4avFO82WVazZs1i4MCBRV8C16lTh9NOi6fAxc8ZGjRowJIlS+jbt2/RxCjFFb5ngHHjxhVtF99H/fr1qVu3Lh9++GHROD3VXKXqHhlCaAkcDNwMXBTi1wP7AMcXPOVJ4HrgQeDwgm2A/kDvEEJISur4W8107tyZDz74oOh2gwYN6NChQ9Htjh078vTTTwMUDbAtHMS6Kho1asTxxx/Po48+yi+//MJRRx0FUOI3Oh07dmTw4MEsXLiQo48++k+PvfXWW/P111/z888/Fy0I/sADDxSF0uIaNmxI9+7duf3225kyZcoyszgC7LvvvkVT2ZanG264gRtuuGGZ+zbddFNuv/32oklhOnbsyNixY5kyZQpdCr5eXdF73mqrrRgxYgSffPJJ0e9s4MCB5f47k1R1Ze+4dGKEe++F2bPjVPNSTXPmmWcWTfV/7733LjcUoXAysu+++26Fi0fvtttuRdtlOe8oi4MPPph///vfTJw4kQEDBhS1ADZt2rTMk5EUX46gUN26dbn22mvZcsstgfgldZ06dcjLy+O6667juuuuY+2116ZRo0bMnj17mdduvfXWRduF506nnnoq2dnZbLTRRkyaNKmo5hACLVq04Oeffy7zz0DVR2lb2u4GLgMKR1M2BWYmSZJXcHsiULg85UbABICCx2cVPL/a22uvvahTbGGYjh07LtPHeqedduKf//wnG264IWussQY77bTTMt0DVkV2djYnnXQS66yzTtFA3JKm2T/00EOLJv9Yc8012WeffUpcGgDif8adOnVa5lugP3PMMcfQs2dP2rdvT4MGDahXrx6bbrop55133gqPUR7q1q1L06ZNad++PRdddBFPPvnkMuPqTj31VI455hgaN27MWmutxeGHH84lK1j59tJLL2XHHXdcbgH0ividSaqasnfMJnvHbI5tm80998Dhh8N226VdlVT5NthgA/r168eRRx7J+uuvT506dWjSpAnbbbcdZ599dlFL3M4770znzp3ZcMMNqV+/Pg0aNGDTTTflrLPO4uyzzy7aX1nPO0qr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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "residuals = abs(np.array(valandtest_pred)-np.array(valandtest_orig))\n",
+ "residuals_df=pd.DataFrame()\n",
+ "residuals_df['residuals']=residuals\n",
+ "#residuals_df['ds']=prophet_dataset2['ds']\n",
+ "\n",
+ "f, ax = plt.subplots(figsize=(15,7))\n",
+ "ax.text(x=len(val_extract)/2 -10,y=400, s='Validation Data', color='black', fontsize=15, fontweight='bold', alpha=0.8)\n",
+ "ax.text(x=len(val_extract)+10,y=400, s='Testing Data', color='black', fontsize=15, fontweight='bold', alpha=0.8)\n",
+ "ax.axvline(x=len(val_extract), c='green', lw=3, alpha=0.8, ls='--')\n",
+ "residuals_df.plot(kind='line', y='residuals', color='blue', label='Residual',figsize=(15, 6),ax=ax)\n",
+ "plt.title(\"Residuals\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "convinced-clause",
+ "metadata": {},
+ "source": [
+ "# Save the predictions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "antique-scoop",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "predictions_df=pd.DataFrame()\n",
+ "predictions_df['original'] = valandtest_orig\n",
+ "predictions_df['predictions'] = valandtest_pred\n",
+ "predictions_df.to_csv(Path(\"Predictions/NoTransformation.csv\"),index=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "extraordinary-adaptation",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "scenic-slope",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "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.7.10"
+ },
+ "toc-autonumbering": true
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/squareroot.ipynb b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/squareroot.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..732122315fc0dbd2c89fc05bd1c910d29e5cce92
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/squareroot.ipynb
@@ -0,0 +1,2123 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "thorough-spine",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%matplotlib inline\n",
+ "import mxnet as mx\n",
+ "from mxnet import gluon\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "import json\n",
+ "from gluonts.dataset.common import ListDataset\n",
+ "from datetime import datetime, timedelta\n",
+ "from gluonts.model.simple_feedforward import SimpleFeedForwardEstimator\n",
+ "from gluonts.model.deepar import DeepAREstimator\n",
+ "from gluonts.mx.trainer import Trainer\n",
+ "from gluonts.evaluation.backtest import make_evaluation_predictions\n",
+ "from gluonts.evaluation import Evaluator\n",
+ "from gluonts.dataset.util import to_pandas\n",
+ "from gluonts.dataset.field_names import FieldName\n",
+ "from gluonts.model.forecast import SampleForecast\n",
+ "from pandas import Timestamp\n",
+ "import itertools\n",
+ "from gluonts.model.estimator import GluonEstimator"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "prescription-battle",
+ "metadata": {},
+ "source": [
+ "# Data Loading"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "colored-geometry",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "filename='EstimatedRemainingTimeContext'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "infectious-omega",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dataset= pd.read_csv(filename + \".csv\")\n",
+ "X= dataset[['name','time', 'countryCode', 'ipAddress', 'level',\n",
+ " 'producer']]\n",
+ "y= dataset.iloc[:,6]\n",
+ "#changing the names of the attributes\n",
+ "gluon_dataset= pd.DataFrame()\n",
+ "gluon_dataset['ds'] = pd.to_datetime(X[\"time\"])\n",
+ "gluon_dataset['y']=y\n",
+ "gluon_dataset['ds'] = gluon_dataset['ds'].dt.tz_convert(None)\n",
+ "gluon_dataset_copy=gluon_dataset.copy()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "patient-northern",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " ds | \n",
+ " y | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2021-02-18 11:31:12.752 | \n",
+ " 4050.000000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2021-02-18 11:31:32.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2021-02-18 11:32:02.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2021-02-18 11:32:32.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2021-02-18 11:33:02.752 | \n",
+ " 4153.250000 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 135 | \n",
+ " 2021-02-18 12:38:32.752 | \n",
+ " 110.500000 | \n",
+ "
\n",
+ " \n",
+ " 136 | \n",
+ " 2021-02-18 12:39:02.752 | \n",
+ " 60.156250 | \n",
+ "
\n",
+ " \n",
+ " 137 | \n",
+ " 2021-02-18 12:39:32.752 | \n",
+ " 19.140625 | \n",
+ "
\n",
+ " \n",
+ " 138 | \n",
+ " 2021-02-18 12:40:02.752 | \n",
+ " 5.359375 | \n",
+ "
\n",
+ " \n",
+ " 139 | \n",
+ " 2021-02-18 12:40:32.752 | \n",
+ " 0.765625 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
140 rows × 2 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " ds y\n",
+ "0 2021-02-18 11:31:12.752 4050.000000\n",
+ "1 2021-02-18 11:31:32.752 4045.500000\n",
+ "2 2021-02-18 11:32:02.752 4045.500000\n",
+ "3 2021-02-18 11:32:32.752 4045.500000\n",
+ "4 2021-02-18 11:33:02.752 4153.250000\n",
+ ".. ... ...\n",
+ "135 2021-02-18 12:38:32.752 110.500000\n",
+ "136 2021-02-18 12:39:02.752 60.156250\n",
+ "137 2021-02-18 12:39:32.752 19.140625\n",
+ "138 2021-02-18 12:40:02.752 5.359375\n",
+ "139 2021-02-18 12:40:32.752 0.765625\n",
+ "\n",
+ "[140 rows x 2 columns]"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "gluon_dataset_copy"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "moral-buying",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " This is separate from the ipykernel package so we can avoid doing imports until\n",
+ "/usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:5: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " \"\"\"\n"
+ ]
+ }
+ ],
+ "source": [
+ "for i in range(0,len(gluon_dataset_copy)):\n",
+ " ds=gluon_dataset_copy['ds'][i]\n",
+ " gluon_dataset_copy['ds'][i+1]=ds + timedelta(seconds=60)\n",
+ " ds=gluon_dataset['ds'][i]\n",
+ " gluon_dataset['ds'][i+1]=ds + timedelta(seconds=60)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "insured-premiere",
+ "metadata": {},
+ "source": [
+ "# Data Transformation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "tribal-istanbul",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def square_root_transformation(x: pd.Series) -> pd.Series:\n",
+ " return np.sqrt(x)\n",
+ "\n",
+ "def square_root_inverse_transformation(x: pd.Series) -> pd.Series:\n",
+ " return np.square(x)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "patient-eugene",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "gluon_dataset_copy['y_orig']=gluon_dataset_copy['y']\n",
+ "transformed = square_root_transformation(gluon_dataset_copy['y'])\n",
+ "gluon_dataset_copy['y']=transformed\n",
+ "\n",
+ "#plot before transformation\n",
+ "pd.plotting.register_matplotlib_converters()\n",
+ "f, ax = plt.subplots(figsize=(15,7))\n",
+ "gluon_dataset_copy.plot(kind='line', x='ds', y='y_orig', color='blue', label='Train', ax=ax)\n",
+ "plt.title(filename)\n",
+ "plt.show()\n",
+ "\n",
+ "#plot after transformation\n",
+ "pd.plotting.register_matplotlib_converters()\n",
+ "f, ax = plt.subplots(figsize=(15,7))\n",
+ "gluon_dataset_copy.plot(kind='line', x='ds', y='y', color='blue', label='Train', ax=ax)\n",
+ "#test.plot(kind='line', x='ds', y='y', color='red', label='Test', ax=ax)\n",
+ "plt.title(filename + \"_transformed using Square Root Transformation\")\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "alone-migration",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " ds | \n",
+ " y | \n",
+ " y_orig | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2021-02-18 11:31:12.752 | \n",
+ " 63.639610 | \n",
+ " 4050.000000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2021-02-18 11:32:12.752 | \n",
+ " 63.604245 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2021-02-18 11:33:12.752 | \n",
+ " 63.604245 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2021-02-18 11:34:12.752 | \n",
+ " 63.604245 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2021-02-18 11:35:12.752 | \n",
+ " 64.445714 | \n",
+ " 4153.250000 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 135 | \n",
+ " 2021-02-18 13:46:12.752 | \n",
+ " 10.511898 | \n",
+ " 110.500000 | \n",
+ "
\n",
+ " \n",
+ " 136 | \n",
+ " 2021-02-18 13:47:12.752 | \n",
+ " 7.756046 | \n",
+ " 60.156250 | \n",
+ "
\n",
+ " \n",
+ " 137 | \n",
+ " 2021-02-18 13:48:12.752 | \n",
+ " 4.375000 | \n",
+ " 19.140625 | \n",
+ "
\n",
+ " \n",
+ " 138 | \n",
+ " 2021-02-18 13:49:12.752 | \n",
+ " 2.315032 | \n",
+ " 5.359375 | \n",
+ "
\n",
+ " \n",
+ " 139 | \n",
+ " 2021-02-18 13:50:12.752 | \n",
+ " 0.875000 | \n",
+ " 0.765625 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
140 rows × 3 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " ds y y_orig\n",
+ "0 2021-02-18 11:31:12.752 63.639610 4050.000000\n",
+ "1 2021-02-18 11:32:12.752 63.604245 4045.500000\n",
+ "2 2021-02-18 11:33:12.752 63.604245 4045.500000\n",
+ "3 2021-02-18 11:34:12.752 63.604245 4045.500000\n",
+ "4 2021-02-18 11:35:12.752 64.445714 4153.250000\n",
+ ".. ... ... ...\n",
+ "135 2021-02-18 13:46:12.752 10.511898 110.500000\n",
+ "136 2021-02-18 13:47:12.752 7.756046 60.156250\n",
+ "137 2021-02-18 13:48:12.752 4.375000 19.140625\n",
+ "138 2021-02-18 13:49:12.752 2.315032 5.359375\n",
+ "139 2021-02-18 13:50:12.752 0.875000 0.765625\n",
+ "\n",
+ "[140 rows x 3 columns]"
+ ]
+ },
+ "execution_count": 8,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "gluon_dataset_copy"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "republican-extraction",
+ "metadata": {},
+ "source": [
+ "# Splitting Data into Training and Testing"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "awful-traffic",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "gluon_dataset_copy=gluon_dataset_copy.set_index('ds')\n",
+ "gluon_dataset=gluon_dataset.set_index('ds')\n",
+ "validation_time = \"2021-02-18 13:10:00\"\n",
+ "train_time = \"2021-02-18 13:30:00\"\n",
+ "test_time = \"2021-02-18 13:50:12\"\n",
+ "freq='1min'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "oriented-sunset",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "validation_ds = ListDataset([{\"start\":gluon_dataset_copy.index[0], \n",
+ " \"target\":gluon_dataset_copy.y[:train_time]}],\n",
+ " freq=freq\n",
+ " )\n",
+ "train_ds = ListDataset([{\"start\":gluon_dataset_copy.index[0], \n",
+ " \"target\":gluon_dataset_copy.y[:validation_time]}],\n",
+ " freq=freq\n",
+ " )\n",
+ "test_ds = ListDataset([{\"start\":gluon_dataset_copy.index[0],\n",
+ " \"target\":gluon_dataset_copy.y[:test_time]}],\n",
+ " freq=freq\n",
+ " )\n",
+ "test_orig_ds = ListDataset([{\"start\":gluon_dataset.index[0],\n",
+ " \"target\":gluon_dataset.y[:test_time]}],\n",
+ " freq=freq\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 11,
+ "id": "narrow-composition",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "train_entry = next(iter(train_ds))\n",
+ "train_entry.keys()\n",
+ "\n",
+ "validation_entry = next(iter(validation_ds))\n",
+ "validation_entry.keys()\n",
+ "\n",
+ "test_entry = next(iter(test_ds))\n",
+ "test_entry.keys()\n",
+ "\n",
+ "test_orig_entry = next(iter(test_orig_ds))\n",
+ "test_orig_entry.keys()\n",
+ "\n",
+ "test_series = to_pandas(test_entry)\n",
+ "train_series = to_pandas(train_entry)\n",
+ "validation_series = to_pandas(validation_entry)\n",
+ "\n",
+ "prediction_length = len(test_series) - len(validation_series)\n",
+ "context_length = [50,60]\n",
+ "\n",
+ "\n",
+ "list1=train_series.index\n",
+ "list2=train_entry['target']\n",
+ "\n",
+ "d = {'ds':list1,'y':list2}\n",
+ "df_train=pd.DataFrame(d, columns=['ds','y'])\n",
+ "\n",
+ "fig, ax = plt.subplots( figsize=(10, 7))\n",
+ "\n",
+ "# train_series.plot(ax=ax[0])\n",
+ "# ax[0].grid(which=\"both\")\n",
+ "# ax[0].legend([\"train series\"], loc=\"upper left\")\n",
+ "\n",
+ "test_series.plot(ax=ax)\n",
+ "plt.axvline(train_series.index[-1], color='r') # end of train dataset\n",
+ "plt.axvline(validation_series.index[-1], color='b') # end of validation dataset\n",
+ "ax.grid(which=\"both\")\n",
+ "ax.legend([\"test series\", \"end of train series\",\"end of validation series\"], loc=\"upper left\")\n",
+ "\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 12,
+ "id": "minimal-central",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "21"
+ ]
+ },
+ "execution_count": 12,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "prediction_length"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "saved-magic",
+ "metadata": {},
+ "source": [
+ "# Hyper-parameter Tuning"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 13,
+ "id": "listed-stack",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "batch_size = [75,100]\n",
+ "epochs = [5,10]\n",
+ "num_batches_per_epoch = [10,20]\n",
+ "learning_rate = [1e-3,1e-4]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "id": "rough-hands",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Total Possible Models 32\n"
+ ]
+ }
+ ],
+ "source": [
+ "from sklearn.model_selection import ParameterGrid\n",
+ "\n",
+ "param_grid = {#'num_hidden_dimensions':num_hidden_dimensions,\n",
+ " 'batch_size': batch_size,\n",
+ " 'epochs': epochs,\n",
+ " 'num_batches_per_epoch': num_batches_per_epoch,\n",
+ " 'learning_rate': learning_rate,\n",
+ " 'context_length': context_length\n",
+ " }\n",
+ "grid = ParameterGrid(param_grid)\n",
+ "cnt = 0\n",
+ "for p in grid:\n",
+ " cnt = cnt+1\n",
+ "\n",
+ "print('Total Possible Models',cnt)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 15,
+ "id": "twelve-desperate",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.61it/s, epoch=1/5, avg_epoch_loss=4.79]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.54it/s, epoch=2/5, avg_epoch_loss=3.89]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.10it/s, epoch=3/5, avg_epoch_loss=3.45]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.32it/s, epoch=4/5, avg_epoch_loss=3.26]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.63it/s, epoch=5/5, avg_epoch_loss=3.13]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:02<00:00, 2.00s/it]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:06<00:00, 1.64it/s, epoch=1/5, avg_epoch_loss=4.9]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.74it/s, epoch=2/5, avg_epoch_loss=4.04]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.65it/s, epoch=3/5, avg_epoch_loss=3.44]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.41it/s, epoch=4/5, avg_epoch_loss=3.3]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.28it/s, epoch=5/5, avg_epoch_loss=3.1]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 9.30it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.27it/s, epoch=1/5, avg_epoch_loss=5.48]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.27it/s, epoch=2/5, avg_epoch_loss=5.31]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.67it/s, epoch=3/5, avg_epoch_loss=5.2]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.56it/s, epoch=4/5, avg_epoch_loss=5.05]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.00it/s, epoch=5/5, avg_epoch_loss=4.95]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 8.94it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 6.76it/s, epoch=1/5, avg_epoch_loss=5.25]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.40it/s, epoch=2/5, avg_epoch_loss=5.12]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.01it/s, epoch=3/5, avg_epoch_loss=4.98]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.37it/s, epoch=4/5, avg_epoch_loss=4.87]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.46it/s, epoch=5/5, avg_epoch_loss=4.74]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 8.80it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.53it/s, epoch=1/5, avg_epoch_loss=4.43]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.76it/s, epoch=2/5, avg_epoch_loss=3.41]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.43it/s, epoch=3/5, avg_epoch_loss=3.15]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.14it/s, epoch=4/5, avg_epoch_loss=2.95]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.40it/s, epoch=5/5, avg_epoch_loss=2.78]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.93it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 6.80it/s, epoch=1/5, avg_epoch_loss=5.31]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.74it/s, epoch=2/5, avg_epoch_loss=3.81]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.86it/s, epoch=3/5, avg_epoch_loss=3.19]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 7.14it/s, epoch=4/5, avg_epoch_loss=3]\n",
+ "100%|██████████| 20/20 [00:03<00:00, 6.65it/s, epoch=5/5, avg_epoch_loss=2.9]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.51it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 7.26it/s, epoch=1/5, avg_epoch_loss=5.63]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.85it/s, epoch=2/5, avg_epoch_loss=5.26]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.09it/s, epoch=3/5, avg_epoch_loss=5]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.33it/s, epoch=4/5, avg_epoch_loss=4.77]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.51it/s, epoch=5/5, avg_epoch_loss=4.57]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 8.08it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.93it/s, epoch=1/5, avg_epoch_loss=5.47]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.04it/s, epoch=2/5, avg_epoch_loss=5.12]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.65it/s, epoch=3/5, avg_epoch_loss=4.89]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.61it/s, epoch=4/5, avg_epoch_loss=4.69]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.25it/s, epoch=5/5, avg_epoch_loss=4.47]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.42it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.35it/s, epoch=1/10, avg_epoch_loss=5.87]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.79it/s, epoch=2/10, avg_epoch_loss=4.89]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.76it/s, epoch=3/10, avg_epoch_loss=4.28]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.36it/s, epoch=4/10, avg_epoch_loss=3.6]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.73it/s, epoch=5/10, avg_epoch_loss=3.33]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.75it/s, epoch=6/10, avg_epoch_loss=3.15]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.93it/s, epoch=7/10, avg_epoch_loss=3]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.87it/s, epoch=8/10, avg_epoch_loss=2.91]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.71it/s, epoch=9/10, avg_epoch_loss=2.84]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.11it/s, epoch=10/10, avg_epoch_loss=2.81]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.62it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.62it/s, epoch=1/10, avg_epoch_loss=5.02]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.95it/s, epoch=2/10, avg_epoch_loss=4.29]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.66it/s, epoch=3/10, avg_epoch_loss=3.54]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.25it/s, epoch=4/10, avg_epoch_loss=3.35]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.14it/s, epoch=5/10, avg_epoch_loss=3.22]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.01it/s, epoch=6/10, avg_epoch_loss=3.11]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.72it/s, epoch=7/10, avg_epoch_loss=3]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.95it/s, epoch=8/10, avg_epoch_loss=2.96]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.31it/s, epoch=9/10, avg_epoch_loss=2.89]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.33it/s, epoch=10/10, avg_epoch_loss=2.85]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.06it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.57it/s, epoch=1/10, avg_epoch_loss=5.61]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.69it/s, epoch=2/10, avg_epoch_loss=5.4]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.11it/s, epoch=3/10, avg_epoch_loss=5.24]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.89it/s, epoch=4/10, avg_epoch_loss=5.13]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.20it/s, epoch=5/10, avg_epoch_loss=5.01]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.18it/s, epoch=6/10, avg_epoch_loss=4.95]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.01it/s, epoch=7/10, avg_epoch_loss=4.85]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.41it/s, epoch=8/10, avg_epoch_loss=4.74]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.74it/s, epoch=9/10, avg_epoch_loss=4.63]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.14it/s, epoch=10/10, avg_epoch_loss=4.5]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.51it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.52it/s, epoch=1/10, avg_epoch_loss=5.73]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.28it/s, epoch=2/10, avg_epoch_loss=5.45]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.55it/s, epoch=3/10, avg_epoch_loss=5.22]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.74it/s, epoch=4/10, avg_epoch_loss=5.01]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.12it/s, epoch=5/10, avg_epoch_loss=4.84]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.28it/s, epoch=6/10, avg_epoch_loss=4.7]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.34it/s, epoch=7/10, avg_epoch_loss=4.59]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.72it/s, epoch=8/10, avg_epoch_loss=4.48]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.91it/s, epoch=9/10, avg_epoch_loss=4.35]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.69it/s, epoch=10/10, avg_epoch_loss=4.23]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 7.03it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.67it/s, epoch=1/10, avg_epoch_loss=4.36]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.79it/s, epoch=2/10, avg_epoch_loss=3.39]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.84it/s, epoch=3/10, avg_epoch_loss=2.87]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.33it/s, epoch=4/10, avg_epoch_loss=2.74]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.43it/s, epoch=5/10, avg_epoch_loss=2.65]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.04it/s, epoch=6/10, avg_epoch_loss=2.7]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.58it/s, epoch=7/10, avg_epoch_loss=2.53]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.70it/s, epoch=8/10, avg_epoch_loss=2.52]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.59it/s, epoch=9/10, avg_epoch_loss=2.44]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.16it/s, epoch=10/10, avg_epoch_loss=2.35]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.74it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 7.87it/s, epoch=1/10, avg_epoch_loss=4.6]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.06it/s, epoch=2/10, avg_epoch_loss=3.42]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.00it/s, epoch=3/10, avg_epoch_loss=3.14]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.36it/s, epoch=4/10, avg_epoch_loss=3]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.20it/s, epoch=5/10, avg_epoch_loss=2.86]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.57it/s, epoch=6/10, avg_epoch_loss=2.82]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.30it/s, epoch=7/10, avg_epoch_loss=2.73]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.66it/s, epoch=8/10, avg_epoch_loss=2.6]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.26it/s, epoch=9/10, avg_epoch_loss=2.59]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.31it/s, epoch=10/10, avg_epoch_loss=2.47]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.62it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.49it/s, epoch=1/10, avg_epoch_loss=4.78]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.44it/s, epoch=2/10, avg_epoch_loss=4.54]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.90it/s, epoch=3/10, avg_epoch_loss=4.26]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.39it/s, epoch=4/10, avg_epoch_loss=3.94]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.71it/s, epoch=5/10, avg_epoch_loss=3.62]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.87it/s, epoch=6/10, avg_epoch_loss=3.37]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.01it/s, epoch=7/10, avg_epoch_loss=3.25]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.15it/s, epoch=8/10, avg_epoch_loss=3.18]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.90it/s, epoch=9/10, avg_epoch_loss=3.1]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.55it/s, epoch=10/10, avg_epoch_loss=3.02]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.96it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.41it/s, epoch=1/10, avg_epoch_loss=5.42]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.02it/s, epoch=2/10, avg_epoch_loss=5.17]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.57it/s, epoch=3/10, avg_epoch_loss=4.97]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.33it/s, epoch=4/10, avg_epoch_loss=4.77]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.57it/s, epoch=5/10, avg_epoch_loss=4.55]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.92it/s, epoch=6/10, avg_epoch_loss=4.25]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.81it/s, epoch=7/10, avg_epoch_loss=3.89]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.60it/s, epoch=8/10, avg_epoch_loss=3.57]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.49it/s, epoch=9/10, avg_epoch_loss=3.37]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.51it/s, epoch=10/10, avg_epoch_loss=3.24]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.56it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.37it/s, epoch=1/5, avg_epoch_loss=4.69]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.60it/s, epoch=2/5, avg_epoch_loss=3.7]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.31it/s, epoch=3/5, avg_epoch_loss=3.26]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.62it/s, epoch=4/5, avg_epoch_loss=3.14]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.51it/s, epoch=5/5, avg_epoch_loss=2.98]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.22it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 6.87it/s, epoch=1/5, avg_epoch_loss=5.16]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.60it/s, epoch=2/5, avg_epoch_loss=4.49]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.39it/s, epoch=3/5, avg_epoch_loss=3.71]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.49it/s, epoch=4/5, avg_epoch_loss=3.35]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.54it/s, epoch=5/5, avg_epoch_loss=3.17]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.77it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.92it/s, epoch=1/5, avg_epoch_loss=6.11]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.39it/s, epoch=2/5, avg_epoch_loss=5.85]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.02it/s, epoch=3/5, avg_epoch_loss=5.62]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.68it/s, epoch=4/5, avg_epoch_loss=5.42]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.38it/s, epoch=5/5, avg_epoch_loss=5.24]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 6.01it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.56it/s, epoch=1/5, avg_epoch_loss=5.34]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.33it/s, epoch=2/5, avg_epoch_loss=5.13]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.23it/s, epoch=3/5, avg_epoch_loss=4.97]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.64it/s, epoch=4/5, avg_epoch_loss=4.85]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.86it/s, epoch=5/5, avg_epoch_loss=4.72]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.18it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 7.64it/s, epoch=1/5, avg_epoch_loss=4.65]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.71it/s, epoch=2/5, avg_epoch_loss=3.47]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.47it/s, epoch=3/5, avg_epoch_loss=3.25]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.97it/s, epoch=4/5, avg_epoch_loss=3.08]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.10it/s, epoch=5/5, avg_epoch_loss=2.86]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.99it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.68it/s, epoch=1/5, avg_epoch_loss=4.61]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.02it/s, epoch=2/5, avg_epoch_loss=3.54]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.84it/s, epoch=3/5, avg_epoch_loss=3.16]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.04it/s, epoch=4/5, avg_epoch_loss=3.01]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.86it/s, epoch=5/5, avg_epoch_loss=2.92]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.99it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 9.61it/s, epoch=1/5, avg_epoch_loss=5.44]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.02it/s, epoch=2/5, avg_epoch_loss=4.98]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.98it/s, epoch=3/5, avg_epoch_loss=4.64]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.47it/s, epoch=4/5, avg_epoch_loss=4.41]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.53it/s, epoch=5/5, avg_epoch_loss=4.18]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.59it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 7.98it/s, epoch=1/5, avg_epoch_loss=5.41]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.68it/s, epoch=2/5, avg_epoch_loss=4.94]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.13it/s, epoch=3/5, avg_epoch_loss=4.5]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.88it/s, epoch=4/5, avg_epoch_loss=4.27]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.50it/s, epoch=5/5, avg_epoch_loss=4.06]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.66it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.74it/s, epoch=1/10, avg_epoch_loss=5.07]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.92it/s, epoch=2/10, avg_epoch_loss=4.45]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.94it/s, epoch=3/10, avg_epoch_loss=3.87]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.34it/s, epoch=4/10, avg_epoch_loss=3.46]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.65it/s, epoch=5/10, avg_epoch_loss=3.37]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.22it/s, epoch=6/10, avg_epoch_loss=3.24]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.42it/s, epoch=7/10, avg_epoch_loss=3.08]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.37it/s, epoch=8/10, avg_epoch_loss=2.96]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.63it/s, epoch=9/10, avg_epoch_loss=2.9]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.20it/s, epoch=10/10, avg_epoch_loss=2.82]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.43it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 6.81it/s, epoch=1/10, avg_epoch_loss=4.96]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.13it/s, epoch=2/10, avg_epoch_loss=4.2]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.11it/s, epoch=3/10, avg_epoch_loss=3.45]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.62it/s, epoch=4/10, avg_epoch_loss=3.23]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.12it/s, epoch=5/10, avg_epoch_loss=3.1]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.70it/s, epoch=6/10, avg_epoch_loss=2.99]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.06it/s, epoch=7/10, avg_epoch_loss=2.92]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.10it/s, epoch=8/10, avg_epoch_loss=2.88]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.27it/s, epoch=9/10, avg_epoch_loss=2.8]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.11it/s, epoch=10/10, avg_epoch_loss=2.82]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.47it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 8.32it/s, epoch=1/10, avg_epoch_loss=5.9]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 11.33it/s, epoch=2/10, avg_epoch_loss=5.57]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.77it/s, epoch=3/10, avg_epoch_loss=5.26]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.50it/s, epoch=4/10, avg_epoch_loss=4.97]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.59it/s, epoch=5/10, avg_epoch_loss=4.73]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.59it/s, epoch=6/10, avg_epoch_loss=4.59]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.40it/s, epoch=7/10, avg_epoch_loss=4.47]\n",
+ "100%|██████████| 10/10 [00:00<00:00, 10.15it/s, epoch=8/10, avg_epoch_loss=4.43]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.79it/s, epoch=9/10, avg_epoch_loss=4.36]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.91it/s, epoch=10/10, avg_epoch_loss=4.26]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.43it/s]\n",
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 6.35it/s, epoch=1/10, avg_epoch_loss=6.17]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.99it/s, epoch=2/10, avg_epoch_loss=5.9]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.60it/s, epoch=3/10, avg_epoch_loss=5.66]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.85it/s, epoch=4/10, avg_epoch_loss=5.4]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.54it/s, epoch=5/10, avg_epoch_loss=5.2]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.73it/s, epoch=6/10, avg_epoch_loss=5]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.23it/s, epoch=7/10, avg_epoch_loss=4.83]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 7.90it/s, epoch=8/10, avg_epoch_loss=4.66]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.76it/s, epoch=9/10, avg_epoch_loss=4.54]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 8.64it/s, epoch=10/10, avg_epoch_loss=4.45]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.32it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.43it/s, epoch=1/10, avg_epoch_loss=3.97]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.01it/s, epoch=2/10, avg_epoch_loss=3.24]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.06it/s, epoch=3/10, avg_epoch_loss=3.05]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.98it/s, epoch=4/10, avg_epoch_loss=2.81]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.25it/s, epoch=5/10, avg_epoch_loss=2.72]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.20it/s, epoch=6/10, avg_epoch_loss=2.67]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.36it/s, epoch=7/10, avg_epoch_loss=2.61]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.74it/s, epoch=8/10, avg_epoch_loss=2.74]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.11it/s, epoch=9/10, avg_epoch_loss=2.64]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.84it/s, epoch=10/10, avg_epoch_loss=2.48]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.91it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 7.88it/s, epoch=1/10, avg_epoch_loss=5.21]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.58it/s, epoch=2/10, avg_epoch_loss=3.89]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.64it/s, epoch=3/10, avg_epoch_loss=3.29]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.66it/s, epoch=4/10, avg_epoch_loss=3.09]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.01it/s, epoch=5/10, avg_epoch_loss=2.88]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.33it/s, epoch=6/10, avg_epoch_loss=2.83]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.39it/s, epoch=7/10, avg_epoch_loss=2.7]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.72it/s, epoch=8/10, avg_epoch_loss=2.56]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.23it/s, epoch=9/10, avg_epoch_loss=2.52]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.05it/s, epoch=10/10, avg_epoch_loss=2.45]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.44it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:02<00:00, 8.55it/s, epoch=1/10, avg_epoch_loss=5.74]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.14it/s, epoch=2/10, avg_epoch_loss=5.28]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.77it/s, epoch=3/10, avg_epoch_loss=4.93]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.60it/s, epoch=4/10, avg_epoch_loss=4.7]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 11.28it/s, epoch=5/10, avg_epoch_loss=4.49]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.58it/s, epoch=6/10, avg_epoch_loss=4.27]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.35it/s, epoch=7/10, avg_epoch_loss=4.02]\n",
+ "100%|██████████| 20/20 [00:01<00:00, 10.68it/s, epoch=8/10, avg_epoch_loss=3.74]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.67it/s, epoch=9/10, avg_epoch_loss=3.54]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.30it/s, epoch=10/10, avg_epoch_loss=3.39]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 4.81it/s]\n",
+ " 0%| | 0/20 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 20/20 [00:03<00:00, 6.24it/s, epoch=1/10, avg_epoch_loss=5.45]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.92it/s, epoch=2/10, avg_epoch_loss=5.18]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.61it/s, epoch=3/10, avg_epoch_loss=4.97]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.19it/s, epoch=4/10, avg_epoch_loss=4.75]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.70it/s, epoch=5/10, avg_epoch_loss=4.45]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.31it/s, epoch=6/10, avg_epoch_loss=4.09]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.38it/s, epoch=7/10, avg_epoch_loss=3.64]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.09it/s, epoch=8/10, avg_epoch_loss=3.31]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 8.97it/s, epoch=9/10, avg_epoch_loss=3.23]\n",
+ "100%|██████████| 20/20 [00:02<00:00, 9.00it/s, epoch=10/10, avg_epoch_loss=3.17]\n",
+ "Running evaluation: 100%|██████████| 1/1 [00:02<00:00, 2.56s/it]\n"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ " MSE abs_error abs_target_sum abs_target_mean seasonal_error \\\n",
+ "0 7.110326 47.947243 512.975952 24.427426 0.935886 \n",
+ "1 2.718347 29.349041 512.975952 24.427426 0.935886 \n",
+ "2 69.491339 93.787727 512.975952 24.427426 0.935886 \n",
+ "3 76.638870 137.047806 512.975952 24.427426 0.935886 \n",
+ "4 1.478893 20.309326 512.975952 24.427426 0.935886 \n",
+ "5 5.371743 44.309261 512.975952 24.427426 0.935886 \n",
+ "6 136.284947 238.074997 512.975952 24.427426 0.935886 \n",
+ "7 137.594180 226.236313 512.975952 24.427426 0.935886 \n",
+ "8 34.352411 119.138725 512.975952 24.427426 0.935886 \n",
+ "9 0.730020 13.766659 512.975952 24.427426 0.935886 \n",
+ "10 80.672567 154.710724 512.975952 24.427426 0.935886 \n",
+ "11 15.632167 64.604965 512.975952 24.427426 0.935886 \n",
+ "12 6.239088 46.914154 512.975952 24.427426 0.935886 \n",
+ "13 23.796826 97.615578 512.975952 24.427426 0.935886 \n",
+ "14 7.070661 54.728539 512.975952 24.427426 0.935886 \n",
+ "15 5.154843 37.010399 512.975952 24.427426 0.935886 \n",
+ "16 3.583408 31.265545 512.975952 24.427426 0.935886 \n",
+ "17 7.746376 42.503689 512.975952 24.427426 0.935886 \n",
+ "18 579.166109 449.984650 512.975952 24.427426 0.935886 \n",
+ "19 119.924537 152.172577 512.975952 24.427426 0.935886 \n",
+ "20 11.266795 62.600456 512.975952 24.427426 0.935886 \n",
+ "21 3.625887 36.892643 512.975952 24.427426 0.935886 \n",
+ "22 20.759353 86.855942 512.975952 24.427426 0.935886 \n",
+ "23 35.832854 95.907341 512.975952 24.427426 0.935886 \n",
+ "24 0.809405 17.706110 512.975952 24.427426 0.935886 \n",
+ "25 5.108372 42.230431 512.975952 24.427426 0.935886 \n",
+ "26 13.394809 64.284248 512.975952 24.427426 0.935886 \n",
+ "27 186.478027 284.624298 512.975952 24.427426 0.935886 \n",
+ "28 14.661211 76.240738 512.975952 24.427426 0.935886 \n",
+ "29 2.630915 30.528358 512.975952 24.427426 0.935886 \n",
+ "30 9.015333 46.447460 512.975952 24.427426 0.935886 \n",
+ "31 3.669474 33.238190 512.975952 24.427426 0.935886 \n",
+ "\n",
+ " MASE MAPE sMAPE OWA MSIS ... wQuantileLoss[0.5] \\\n",
+ "0 2.439615 0.092917 0.097927 NaN 17.318808 ... 0.093469 \n",
+ "1 1.493316 0.059505 0.057207 NaN 19.711280 ... 0.057213 \n",
+ "2 4.772036 0.186653 0.175551 NaN 133.115974 ... 0.182831 \n",
+ "3 6.973163 0.272090 0.229575 NaN 168.341560 ... 0.267162 \n",
+ "4 1.033364 0.040853 0.039860 NaN 7.309330 ... 0.039591 \n",
+ "5 2.254510 0.087400 0.091924 NaN 11.341761 ... 0.086377 \n",
+ "6 12.113553 0.472165 0.374950 NaN 119.799249 ... 0.464106 \n",
+ "7 11.511186 0.448381 0.351361 NaN 127.731804 ... 0.441027 \n",
+ "8 6.061927 0.238920 0.210344 NaN 106.447617 ... 0.232250 \n",
+ "9 0.700465 0.027490 0.026987 NaN 8.083111 ... 0.026837 \n",
+ "10 7.871874 0.310600 0.261658 NaN 142.604370 ... 0.301595 \n",
+ "11 3.287181 0.124903 0.131160 NaN 93.752628 ... 0.125942 \n",
+ "12 2.387051 0.095677 0.089831 NaN 50.103966 ... 0.091455 \n",
+ "13 4.966802 0.195989 0.176168 NaN 148.340733 ... 0.190293 \n",
+ "14 2.784656 0.110142 0.102923 NaN 15.819936 ... 0.106688 \n",
+ "15 1.883135 0.074173 0.071665 NaN 18.605347 ... 0.072148 \n",
+ "16 1.590830 0.063563 0.060894 NaN 15.698742 ... 0.060949 \n",
+ "17 2.162641 0.088039 0.080714 NaN 23.671627 ... 0.082857 \n",
+ "18 22.895780 0.865329 1.413663 NaN 281.686331 ... 0.877204 \n",
+ "19 7.742730 0.294200 0.329427 NaN 201.694503 ... 0.296647 \n",
+ "20 3.185189 0.127058 0.117430 NaN 25.056651 ... 0.122034 \n",
+ "21 1.877144 0.074436 0.070698 NaN 9.936049 ... 0.071919 \n",
+ "22 4.419339 0.171157 0.152933 NaN 93.013701 ... 0.169318 \n",
+ "23 4.879885 0.192531 0.167286 NaN 77.545740 ... 0.186963 \n",
+ "24 0.900909 0.035357 0.035937 NaN 10.116837 ... 0.034516 \n",
+ "25 2.148737 0.085873 0.081195 NaN 11.425150 ... 0.082324 \n",
+ "26 3.270863 0.123461 0.119672 NaN 108.405489 ... 0.125316 \n",
+ "27 14.482039 0.566896 0.423544 NaN 183.039271 ... 0.554849 \n",
+ "28 3.879224 0.153504 0.140646 NaN 92.764941 ... 0.148624 \n",
+ "29 1.553321 0.061717 0.059390 NaN 31.415505 ... 0.059512 \n",
+ "30 2.363305 0.089496 0.092615 NaN 23.573247 ... 0.090545 \n",
+ "31 1.691201 0.065948 0.064462 NaN 14.729389 ... 0.064795 \n",
+ "\n",
+ " wQuantileLoss[0.9] mean_absolute_QuantileLoss mean_wQuantileLoss \\\n",
+ "0 0.028390 28.174912 0.054924 \n",
+ "1 0.034778 21.431692 0.041779 \n",
+ "2 0.218189 105.221863 0.205120 \n",
+ "3 0.279339 135.313423 0.263781 \n",
+ "4 0.016741 13.053960 0.025448 \n",
+ "5 0.049002 28.723686 0.055994 \n",
+ "6 0.256290 142.842858 0.278459 \n",
+ "7 0.307114 149.986923 0.292386 \n",
+ "8 0.059846 96.756509 0.188618 \n",
+ "9 0.016672 10.055288 0.019602 \n",
+ "10 0.241274 124.959661 0.243598 \n",
+ "11 0.155463 77.795745 0.151656 \n",
+ "12 0.022601 39.541971 0.077083 \n",
+ "13 0.043347 89.931500 0.175313 \n",
+ "14 0.046650 30.919139 0.060274 \n",
+ "15 0.036472 24.121758 0.047023 \n",
+ "16 0.034557 20.895513 0.040734 \n",
+ "17 0.035946 29.236561 0.056994 \n",
+ "18 0.234671 281.750611 0.549247 \n",
+ "19 0.245653 149.413260 0.291268 \n",
+ "20 0.039791 43.763409 0.085313 \n",
+ "21 0.029483 21.350403 0.041621 \n",
+ "22 0.142281 74.549942 0.145328 \n",
+ "23 0.142814 71.155638 0.138711 \n",
+ "24 0.015435 12.024619 0.023441 \n",
+ "25 0.029075 26.842758 0.052328 \n",
+ "26 0.178077 80.525237 0.156977 \n",
+ "27 0.353651 184.623260 0.359906 \n",
+ "28 0.035552 65.768975 0.128211 \n",
+ "29 0.016045 25.322931 0.049365 \n",
+ "30 0.038861 30.951126 0.060336 \n",
+ "31 0.031680 21.228668 0.041383 \n",
+ "\n",
+ " MAE_Coverage epochs learning_rate num_batches_per_epoch \\\n",
+ "0 0.325397 5 0.0010 10 \n",
+ "1 0.122222 5 0.0010 10 \n",
+ "2 0.074603 5 0.0001 10 \n",
+ "3 0.153968 5 0.0001 10 \n",
+ "4 0.134921 5 0.0010 20 \n",
+ "5 0.404762 5 0.0010 20 \n",
+ "6 0.185714 5 0.0001 20 \n",
+ "7 0.201587 5 0.0001 20 \n",
+ "8 0.500000 10 0.0010 10 \n",
+ "9 0.138095 10 0.0010 10 \n",
+ "10 0.185714 10 0.0001 10 \n",
+ "11 0.106349 10 0.0001 10 \n",
+ "12 0.452381 10 0.0010 20 \n",
+ "13 0.500000 10 0.0010 20 \n",
+ "14 0.246032 10 0.0001 20 \n",
+ "15 0.103175 10 0.0001 20 \n",
+ "16 0.138095 5 0.0010 10 \n",
+ "17 0.106349 5 0.0010 10 \n",
+ "18 0.201587 5 0.0001 10 \n",
+ "19 0.106349 5 0.0001 10 \n",
+ "20 0.404762 5 0.0010 20 \n",
+ "21 0.198413 5 0.0010 20 \n",
+ "22 0.201587 5 0.0001 20 \n",
+ "23 0.201587 5 0.0001 20 \n",
+ "24 0.106349 10 0.0010 10 \n",
+ "25 0.325397 10 0.0010 10 \n",
+ "26 0.074603 10 0.0001 10 \n",
+ "27 0.217460 10 0.0001 10 \n",
+ "28 0.500000 10 0.0010 20 \n",
+ "29 0.436508 10 0.0010 20 \n",
+ "30 0.182540 10 0.0001 20 \n",
+ "31 0.103175 10 0.0001 20 \n",
+ "\n",
+ " context_length forecast \n",
+ "0 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "1 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "2 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "3 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "4 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "5 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "6 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "7 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "8 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "9 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "10 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "11 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "12 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "13 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "14 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "15 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "16 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "17 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "18 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "19 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "20 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "21 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "22 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "23 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "24 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "25 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "26 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "27 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "28 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "29 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "30 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "31 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "\n",
+ "[32 rows x 30 columns]\n",
+ " MSE abs_error abs_target_sum abs_target_mean seasonal_error \\\n",
+ "0 0.730020 13.766659 512.975952 24.427426 0.935886 \n",
+ "1 0.809405 17.706110 512.975952 24.427426 0.935886 \n",
+ "2 1.478893 20.309326 512.975952 24.427426 0.935886 \n",
+ "3 2.718347 29.349041 512.975952 24.427426 0.935886 \n",
+ "4 2.630915 30.528358 512.975952 24.427426 0.935886 \n",
+ "5 3.583408 31.265545 512.975952 24.427426 0.935886 \n",
+ "6 3.669474 33.238190 512.975952 24.427426 0.935886 \n",
+ "7 5.154843 37.010399 512.975952 24.427426 0.935886 \n",
+ "8 3.625887 36.892643 512.975952 24.427426 0.935886 \n",
+ "9 5.108372 42.230431 512.975952 24.427426 0.935886 \n",
+ "10 5.371743 44.309261 512.975952 24.427426 0.935886 \n",
+ "11 7.746376 42.503689 512.975952 24.427426 0.935886 \n",
+ "12 9.015333 46.447460 512.975952 24.427426 0.935886 \n",
+ "13 7.110326 47.947243 512.975952 24.427426 0.935886 \n",
+ "14 6.239088 46.914154 512.975952 24.427426 0.935886 \n",
+ "15 7.070661 54.728539 512.975952 24.427426 0.935886 \n",
+ "16 13.394809 64.284248 512.975952 24.427426 0.935886 \n",
+ "17 15.632167 64.604965 512.975952 24.427426 0.935886 \n",
+ "18 11.266795 62.600456 512.975952 24.427426 0.935886 \n",
+ "19 14.661211 76.240738 512.975952 24.427426 0.935886 \n",
+ "20 20.759353 86.855942 512.975952 24.427426 0.935886 \n",
+ "21 69.491339 93.787727 512.975952 24.427426 0.935886 \n",
+ "22 35.832854 95.907341 512.975952 24.427426 0.935886 \n",
+ "23 23.796826 97.615578 512.975952 24.427426 0.935886 \n",
+ "24 34.352411 119.138725 512.975952 24.427426 0.935886 \n",
+ "25 76.638870 137.047806 512.975952 24.427426 0.935886 \n",
+ "26 119.924537 152.172577 512.975952 24.427426 0.935886 \n",
+ "27 80.672567 154.710724 512.975952 24.427426 0.935886 \n",
+ "28 137.594180 226.236313 512.975952 24.427426 0.935886 \n",
+ "29 136.284947 238.074997 512.975952 24.427426 0.935886 \n",
+ "30 186.478027 284.624298 512.975952 24.427426 0.935886 \n",
+ "31 579.166109 449.984650 512.975952 24.427426 0.935886 \n",
+ "\n",
+ " MASE MAPE sMAPE OWA MSIS ... wQuantileLoss[0.5] \\\n",
+ "0 0.700465 0.027490 0.026987 NaN 8.083111 ... 0.026837 \n",
+ "1 0.900909 0.035357 0.035937 NaN 10.116837 ... 0.034516 \n",
+ "2 1.033364 0.040853 0.039860 NaN 7.309330 ... 0.039591 \n",
+ "3 1.493316 0.059505 0.057207 NaN 19.711280 ... 0.057213 \n",
+ "4 1.553321 0.061717 0.059390 NaN 31.415505 ... 0.059512 \n",
+ "5 1.590830 0.063563 0.060894 NaN 15.698742 ... 0.060949 \n",
+ "6 1.691201 0.065948 0.064462 NaN 14.729389 ... 0.064795 \n",
+ "7 1.883135 0.074173 0.071665 NaN 18.605347 ... 0.072148 \n",
+ "8 1.877144 0.074436 0.070698 NaN 9.936049 ... 0.071919 \n",
+ "9 2.148737 0.085873 0.081195 NaN 11.425150 ... 0.082324 \n",
+ "10 2.254510 0.087400 0.091924 NaN 11.341761 ... 0.086377 \n",
+ "11 2.162641 0.088039 0.080714 NaN 23.671627 ... 0.082857 \n",
+ "12 2.363305 0.089496 0.092615 NaN 23.573247 ... 0.090545 \n",
+ "13 2.439615 0.092917 0.097927 NaN 17.318808 ... 0.093469 \n",
+ "14 2.387051 0.095677 0.089831 NaN 50.103966 ... 0.091455 \n",
+ "15 2.784656 0.110142 0.102923 NaN 15.819936 ... 0.106688 \n",
+ "16 3.270863 0.123461 0.119672 NaN 108.405489 ... 0.125316 \n",
+ "17 3.287181 0.124903 0.131160 NaN 93.752628 ... 0.125942 \n",
+ "18 3.185189 0.127058 0.117430 NaN 25.056651 ... 0.122034 \n",
+ "19 3.879224 0.153504 0.140646 NaN 92.764941 ... 0.148624 \n",
+ "20 4.419339 0.171157 0.152933 NaN 93.013701 ... 0.169318 \n",
+ "21 4.772036 0.186653 0.175551 NaN 133.115974 ... 0.182831 \n",
+ "22 4.879885 0.192531 0.167286 NaN 77.545740 ... 0.186963 \n",
+ "23 4.966802 0.195989 0.176168 NaN 148.340733 ... 0.190293 \n",
+ "24 6.061927 0.238920 0.210344 NaN 106.447617 ... 0.232250 \n",
+ "25 6.973163 0.272090 0.229575 NaN 168.341560 ... 0.267162 \n",
+ "26 7.742730 0.294200 0.329427 NaN 201.694503 ... 0.296647 \n",
+ "27 7.871874 0.310600 0.261658 NaN 142.604370 ... 0.301595 \n",
+ "28 11.511186 0.448381 0.351361 NaN 127.731804 ... 0.441027 \n",
+ "29 12.113553 0.472165 0.374950 NaN 119.799249 ... 0.464106 \n",
+ "30 14.482039 0.566896 0.423544 NaN 183.039271 ... 0.554849 \n",
+ "31 22.895780 0.865329 1.413663 NaN 281.686331 ... 0.877204 \n",
+ "\n",
+ " wQuantileLoss[0.9] mean_absolute_QuantileLoss mean_wQuantileLoss \\\n",
+ "0 0.016672 10.055288 0.019602 \n",
+ "1 0.015435 12.024619 0.023441 \n",
+ "2 0.016741 13.053960 0.025448 \n",
+ "3 0.034778 21.431692 0.041779 \n",
+ "4 0.016045 25.322931 0.049365 \n",
+ "5 0.034557 20.895513 0.040734 \n",
+ "6 0.031680 21.228668 0.041383 \n",
+ "7 0.036472 24.121758 0.047023 \n",
+ "8 0.029483 21.350403 0.041621 \n",
+ "9 0.029075 26.842758 0.052328 \n",
+ "10 0.049002 28.723686 0.055994 \n",
+ "11 0.035946 29.236561 0.056994 \n",
+ "12 0.038861 30.951126 0.060336 \n",
+ "13 0.028390 28.174912 0.054924 \n",
+ "14 0.022601 39.541971 0.077083 \n",
+ "15 0.046650 30.919139 0.060274 \n",
+ "16 0.178077 80.525237 0.156977 \n",
+ "17 0.155463 77.795745 0.151656 \n",
+ "18 0.039791 43.763409 0.085313 \n",
+ "19 0.035552 65.768975 0.128211 \n",
+ "20 0.142281 74.549942 0.145328 \n",
+ "21 0.218189 105.221863 0.205120 \n",
+ "22 0.142814 71.155638 0.138711 \n",
+ "23 0.043347 89.931500 0.175313 \n",
+ "24 0.059846 96.756509 0.188618 \n",
+ "25 0.279339 135.313423 0.263781 \n",
+ "26 0.245653 149.413260 0.291268 \n",
+ "27 0.241274 124.959661 0.243598 \n",
+ "28 0.307114 149.986923 0.292386 \n",
+ "29 0.256290 142.842858 0.278459 \n",
+ "30 0.353651 184.623260 0.359906 \n",
+ "31 0.234671 281.750611 0.549247 \n",
+ "\n",
+ " MAE_Coverage epochs learning_rate num_batches_per_epoch \\\n",
+ "0 0.138095 10 0.0010 10 \n",
+ "1 0.106349 10 0.0010 10 \n",
+ "2 0.134921 5 0.0010 20 \n",
+ "3 0.122222 5 0.0010 10 \n",
+ "4 0.436508 10 0.0010 20 \n",
+ "5 0.138095 5 0.0010 10 \n",
+ "6 0.103175 10 0.0001 20 \n",
+ "7 0.103175 10 0.0001 20 \n",
+ "8 0.198413 5 0.0010 20 \n",
+ "9 0.325397 10 0.0010 10 \n",
+ "10 0.404762 5 0.0010 20 \n",
+ "11 0.106349 5 0.0010 10 \n",
+ "12 0.182540 10 0.0001 20 \n",
+ "13 0.325397 5 0.0010 10 \n",
+ "14 0.452381 10 0.0010 20 \n",
+ "15 0.246032 10 0.0001 20 \n",
+ "16 0.074603 10 0.0001 10 \n",
+ "17 0.106349 10 0.0001 10 \n",
+ "18 0.404762 5 0.0010 20 \n",
+ "19 0.500000 10 0.0010 20 \n",
+ "20 0.201587 5 0.0001 20 \n",
+ "21 0.074603 5 0.0001 10 \n",
+ "22 0.201587 5 0.0001 20 \n",
+ "23 0.500000 10 0.0010 20 \n",
+ "24 0.500000 10 0.0010 10 \n",
+ "25 0.153968 5 0.0001 10 \n",
+ "26 0.106349 5 0.0001 10 \n",
+ "27 0.185714 10 0.0001 10 \n",
+ "28 0.201587 5 0.0001 20 \n",
+ "29 0.185714 5 0.0001 20 \n",
+ "30 0.217460 10 0.0001 10 \n",
+ "31 0.201587 5 0.0001 10 \n",
+ "\n",
+ " context_length forecast \n",
+ "0 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "1 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "2 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "3 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "4 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "5 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "6 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "7 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "8 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "9 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "10 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "11 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "12 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "13 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "14 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "15 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "16 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "17 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "18 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "19 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "20 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "21 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "22 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "23 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "24 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "25 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "26 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "27 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "28 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "29 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "30 60 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "31 50 [gluonts.model.forecast.SampleForecast(freq=\"1... \n",
+ "\n",
+ "[32 rows x 30 columns]\n"
+ ]
+ }
+ ],
+ "source": [
+ "all_params = [dict(zip(param_grid.keys(), v)) for v in itertools.product(*param_grid.values())]\n",
+ "agg_metrics_all=list()\n",
+ "item_metrics_all=list()\n",
+ "for params in all_params:\n",
+ " estimator = DeepAREstimator(\n",
+ " #num_hidden_dimensions=[params['num_hidden_dimensions']],\n",
+ " prediction_length=prediction_length,\n",
+ " context_length=params['context_length'],\n",
+ " freq=freq,\n",
+ " trainer=Trainer(ctx=\"cpu\",\n",
+ " epochs=params['epochs'],\n",
+ " learning_rate=params['learning_rate'],\n",
+ " num_batches_per_epoch=params['num_batches_per_epoch']\n",
+ " )\n",
+ " )\n",
+ " predictor = estimator.train(training_data = train_ds)\n",
+ " forecast_it, ts_it = make_evaluation_predictions(\n",
+ " dataset=validation_ds, # test dataset\n",
+ " predictor=predictor, # predictor\n",
+ " num_samples=20, # number of sample paths we want for evaluation\n",
+ " )\n",
+ " forecasts = list(forecast_it)\n",
+ " #print(forecasts)\n",
+ " tss = list(ts_it)\n",
+ " evaluator = Evaluator(quantiles=[0.1, 0.5, 0.9])\n",
+ " agg_metrics, item_metrics = evaluator(iter(tss), iter(forecasts), num_series=len(test_ds))\n",
+ " #agg_metrics['num_hidden_dimensions'] = params['num_hidden_dimensions']\n",
+ " agg_metrics['epochs'] = params['epochs']\n",
+ " agg_metrics['learning_rate'] = params['learning_rate']\n",
+ " agg_metrics['num_batches_per_epoch'] = params['num_batches_per_epoch']\n",
+ " agg_metrics['context_length'] = params['context_length']\n",
+ " agg_metrics['forecast'] = forecasts\n",
+ " agg_metrics_all.append(agg_metrics)\n",
+ " item_metrics_all.append(item_metrics)\n",
+ " \n",
+ "dataframe = pd.DataFrame(agg_metrics_all)\n",
+ "print(dataframe)\n",
+ "sorted1 = dataframe.sort_values(by=['MAPE'])\n",
+ "sorted1 = sorted1.reset_index(drop=True)\n",
+ "print(sorted1)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "injured-happiness",
+ "metadata": {},
+ "source": [
+ "# Forecast and Evaluation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "id": "random-detroit",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "estimator = DeepAREstimator(\n",
+ " #num_hidden_dimensions=[sorted1['num_hidden_dimensions'][0]],\n",
+ " prediction_length=prediction_length,\n",
+ " context_length=sorted1['context_length'][0],\n",
+ " freq=freq,\n",
+ " trainer=Trainer(ctx=\"cpu\",\n",
+ " epochs=sorted1['epochs'][0],\n",
+ " learning_rate=learning_rate[0],\n",
+ " num_batches_per_epoch=sorted1['num_batches_per_epoch'][0]\n",
+ " )\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 17,
+ "id": "small-dealing",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/10 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "learning rate from ``lr_scheduler`` has been overwritten by ``learning_rate`` in optimizer.\n"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 10/10 [00:01<00:00, 7.29it/s, epoch=1/10, avg_epoch_loss=4.86]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.31it/s, epoch=2/10, avg_epoch_loss=3.94]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.42it/s, epoch=3/10, avg_epoch_loss=3.37]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.98it/s, epoch=4/10, avg_epoch_loss=3.24]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.51it/s, epoch=5/10, avg_epoch_loss=3.18]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.60it/s, epoch=6/10, avg_epoch_loss=3.06]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.62it/s, epoch=7/10, avg_epoch_loss=2.95]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.23it/s, epoch=8/10, avg_epoch_loss=2.94]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.65it/s, epoch=9/10, avg_epoch_loss=2.87]\n",
+ "100%|██████████| 10/10 [00:01<00:00, 9.54it/s, epoch=10/10, avg_epoch_loss=2.79]\n"
+ ]
+ }
+ ],
+ "source": [
+ "predictor = estimator.train(train_ds)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "crude-brave",
+ "metadata": {},
+ "source": [
+ "# Save the Model"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 18,
+ "id": "documented-defensive",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "WARNING:root:Serializing RepresentableBlockPredictor instances does not save the prediction network structure in a backwards-compatible manner. Be careful not to use this method in production.\n"
+ ]
+ }
+ ],
+ "source": [
+ "from pathlib import Path\n",
+ "predictor.serialize(Path(\"Models/SquareRoot\"))\n",
+ "\n",
+ "# loads it back\n",
+ "# from gluonts.model.predictor import Predictor\n",
+ "# predictor_deserialized = Predictor.deserialize(Path(\"Models/CubeRoot\"))\n",
+ "# print(predictor_deserialized)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
+ "id": "handed-swimming",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "forecast_it, ts_it = make_evaluation_predictions(\n",
+ " dataset=test_ds, # test dataset\n",
+ " predictor=predictor, # predictor\n",
+ " num_samples=100, # number of sample paths we want for evaluation\n",
+ ")\n",
+ "\n",
+ "forecasts = list(forecast_it)\n",
+ "tss = list(ts_it)\n",
+ "ts_entry = tss[0]\n",
+ "forecast_entry = forecasts[0]\n",
+ "\n",
+ "forecasts_val=sorted1['forecast'][0]\n",
+ "forecast_entry_val = forecasts_val[0]\n",
+ "\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "id": "minus-norfolk",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#return forecast to original\n",
+ "inv = np.vectorize(square_root_inverse_transformation)\n",
+ "\n",
+ "forecast_entry.samples = inv(forecast_entry.samples)\n",
+ "forecast_entry_inv=SampleForecast(freq=freq, start_date=forecast_entry.start_date, samples=forecast_entry.samples)\n",
+ "\n",
+ "forecast_entry_val.samples = inv(forecast_entry_val.samples)\n",
+ "forecast_entry_val_inv=SampleForecast(freq=freq, start_date=forecast_entry_val.start_date, samples=forecast_entry_val.samples)\n",
+ "\n",
+ "ts_entry_inv=inv(ts_entry)\n",
+ "ts_entry_inv_df=pd.DataFrame(ts_entry_inv, index=ts_entry.index)\n",
+ "tss_inv=list()\n",
+ "tss_inv.append(ts_entry_inv_df)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "id": "approved-summit",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlwAAAGYCAYAAACXjTyPAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAByDklEQVR4nO3dd3jb1dn/8ffR9N6OM5wJIXsPwkjIAAItK5C2tECSUqDwKx1PWygdlEAXT58uChQIGwollJZRoGxMWCEhIYMkZJA4ezjx3pZ0fn9IFnbsLFuyLOfzui5ftr5LRz62dfuc+3sfY61FRERERKLHEesGiIiIiHR1CrhEREREokwBl4iIiEiUKeASERERiTIFXCIiIiJR5op1Aw4nJyfH9uvXL6LXrKqqIjk5OaLXlOhTv8Uf9Vl8Ur/FH/VZ57Fs2bL91trc1vZ16oCrX79+fPzxxxG9ZkFBAVOnTo3oNSX61G/xR30Wn9Rv8Ud91nkYY7Yeap+mFEVERESiTAGXiIiISJQp4BIRERGJsk6dw9WahoYGduzYQW1tbZvOT09PZ926dRFulURbZ+q3hIQE8vPzcbvdsW6KiIjEibgLuHbs2EFqair9+vXDGHPM51dUVJCamhqFlkk0dZZ+s9Zy4MABduzYQf/+/WPdHBERiRNxN6VYW1tLdnZ2m4ItkfYyxpCdnd3mEVYRETk+xV3ABSjYkpjSz5+IiByruAy4REREROKJAq4IKSwsZPjw4bFuBitWrODll18OP37hhRe4/fbbY9giERERUcDVifl8vmM+5+CA64ILLuCmm26KZLNERETkGCngaqM//elPDB8+nOHDh/OXv/wFCAZIl112GUOGDGH27NlUV1cDcNNNNzF06FBGjhzJj3/8YwCKioq45JJLmDBhAhMmTOD9998HYP78+VxxxRWcdtppXHHFFUyaNIk1a9aEn3fq1Kl8/PHHLFmyhFNOOYUxY8Zw6qmnsn79eurr6/nlL3/JwoULGT16NAsXLuSRRx7h+uuvB4KjcNOnT2fkyJHMmDGDbdu2ATBv3jy+973vceqppzJgwACeeeYZAHbv3s2UKVMYPXo0w4cP59133+2Q762IiEhXE3dlIZq69T9rWLur/JjO8fv9OJ3OQ+4f2jONW84fdthrLFu2jIcffpiPPvoIay0nn3wyZ5xxBuvXr+fBBx/ktNNO48orr+Rvf/sb3/zmN3n22Wf57LPPMMZQWloKwPe//33+53/+h9NPP51t27Yxc+bMcJ2ptWvX8t5775GYmMif//xnnn76aW699VZ2797N7t27GT9+POXl5bz77ru4XC7eeOMNfvazn/Gvf/2L2267jY8//pi77roLgEceeSTc7u9+97vMnTuXuXPn8tBDD/G9732P5557DggGV++99x6fffYZF1xwAbNnz+bJJ59k5syZ/PznP8fv94cDSBERETk2cR1wxcp7773HrFmzwquzX3zxxbz77rv07t2b0047DYDLL7+cv/71r/zgBz8gISGBb33rW5x33nmcd955ALzxxhusXbs2fM3y8nIqKyuB4DRgYmIiAF/96lc5++yzufXWW3n66aeZPXs2AGVlZcydO5eNGzdijKGhoeGI7f7www/597//DcAVV1zBjTfeGN530UUX4XA4GDp0KHv37gVgwoQJXHnllTQ0NHDRRRcxevTo9nzbREREjltxHXAdaSSqNdEsoHlwuQBjTHAE6p33+feLr/DE08/y+z/9hUf++SJ+f4DFixeTkJDQ4jqNgRxAr169yM7OZtWqVSxcuJB7770XgJtvvplp06bx7LPPUlhY2O6V4r1eb/hray0AU6ZMYdGiRbz00kvMmzePH/7wh8yZM6ddzyMiInI8Ug5XG0yePJnnnnuO6upqqqqqePbZZ5k8eTLbtm3jww8/BODJJ5/k9NNPp7Kykt1FBzh16lncdvvvWb92Df6A5fSp07nzzjvD11yxYsUhn+9rX/sav//97ykrK2PkyJFAcISrV69eQPNpw9TUVCoqKlq9zqmnnspTTz0FwBNPPMHkyZMP+zq3bt1KXl4eV199NVdddRXLly8/4vdGREREWlLA1QZjx45l3rx5TJw4kZNPPpmrrrqKzMxMBg0axN13382QIUMoKSnhuuuuo6KigjmXXsLss0/j0vPP5i9//hNul4P5v/s/Pv74Y0aOHMnQoUPDI1etmT17Nk899RRf/epXw9tuvPFGfvrTnzJmzJhmdzNOmzaNtWvXhpPmm7rzzjt5+OGHGTlyJI8//jh33HHHYV9nQUEBo0aNYsyYMSxcuJDvf//7bfyOiYiIHN9M4/RRZzR+/Hj78ccfN9u2bt06hgwZ0uZrxmJNvm3F1VTX+xjcPQ2AjXsrcDsd9MtJPsKZ0qizrKXY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jjuYPn06X/va15q1w+v1Yq0Nn+t2u0lKSiIpKYm0tLTwdqfTyd13383MmTObnV9QUEBCQkL4OJfLRWJiIqmpqTidTpKTk0lMTMTtdrf4Hni9Xrxeb3h708fGmPD2lJQUHA5H+JqZmZmkpqZSV1dHIBBocd2mxyckJJCSkkJqaioVFRV4vV48Hk/4nKbPPW/ePH73u9+16LuEhIRwgAZwxRVXcNddd9GrVy8mTJhAz5492bJlC3fddRdLly4lMzOTefPmhV9D4/fh4HYmJCQwZsyYFs8nX9D6bvFJ/RZ/1Gfx4ahyuKy1O0Of9wHPEszB2huaKiT0uTEBaCfQu8np+aFth9oedxpznbZt28a///1vvvGNbwDBhO933nkHgLfeeouBAweG7lL8Yk5x5syZvPH665SXllJSXMJrr73WLBAqKSnhxRdfZM6cOVRXV+NwODDGUFNT02pbnn/+eWprazlw4AAFBQVMmDChxTEzZ87knnvuoaEhOLK2YcMGqqqqmDJlCgsXLsTv97N7927eDgWCTU2aNIlFixaxZcsWIJj0D4SDoIOlp6eTmZkZzs96/PHHOeOMM47wHT12brc7/HpmzJjBM888E+6X4uJitm7d2up5Z5xxBsuXL+f+++8PTyeWl5eTnJxMeno6e/fu5b///W/E2ysiIse3I45wGWOSAYe1tiL09dnAbcALwFzg9tDn50OnvABcb4x5imCCfJm1drcx5lXgt00S5c8GfhrRV9NBLrnkEg4cOIDb7ebuu+8Oj6Dcf//9fP/738fn85GQkMC9996HBVatWMYvHn+YBx54gKysLH7+i1/wjfOm43QYfvnLX5KVlRW+9m233cbPf/5zHA4HM2fO5O6772bEiBFce+21rbZl5MiRTJs2jf3793PzzTfTs2dPNmzY0OyYq666isLCQsaOHYu1ltzcXJ577jlmzZrFW2+9xdChQ+nTpw+nnHJKi+vn5uayYMECLr74YgKBAN26deP111/n/PPPZ/bs2Tz//PPceeedzc559NFHufbaa6murmbAgAE8/PDD7fuGt+Kaa65h5MiRjB07lieeeIJf//rXnH322QQCgXC/9O3bt8V5TqeT8847j0ceeSRckmPUqFGMGTOGwYMH07t3b0477bSIt1dERI5v5kjFN40xAwiOakEwQHvSWvsbY0w28DTQB9gKfNVaW2yCVT3vIpgQXw1801rbWEriSuBnoWv9xlp72Hfi8ePH26Y1kAoKC9i6dWurb6RHqyMLnzb4A6zbXU7PjERyUrzh7dZaVu8so1taAt3TEtp0bQjepdg0cb0rq6ioaDGtF0vr1q1jyJAhsW5Gp6Zpjvikfos/6rPOwxizrEk1h2aOOMJlrd0MjGpl+wFgRivbLfCdQ1zrIeChIz3noUztN5V1NesY0q/tb3Qd+cYdCAWzrVWaN8ao0ryIiMhxIq6W9ok3gUDws9O03Gdo/1qK8+fPb98FREREpENoaZ8oCo9wHby2D8HaXBrgEhEROT4o4IqiQ00pAppSFBEROY4o4IqiQOBwAVewmqyIiIh0fXGVw3XpM5dSXl5O2pq0Nl+jwdeA2+U+pnOemv1Um57LH4qoHK2EtQYTHgETERGRrk0jXG3Qr18/RowYwejRo8PrKEKw4OZZZ53FwIEDOeuss8JFQp0HjXA9+uijzDx1NFMnjArXgmpcpmf48OH87W9/Cx97zTXXsHz58g54VTBv3jyeeeYZIFi7a+3atYc8tqCggA8++CD8+N577+Wxxx5rdxt27drF7Nmzj3jcb3/723Y/19Fouoi3iIhIWyngaqO3336bFStWNHszvv3225kxYwYbN25kxowZ3PGn/wOaTykWFxdz66238sx/3+LZ1wq49dZbKSkp4dVXX+X0009n1apVPP744wCsXLkSv9/P2LFj29xOn8/XpvMeeOABhg4desj9Bwdc1157LXPmzGnTczXVs2fPcNB3OG0JuPx+f1uaJCIi0m4KuCLo+eefZ+7cuQDMnTuX/774HwzBfK1Gr776KmeddRaZmdmkpWdw1lln8corr+B2u6murqahoSGcTH/zzTfzq1/96pDPN3/+fK644gpOOeUUBg4cyP333w8Eg6HJkydzwQUXMHToUPx+PzfccAMTJkxg5MiR4UWyrbVcf/31DBo0iDPPPDO8NA40H9l55ZVXGDt2LKNGjWLGjBkUFhZy77338uc//5nRo0fz7rvvMn/+fP7whz8AsGLFCiZNmsTIkSOZNWsWJSUl4Wv+5Cc/YeLEiZx00knh5X+aKiwsZPjw4QA88sgjXHzxxZxzzjmMHj2aG2+8EYCbbrqJmpoaRo8ezWWXXQbA3//+dyZOnMjo0aP59re/HQ6uUlJS+NGPfsSoUaP43e9+x1e+8pXwcxUUFHDeeecBcN111zF+/HiGDRvGLbfccsS+FhERORYKuNrAGMPZZ5/NuHHjWLBgQXj73r176dGjBwDdu3enaN8+HI5gkdNGO3fupHfv3hgDAQv5+fns3LmTs846i8LCQiZNmsT3vvc9XnjhBcaOHUvPnj0P25ZVq1bx1ltv8eGHH3Lbbbexa9cuAJYvX84dd9zBhg0bePDBB0lPT2fp0qUsXbqU+++/ny1btvDss8+yfv161q5dy2OPPdZsxKpRUVERV199Nf/6179YuXIl//znP+nXrx/XXnst//M//8OKFSuYPHlys3PmzJnD//7v/7Jq1SpGjBjBrbfeGt7n8/lYsmQJf/nLX5ptP5QVK1awcOFCFi9ezMKFC9m+fTu33347iYmJrFixgieeeIJ169axcOFC3n//fVasWIHT6eSJJ54AoKqqipNPPpmVK1dy00038dFHH1FVVQXAwoULw+sp/uY3v+Hjjz9m1apVvPPOO6xateqIbRMRETlacZU031m899579OrVi3379nHWWWcxePBgpkyZ0uyYxmryrd2h2LjfNlZGBVwuF08++SQADQ0NzJw5k+eff54f/vCHbNu2jTlz5nDBBRe0uM6FF15IYmIiiYmJTJs2jSVLlpCRkcHEiRPp378/AK+99hqrVq0KT9WVlZWxceNGFi1axNe//nWcTic9e/Zk+vTpLa6/ePFipkyZEr5W03UfW1NWVkZpaWl4weq5c+c2G1W6+OKLARg3bhyFhYWHvRYEF6ZOT0+noqKCoUOHsnXrVnr37t3smDfffJNly5aFF+6uqamhW7duQHDtxEsuuQQIfo/POecc/vOf/zB79mxeeuklfv/73wPw9NNPs2DBAnw+H7t372bt2rWMHDnyiO0TERE5Ggq42qBXr14AdOvWjVmzZrFkyRKmTJlCXl4eu3fvpkePHuzevZvsnNwWAVevXr0oKCgIFj4FduzY0WINrL/97W/MmTOHxYsXk56ezsKFC5k+fXqrAZdpZdkggOTk5PA2ay133nknM2fObHbsyy+/3NZvQZt5vcE1JZ1O51HllzUef7hzrLXMnTuX3/3udy32JSQk4HQ6w48vvfRS7rrrLrKyshg/fjypqals2bKFP/zhDyxdupTMzEzmzZtHbW1tW16eiIhIqzSleIyqqqqoqKgIf/3aa6+Fc44uuOCC8F2Hjz76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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "def plot_prob_forecasts(ts_entry, forecast_entry):\n",
+ " plot_length = len(ts_entry)\n",
+ " prediction_intervals = (50.0,98.0)\n",
+ " legend = [\"observations\", \"median prediction\"] + [f\"{k}% prediction interval\" for k in prediction_intervals][::-1]\n",
+ "\n",
+ " fig, ax = plt.subplots(1, 1, figsize=(10, 7))\n",
+ " ts_entry[-plot_length:].plot(ax=ax) # plot the time series\n",
+ " forecast_entry.plot(prediction_intervals=prediction_intervals, color='g')\n",
+ " plt.grid(which=\"both\")\n",
+ " plt.legend(legend, loc=\"upper left\")\n",
+ " plt.show()\n",
+ "plot_prob_forecasts(gluon_dataset['y'], forecast_entry_inv)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 22,
+ "id": "developmental-reset",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "Running evaluation: 100%|██████████| 1/1 [00:00<00:00, 5.33it/s]\n"
+ ]
+ }
+ ],
+ "source": [
+ "evaluator = Evaluator(quantiles=[0.1, 0.5, 0.9])\n",
+ "agg_metrics, item_metrics = evaluator(iter(tss_inv), iter([forecast_entry_inv]), num_series=len(test_ds))\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 23,
+ "id": "noted-emergency",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "{'MSE': 2491714.285714286,\n",
+ " 'abs_error': 31313.115234375,\n",
+ " 'abs_target_sum': 4846.515625,\n",
+ " 'abs_target_mean': 230.78645833333334,\n",
+ " 'seasonal_error': 86.95233050847457,\n",
+ " 'MASE': 17.148484885072776,\n",
+ " 'MAPE': 165.68347366521184,\n",
+ " 'sMAPE': 1.4677628931523303,\n",
+ " 'OWA': nan,\n",
+ " 'MSIS': 524.5641392017257,\n",
+ " 'QuantileLoss[0.1]': 49122.942187500004,\n",
+ " 'Coverage[0.1]': 1.0,\n",
+ " 'QuantileLoss[0.5]': 31313.116149902344,\n",
+ " 'Coverage[0.5]': 1.0,\n",
+ " 'QuantileLoss[0.9]': 7017.614105224608,\n",
+ " 'Coverage[0.9]': 1.0,\n",
+ " 'RMSE': 1578.516482560219,\n",
+ " 'NRMSE': 6.839727486438176,\n",
+ " 'ND': 6.460954148760224,\n",
+ " 'wQuantileLoss[0.1]': 10.13572347401645,\n",
+ " 'wQuantileLoss[0.5]': 6.460954337664463,\n",
+ " 'wQuantileLoss[0.9]': 1.4479710060203526,\n",
+ " 'mean_absolute_QuantileLoss': 29151.22414754232,\n",
+ " 'mean_wQuantileLoss': 6.014882939233755,\n",
+ " 'MAE_Coverage': 0.5}"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "agg_metrics"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "integrated-advancement",
+ "metadata": {},
+ "source": [
+ "# Residual"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
+ "id": "beneficial-situation",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "#get the mean for all the samples\n",
+ "f1 = forecast_entry_val_inv.samples.mean(axis=0)\n",
+ "f2 = forecast_entry_inv.samples.mean(axis=0)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "id": "killing-guatemala",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "original_values=list(gluon_dataset['y'])\n",
+ "orig_test = original_values[:len(original_values)-prediction_length]\n",
+ "test_extract=original_values[-prediction_length:]\n",
+ "val_extract=orig_test[-prediction_length:]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "id": "acquired-scientist",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "valandtest_orig=list()\n",
+ "valandtest_pred=list()\n",
+ "for a1 in val_extract:\n",
+ " valandtest_orig.append(a1)\n",
+ "\n",
+ "for b1 in test_extract:\n",
+ " valandtest_orig.append(b1)\n",
+ " \n",
+ "for a2 in f1:\n",
+ " valandtest_pred.append(a2)\n",
+ "\n",
+ "for b2 in f2:\n",
+ " valandtest_pred.append(b2)\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "id": "meaning-seeker",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "Text(0.5, 1.0, 'Residuals')"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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7t27r7FtpUqVWL58Of/3f//Hjz/+mP+6PD///HOhjp1n4sSJa9TQvHlzAP7617/y2WefATBmzJh1RrzKzMykXr161KtXj9q1azN//nx+/fXXLaoBWOPnmKdmzZr89NNPPProo/z888+sWLFijed//vnn/F+OG1Oc/2aS0tPXc77OX25Rb8tHK8nNhX/+E3bYAa6/vjgqk0pfXg+YBQsW0KlTp3Wez/uSNC+kzZkzh8cff5w99tiD5s2bc8YZZ1C5cuUi11G5cmWuuuoqatSowXHHHUe/fv0A8s8n8r5UB7jsssuoWbMmRx99NC1btswPmkWxoXOPBx54gK+//ppFixblt9jB5p9r1a9fn4cffpisrCzmzZtHTk5Oofeh8sUwVwratWvH2LFjWbVqFaNGjcpvZapevXp+F8tJkyZxww03rPGfsqDCdnUs2MVvxx13zF9e39x9I0eOXCfgFeXYefK+iYK4dXB99fz222/rvG6XXVZPR1itWrUi1QBr/nLL++Px/PPP57cars/a4W59ivvfTFJ6umDwBfnLWzoYSk4OXHIJvPsuPPQQrDWTjZQ21vd3vaCFCxcCcOaZZzJhwgQ+/PDDNVqU6tWrR48ePYo8aEidOnXyez5ttdVW+etXrVoFrHmeVPDcqOA5ypbKzc1lxox4KuWtt96aWrVq8csvv3DllVeu84V5ns0578jNzeWaa67ZYJdMzzsqJrtZloKjjz46/1umgQMHMmHCBADatm1L9erVgXgY2rxQ0KtXL8aMGcOoUaO2+Jh169bNX549e3b+8pw5c9bZtuAUCf3792fs2LG89NJL691vCGGzayg4r17BlrWC9aw99x6wxjdyhTnehrz44ov5y4ceeiiw+j3XqVOHgQMH8tlnn9GrV69C7be4/80kVUyrVsF550H//vEolldemXRF0pbL+7u+xx575HcRLHgbNGgQEH+h3bNnT4YPH84jjzzCDTfcQN26dZkzZ84al1ls6XnAplr3Cp4nFQx2RekJlOf111/PD20HH3wwlSpVYsyYMfnrunTpwujRo8nKymL77bdf5/Ubes/Tpk3LD3InnngiH3zwAVlZWesd3E4Vh2GuFGy//fa0bt0aiJv185rV80axhNXfFAFss802rFy5kj59+mzxMZs3b57/jdRrr73Gjz/+yK+//soLL7ywzrbZ2dlA/MujRo0aLFq0iMcee2y9+61ZsyYQX3u2ePHijdaw33775dcwePBgpk6dym+//Zbf1QFYY1Sp4pSbm8tPP/3EbbfdxsSJEwHYe++981tC837elStXpkaNGsyZM4f+/fuvd195I5BOmzZtjW/OivvfTFLFs2IFnHVWfJ3cfffBrbdCMXyHJSUm70vTKVOmMGDAABYvXszSpUsZN24ct912W/7cayNGjGDQoEEsXLiQli1b0q5du/xWsYI9ewpz3lEYLVuunl2rX79++ZfBFOx+WVi///47gwcPzv9yuEqVKlxyySXAmucMNWrUICcnhwEDBuQPyFJQ3nsGmDp1av5ywX1Ur16dqlWr8umnn+ZfB6iKyW6WpaRdu3Z88skn+Y9r1KjBYYcdlv+4bdu2PPfccwD5F/bmXTy7JWrWrMm5555Lv379mDVrFmeccQbAer8Batu2LSNHjmTFihWceeaZGz32PvvswzfffMMvv/ySP9H5I488kh9WC9pmm2244ooruO+++5g9e/Yao0oCHHPMMflD7hanbt260a1btzXW7brrrtx33335g9G0bduWyZMnM3v2bE488URgw+957733ZsyYMUycODH/32zw4MHF/m8mqWJZtgxOPx2GDoXevW2RU/nwt7/9LX9Kgt69e69zSUPeIGjffffdBifFPuSQQ/KXC3PeURgnnXQSTz31FNOnT2fQoEH5LYZ16tQp9CAoBadNyFO1alVuu+02WrSIr6Nt06YNVapUITs7m65du9K1a1e22247atasyaJFi9Z47T777JO/nHfudPHFF5OZmUmjRo2YMWNGfs0hBBo0aMAvv/xS6J+Bygdb5krJkUceSZUqq7Nz27Zt1+jDfdBBB3HjjTfSsGFDttpqKw466KA1uhlsiczMTDp27Mj222+ffwHw+qYDOPnkk/MHHdl66605+uij1zuFAcS/pI844og1vjXamLPOOosHHniAVq1aUaNGDapVq8auu+7KVVddtcFjFIeqVatSp04dWrVqxXXXXUf//v3XuG7v4osv5qyzzqJWrVpsu+22nHLKKVy/gREHbrjhBg488MB1JnYviX8zSRXDkiXQvj288w707WuQU/mx00478eyzz3LaaadRv359qlSpQu3atdlvv/3o3Llzfstd69atadeuHQ0bNqR69erUqFGDXXfdlcsuu4zOnTvn76+w5x2bq0qV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/HE8mt+wYfHPFaBu3bg149hj4/tGjYrn51naogg+/BAeeADefDP+zHbqFH8JUFytx7m58ZcL3bvHYXqPPeJQd845pdMKm5sb/26YPz/+wmX+/NW3TT0u+EVQcdhmmzVDWsH7Ro3SJ+SWFMOcJKkklakwF0I4HngIqAz0i6Lo3g1tW1bDXBTF3bg2FtJ++SXu8rb2wCQhxCGgQYM4uDVtujq07bOP14zlmTAhDnVvvBH/TDp1isNlXmvB+loTNnd57dbIEGCXXdYNa7vvHrc4FPYatFWr1h/yJk9ec7CXrbZa3Zq3fHkc3GbMWP1848brBremTbestWnWLHjvvTjcvftu3CUR4s9dXqvdEUckE+ALIzs7HtTkgQfgs8+gTh244op4uoEddyyZY+bmwuDBcaj74ov4c3HzzXHX48KGulWr4p/9zJnx74i17+fOXR3Ofvtt44Ox1KgBO+wQ///Iu+U93n77+PNVpUrcOlvwfn3rNvZc7drxFxJloTtjWWWYkySVpDIT5kIIlYEpQDtgOvAZcE4URV+tb/uyGOZGjIATT1yzm1GeOnXigLaxW/368UmSNs+4cXGoGzIkPpnMO8kseMK5vhPTjT2/005rBrZmzUovxMydGwe7tUNetWpxF8i80NayZfx5Kgm5uXG31rxg9+GHsGJFfPJ/xBGrw90f/lByJ/DZ2fH1mHm3RYvWv7z2448/joPy7rvHrbYdO5begC+5ufGXC927x1827LprHOouuCB+ftasDYe0vPs5c9ad1y6E+PdCgwbxoELrC2drP95hB+dNK0sMc5KkklSWwtwhwO1RFB2XenwjQBRF96xv+7IY5n78ER59dN2QttNOnlyVpNzc8netV1mxdCmMGrU63H35Zby+UqXVoweufdvYc+vbdtmyNUNZYboBbr113M14223j4H3FFfF1cUl17YuiuGtnt24wfnwcJpcuXXe7vMGG8lrhN3S/446lO3iOit9do+7KX775iJsTrESSVB6VpTB3BnB8FEWXph5fABwcRdEVBbbJBDIBGjdufOBPP/1UavVJikcqHD48vp4zb2TBotxyc+PAkxfIatbc/OVttim7QSeK4hbjd96JW9TWDmn16pXd2iVJUvrYWJgrc6caURT1BfpC3DKXcDlShbPzznDRRUlXUfaFAO3bxzdJkqQklHbHtRnALgUe75xaJ0mSJEkqhNIOc58BzUMIzUII1YCzgTdKuQZJkiRJSnul2s0yiqLsEMIVwDDiqQmejKLoy9KsQZKk4uQAKJKkpJT6NXNRFL0NvF3ax5UkqSQMnjw4f9kwJ0kqTQ72LkmSJElpyDAnSZIkSWnIMCdJkiRJacgwJ0mSJElpyDAnSZIkSWnIMCdJkiRJacgwJ0mSJElpyDAnSZIkSWnIMCdJkiRJaShEUZR0DRsUQpgD/JR0HetRF5ibdBFSCfNzrorAz7nKOz/jqgjK++e8SRRF9db3RJkOc2VVCCEriqKMpOuQSpKfc1UEfs5V3vkZV0VQkT/ndrOUJEmSpDRkmJMkSZKkNGSY2zJ9ky5AKgV+zlUR+DlXeednXBVBhf2ce82cJEmSJKUhW+YkSZIkKQ0Z5gophHB8COGbEMLUEMI/k65HKg4hhCdDCLNDCJMKrKsdQhgeQvg2db9DkjVKRRFC2CWE8H4I4asQwpchhKtT6/2cq9wIIVQPIYwNIUxMfc67pdY3CyF8mjp3eSmEUC3pWqWiCCFUDiFMCCG8lXpcYT/jhrlCCCFUBvoAJwB7A+eEEPZOtiqpWDwNHL/Wun8CI6Ioag6MSD2W0lU28I8oivYG2gB/T/3+9nOu8mQFcHQURS2B/YHjQwhtgH8BvaIo2h34DbgkuRKlYnE18HWBxxX2M26YK5zWwNQoir6Pomgl8CJwSsI1SUUWRdEoYP5aq08B+qeW+wOnlmZNUnGKomhmFEXjU8uLiE8CGuHnXOVIFFucelg1dYuAo4GBqfV+zpXWQgg7AycB/VKPAxX4M26YK5xGwLQCj6en1knlUf0oimamlmcB9ZMsRiouIYSmQCvgU/ycq5xJdT/7HJgNDAe+AxZEUZSd2sRzF6W7B4H/A3JTj+tQgT/jhjlJmxTFw9469K3SXghhW+BV4JooihYWfM7PucqDKIpyoijaH9iZuEfRXslWJBWfEEJ7YHYUReOSrqWsqJJ0AWlmBrBLgcc7p9ZJ5dGvIYQGURTNDCE0IP6WV0pbIYSqxEHuuSiKBqVW+zlXuRRF0YIQwvvAIUCtEEKVVMuF5y5KZ4cBfw4hnAhUB7YDHqICf8ZtmSucz4DmqRFzqgFnA28kXJNUUt4ALkwtXwi8nmAtUpGkrql4Avg6iqKeBZ7yc65yI4RQL4RQK7W8NdCO+PrQ94EzUpv5OVfaiqLoxiiKdo6iqCnxefjIKIrOowJ/xp00vJBS3wQ8CFQGnoyi6K5kK5KKLoTwAnAkUBf4FegKvAa8DDQGfgLOiqJo7UFSpLQQQmgLfAj8j9XXWdxEfN2cn3OVCyGE/YgHf6hM/IX9y1EUdQ8h7Eo8aFttYAJwfhRFK5KrVCq6EMKRwPVRFLWvyJ9xw5wkSZIkpSG7WUqSJElSGjLMSZIkSVIaMsxJkiRJUhoyzEmSJElSGjLMSZIkSVIaMsxJkiRJUhoyzEmSJElSGjLMSZIkSVIa+n8wBzbYprD6QAAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "residuals = abs(np.array(valandtest_pred)-np.array(valandtest_orig))\n",
+ "residuals_df=pd.DataFrame()\n",
+ "residuals_df['residuals']=residuals\n",
+ "#residuals_df['ds']=prophet_dataset2['ds']\n",
+ "\n",
+ "f, ax = plt.subplots(figsize=(15,7))\n",
+ "ax.text(x=len(val_extract)/2 -10,y=400, s='Validation Data', color='black', fontsize=15, fontweight='bold', alpha=0.8)\n",
+ "ax.text(x=len(val_extract)+10,y=400, s='Testing Data', color='black', fontsize=15, fontweight='bold', alpha=0.8)\n",
+ "ax.axvline(x=len(val_extract), c='green', lw=3, alpha=0.8, ls='--')\n",
+ "residuals_df.plot(kind='line', y='residuals', color='blue', label='Residual',figsize=(15, 6),ax=ax)\n",
+ "plt.title(\"Residuals\")"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "empirical-bristol",
+ "metadata": {},
+ "source": [
+ "# Save the Predictions"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "id": "awful-static",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "predictions_df=pd.DataFrame()\n",
+ "predictions_df['original'] = valandtest_orig\n",
+ "predictions_df['predictions'] = valandtest_pred\n",
+ "predictions_df.to_csv(Path(\"Predictions/SquareRoot.csv\"),index=False)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "improving-cowboy",
+ "metadata": {},
+ "outputs": [],
+ "source": []
+ }
+ ],
+ "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.7.10"
+ },
+ "toc-autonumbering": true
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/standardization.ipynb b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/standardization.ipynb
new file mode 100644
index 0000000000000000000000000000000000000000..1bcb5b37204562f66afdaa4a255b5ebad86c6d6c
--- /dev/null
+++ b/time-series-experiments/gluonts_activeeon/benchmark/genome/deployment-reconfiguration-range-1-to-10_ 2021-02-18 to 2021-02-18/gluon_deepar/notebooks/estimatedremainingtimecontext/standardization.ipynb
@@ -0,0 +1,1947 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "id": "split-argentina",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "%matplotlib inline\n",
+ "import mxnet as mx\n",
+ "from mxnet import gluon\n",
+ "import numpy as np\n",
+ "import pandas as pd\n",
+ "import matplotlib.pyplot as plt\n",
+ "import json\n",
+ "from gluonts.dataset.common import ListDataset\n",
+ "from datetime import datetime, timedelta\n",
+ "from gluonts.model.simple_feedforward import SimpleFeedForwardEstimator\n",
+ "from gluonts.model.deepar import DeepAREstimator\n",
+ "from gluonts.mx.trainer import Trainer\n",
+ "from gluonts.evaluation.backtest import make_evaluation_predictions\n",
+ "from gluonts.evaluation import Evaluator\n",
+ "from gluonts.dataset.util import to_pandas\n",
+ "from gluonts.dataset.field_names import FieldName\n",
+ "from gluonts.model.forecast import SampleForecast\n",
+ "from pandas import Timestamp\n",
+ "import itertools\n",
+ "from gluonts.model.estimator import GluonEstimator\n",
+ "from numpy import array"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "stock-excess",
+ "metadata": {},
+ "source": [
+ "# Data Loading"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 2,
+ "id": "suitable-teaching",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "filename='EstimatedRemainingTimeContext'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 3,
+ "id": "mature-mumbai",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "dataset= pd.read_csv(filename + \".csv\")\n",
+ "X= dataset[['name','time', 'countryCode', 'ipAddress', 'level',\n",
+ " 'producer']]\n",
+ "y= dataset.iloc[:,6]\n",
+ "#changing the names of the attributes\n",
+ "gluon_dataset= pd.DataFrame()\n",
+ "gluon_dataset['ds'] = pd.to_datetime(X[\"time\"])\n",
+ "gluon_dataset['y']=y\n",
+ "gluon_dataset['ds'] = gluon_dataset['ds'].dt.tz_convert(None)\n",
+ "gluon_dataset_copy=gluon_dataset.copy()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "id": "limited-arkansas",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " ds | \n",
+ " y | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2021-02-18 11:31:12.752 | \n",
+ " 4050.000000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2021-02-18 11:31:32.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2021-02-18 11:32:02.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2021-02-18 11:32:32.752 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2021-02-18 11:33:02.752 | \n",
+ " 4153.250000 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 135 | \n",
+ " 2021-02-18 12:38:32.752 | \n",
+ " 110.500000 | \n",
+ "
\n",
+ " \n",
+ " 136 | \n",
+ " 2021-02-18 12:39:02.752 | \n",
+ " 60.156250 | \n",
+ "
\n",
+ " \n",
+ " 137 | \n",
+ " 2021-02-18 12:39:32.752 | \n",
+ " 19.140625 | \n",
+ "
\n",
+ " \n",
+ " 138 | \n",
+ " 2021-02-18 12:40:02.752 | \n",
+ " 5.359375 | \n",
+ "
\n",
+ " \n",
+ " 139 | \n",
+ " 2021-02-18 12:40:32.752 | \n",
+ " 0.765625 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
140 rows × 2 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " ds y\n",
+ "0 2021-02-18 11:31:12.752 4050.000000\n",
+ "1 2021-02-18 11:31:32.752 4045.500000\n",
+ "2 2021-02-18 11:32:02.752 4045.500000\n",
+ "3 2021-02-18 11:32:32.752 4045.500000\n",
+ "4 2021-02-18 11:33:02.752 4153.250000\n",
+ ".. ... ...\n",
+ "135 2021-02-18 12:38:32.752 110.500000\n",
+ "136 2021-02-18 12:39:02.752 60.156250\n",
+ "137 2021-02-18 12:39:32.752 19.140625\n",
+ "138 2021-02-18 12:40:02.752 5.359375\n",
+ "139 2021-02-18 12:40:32.752 0.765625\n",
+ "\n",
+ "[140 rows x 2 columns]"
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "gluon_dataset_copy"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 5,
+ "id": "involved-joint",
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:3: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " This is separate from the ipykernel package so we can avoid doing imports until\n",
+ "/usr/local/lib/python3.7/site-packages/ipykernel_launcher.py:5: SettingWithCopyWarning: \n",
+ "A value is trying to be set on a copy of a slice from a DataFrame\n",
+ "\n",
+ "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n",
+ " \"\"\"\n"
+ ]
+ }
+ ],
+ "source": [
+ "for i in range(0,len(gluon_dataset_copy)):\n",
+ " ds=gluon_dataset_copy['ds'][i]\n",
+ " gluon_dataset_copy['ds'][i+1]=ds + timedelta(seconds=60)\n",
+ " ds=gluon_dataset['ds'][i]\n",
+ " gluon_dataset['ds'][i+1]=ds + timedelta(seconds=60)"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "failing-darkness",
+ "metadata": {},
+ "source": [
+ "# Data Transformation"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "id": "confirmed-count",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ },
+ {
+ "data": {
+ "image/png": "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\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "from sklearn.preprocessing import StandardScaler\n",
+ "transformer = StandardScaler()\n",
+ "gluon_dataset_copy['y_orig']=gluon_dataset_copy['y']\n",
+ "data = array(gluon_dataset_copy['y']).reshape(len(gluon_dataset_copy['y']), 1)\n",
+ "transformer.fit(data)\n",
+ "transformed = transformer.transform(data)\n",
+ "gluon_dataset_copy['y']=transformed\n",
+ "\n",
+ "\n",
+ "#transformed = cube_root_transformation(gluon_dataset_copy['y'])\n",
+ "#gluon_dataset_copy['y']=transformed\n",
+ "\n",
+ "#plot before transformation\n",
+ "pd.plotting.register_matplotlib_converters()\n",
+ "f, ax = plt.subplots(figsize=(15,7))\n",
+ "gluon_dataset_copy.plot(kind='line', x='ds', y='y_orig', color='blue', label='Train', ax=ax)\n",
+ "plt.title(filename)\n",
+ "plt.show()\n",
+ "\n",
+ "#plot after transformation\n",
+ "pd.plotting.register_matplotlib_converters()\n",
+ "f, ax = plt.subplots(figsize=(15,7))\n",
+ "gluon_dataset_copy.plot(kind='line', x='ds', y='y', color='blue', label='Train', ax=ax)\n",
+ "#test.plot(kind='line', x='ds', y='y', color='red', label='Test', ax=ax)\n",
+ "plt.title(filename + \"_transformed using Square Root Transformation\")\n",
+ "plt.show()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "id": "advisory-craps",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " ds | \n",
+ " y | \n",
+ " y_orig | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " 0 | \n",
+ " 2021-02-18 11:31:12.752 | \n",
+ " 1.906777 | \n",
+ " 4050.000000 | \n",
+ "
\n",
+ " \n",
+ " 1 | \n",
+ " 2021-02-18 11:32:12.752 | \n",
+ " 1.903170 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 2 | \n",
+ " 2021-02-18 11:33:12.752 | \n",
+ " 1.903170 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 3 | \n",
+ " 2021-02-18 11:34:12.752 | \n",
+ " 1.903170 | \n",
+ " 4045.500000 | \n",
+ "
\n",
+ " \n",
+ " 4 | \n",
+ " 2021-02-18 11:35:12.752 | \n",
+ " 1.989524 | \n",
+ " 4153.250000 | \n",
+ "
\n",
+ " \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ "
\n",
+ " \n",
+ " 135 | \n",
+ " 2021-02-18 13:46:12.752 | \n",
+ " -1.250452 | \n",
+ " 110.500000 | \n",
+ "
\n",
+ " \n",
+ " 136 | \n",
+ " 2021-02-18 13:47:12.752 | \n",
+ " -1.290799 | \n",
+ " 60.156250 | \n",
+ "
\n",
+ " \n",
+ " 137 | \n",
+ " 2021-02-18 13:48:12.752 | \n",
+ " -1.323670 | \n",
+ " 19.140625 | \n",
+ "
\n",
+ " \n",
+ " 138 | \n",
+ " 2021-02-18 13:49:12.752 | \n",
+ " -1.334715 | \n",
+ " 5.359375 | \n",
+ "
\n",
+ " \n",
+ " 139 | \n",
+ " 2021-02-18 13:50:12.752 | \n",
+ " -1.338396 | \n",
+ " 0.765625 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
140 rows × 3 columns
\n",
+ "
"
+ ],
+ "text/plain": [
+ " ds y y_orig\n",
+ "0 2021-02-18 11:31:12.752 1.906777 4050.000000\n",
+ "1 2021-02-18 11:32:12.752 1.903170 4045.500000\n",
+ "2 2021-02-18 11:33:12.752 1.903170 4045.500000\n",
+ "3 2021-02-18 11:34:12.752 1.903170 4045.500000\n",
+ "4 2021-02-18 11:35:12.752 1.989524 4153.250000\n",
+ ".. ... ... ...\n",
+ "135 2021-02-18 13:46:12.752 -1.250452 110.500000\n",
+ "136 2021-02-18 13:47:12.752 -1.290799 60.156250\n",
+ "137 2021-02-18 13:48:12.752 -1.323670 19.140625\n",
+ "138 2021-02-18 13:49:12.752 -1.334715 5.359375\n",
+ "139 2021-02-18 13:50:12.752 -1.338396 0.765625\n",
+ "\n",
+ "[140 rows x 3 columns]"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "gluon_dataset_copy"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "special-language",
+ "metadata": {},
+ "source": [
+ "# Splitting Data into Training and Testing"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 8,
+ "id": "direct-recorder",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "gluon_dataset_copy=gluon_dataset_copy.set_index('ds')\n",
+ "gluon_dataset=gluon_dataset.set_index('ds')\n",
+ "validation_time = \"2021-02-18 13:10:00\"\n",
+ "train_time = \"2021-02-18 13:30:00\"\n",
+ "test_time = \"2021-02-18 13:50:12\"\n",
+ "freq='1min'"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 9,
+ "id": "planned-stations",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "validation_ds = ListDataset([{\"start\":gluon_dataset_copy.index[0], \n",
+ " \"target\":gluon_dataset_copy.y[:train_time]}],\n",
+ " freq=freq\n",
+ " )\n",
+ "train_ds = ListDataset([{\"start\":gluon_dataset_copy.index[0], \n",
+ " \"target\":gluon_dataset_copy.y[:validation_time]}],\n",
+ " freq=freq\n",
+ " )\n",
+ "test_ds = ListDataset([{\"start\":gluon_dataset_copy.index[0],\n",
+ " \"target\":gluon_dataset_copy.y[:test_time]}],\n",
+ " freq=freq\n",
+ " )\n",
+ "test_orig_ds = ListDataset([{\"start\":gluon_dataset.index[0],\n",
+ " \"target\":gluon_dataset.y[:test_time]}],\n",
+ " freq=freq\n",
+ " )"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 10,
+ "id": "incredible-campus",
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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WRY225FBShUpERERiYyI3LVnjLEDy4FTgIcty1rayD7XANcAZGRkHDVjN4Qnrmxs+oC2sCyLUMgiGPBTVhYEIBAIEbKsiJ+rK6utre0Un2d1dfVxP3fSMuXl5frs4lgsXd9Rdas/rIiR9nRGxcWjAMjPX9GwLZaucbyJSJCyLKsWGGWMSQUWGGOGW5a16ph9ngCegPBde8fePVBYWBjxO79CIQurtASPx01SUnjiywqrGqummsTERMwRXX7Sep3lrj2Px9MwU72cHN3xE99i6vqmpgLETns6obqP8KjPMKaucZyJ6F17lmUVA4uAcyN53NYK1fXh2Y4ITPVvuD169xITE0+80xEeeOABhg0bxpw5c47avmLFCt54442TPv+uXbu45JJLTvp1rVVQUMCNN97YYecTERGJNW2uSBljMoCAZVnFxhgvcA7w2za3LAIaC1L1f7UswrfwRdEjjzzCwoULycrKOmr7ihUrKCgoYPbs2ce9JhgM4nA0ftl69+7N/Pnz26WtjbVj7NixjB07tlN064mIiLSHSFSkegGLjDErgU+Aty3Lei0Cx22z2rqyk/3I6Q/qklRjd+49++yz5OXlMWrUKK699lpqa2uBcKXpZz/7GSNHjmTChAns3bsXgC1btjBx4kRGjBjB7bff3mQ77r33XoYPH87w4cO5//77Afjud7/L5s2bOe+887jvvvsa9vX7/fz85z/nhRdeYNSoUbzwwgvcddddzJ07l0mTJjF37ly2bt3KlClTGDNmDGPGjOHDDz8EYOvWrQwfPhyAp59+mosuuohzzz2XIUOGcOuttzbatttuu42cnBxyc3O5+eabAdi/fz8XX3wx48aNY9y4cSxZsgTguHbk5+c3LMJcUVHBVVddRV5eHqNHj+aVV14BYPXq1Q2faW5uLhs2bGjycxIREelsInHX3kogsgNPfvADaMHacyfiClkMCtTicdphzGi4//6GItSxOaqwsJAXXniBJUuW4HQ6ue6663juuee4/PLLqaioYMKECcybN49bb72VJ598kttvv52bbrqJ733ve1x++eU8/PDDjbZh+fLl/PnPf2bp0qVYlsX48eOZOnUqjz32GG+++SaLFi0iPT39yza7XPzyl7+koKCAhx56CAgHmDVr1rB48WK8Xi+VlZW8/fbbeDweNmzYwGWXXUZBQcFx516xYgWfffYZ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