Format: application/octet-stream
1 {
2 "cells": [
3 {
4 "cell_type": "code",
5 "execution_count": 1,
6 "metadata": {
7 "id": "BOjujz601HcS"
8 },
9 "outputs": [
10 {
11 "name": "stdout",
12 "output_type": "stream",
13 "text": [
14 "2.3.0\n"
15 ]
16 }
17 ],
18 "source": [
19 "import tensorflow as tf\n",
20 "import numpy as np\n",
21 "import matplotlib.pyplot as plt\n",
22 "print(tf.__version__)"
23 ]
24 },
25 {
26 "cell_type": "code",
27 "execution_count": 2,
28 "metadata": {
29 "id": "Zswl7jRtGzkk"
30 },
31 "outputs": [],
32 "source": [
33 "def plot_series(time, series, format=\"-\", start=0, end=None):\n",
34 " plt.plot(time[start:end], series[start:end], format)\n",
35 " plt.xlabel(\"Time\")\n",
36 " plt.ylabel(\"Value\")\n",
37 " plt.grid(True)\n",
38 "\n",
39 "def trend(time, slope=0):\n",
40 " return slope * time\n",
41 "\n",
42 "def seasonal_pattern(season_time):\n",
43 " \"\"\"Just an arbitrary pattern, you can change it if you wish\"\"\"\n",
44 " return np.where(season_time < 0.4,\n",
45 " np.cos(season_time * 2 * np.pi),\n",
46 " 1 / np.exp(3 * season_time))\n",
47 "\n",
48 "def seasonality(time, period, amplitude=1, phase=0):\n",
49 " \"\"\"Repeats the same pattern at each period\"\"\"\n",
50 " season_time = ((time + phase) % period) / period\n",
51 " return amplitude * seasonal_pattern(season_time)\n",
52 "\n",
53 "def noise(time, noise_level=1, seed=None):\n",
54 " rnd = np.random.RandomState(seed)\n",
55 " return rnd.randn(len(time)) * noise_level\n",
56 "\n",
57 "time = np.arange(4 * 365 + 1, dtype=\"float32\")\n",
58 "baseline = 10\n",
59 "series = trend(time, 0.1) \n",
60 "baseline = 10\n",
61 "amplitude = 20\n",
62 "slope = 0.09\n",
63 "noise_level = 5\n",
64 "\n",
65 "# Create the series\n",
66 "series = baseline + trend(time, slope) + seasonality(time, period=365, amplitude=amplitude)\n",
67 "# Update with noise\n",
68 "series += noise(time, noise_level, seed=42)\n",
69 "\n",
70 "split_time = 1000\n",
71 "time_train = time[:split_time]\n",
72 "x_train = series[:split_time]\n",
73 "time_valid = time[split_time:]\n",
74 "x_valid = series[split_time:]\n",
75 "\n",
76 "window_size = 20\n",
77 "batch_size = 32\n",
78 "shuffle_buffer_size = 1000"
79 ]
80 },
81 {
82 "cell_type": "code",
83 "execution_count": 3,
84 "metadata": {
85 "id": "tVH2XEt4yA4m"
86 },
87 "outputs": [
88 {
89 "data": {
90 "image/png": "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\n",
91 "text/plain": [
92 "<Figure size 720x432 with 1 Axes>"
93 ]
94 },
95 "metadata": {
96 "needs_background": "light"
97 },
98 "output_type": "display_data"
99 }
100 ],
101 "source": [
102 "plt.figure(figsize=(10, 6))\n",
103 "plot_series(time_valid, x_valid)\n"
104 ]
105 },
106 {
107 "cell_type": "code",
108 "execution_count": 4,
109 "metadata": {
110 "id": "4sTTIOCbyShY"
111 },
112 "outputs": [],
113 "source": [
114 "def windowed_dataset(series, window_size, batch_size, shuffle_buffer):\n",
115 " dataset = tf.data.Dataset.from_tensor_slices(series)\n",
116 " dataset = dataset.window(window_size + 1, shift=1, drop_remainder=True)\n",
117 " dataset = dataset.flat_map(lambda window: window.batch(window_size + 1))\n",
118 " dataset = dataset.shuffle(shuffle_buffer).map(lambda window: (window[:-1], window[-1]))\n",
119 " dataset = dataset.batch(batch_size).prefetch(1)\n",
120 " return dataset"
121 ]
122 },
123 {
124 "cell_type": "code",
125 "execution_count": 5,
126 "metadata": {
127 "id": "TW-vT7eLYAdb"
128 },
129 "outputs": [
130 {
131 "name": "stdout",
132 "output_type": "stream",
133 "text": [
134 "WARNING:tensorflow:AutoGraph could not transform <function windowed_dataset.<locals>.<lambda> at 0x000001926D65FF70> and will run it as-is.\n",
135 "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
136 "Cause: module 'gast' has no attribute 'Index'\n",
137 "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n",
138 "WARNING: AutoGraph could not transform <function windowed_dataset.<locals>.<lambda> at 0x000001926D65FF70> and will run it as-is.\n",
139 "Please report this to the TensorFlow team. When filing the bug, set the verbosity to 10 (on Linux, `export AUTOGRAPH_VERBOSITY=10`) and attach the full output.\n",
140 "Cause: module 'gast' has no attribute 'Index'\n",
141 "To silence this warning, decorate the function with @tf.autograph.experimental.do_not_convert\n"
142 ]
143 },
144 {
145 "data": {
146 "text/plain": [
147 "<tensorflow.python.keras.callbacks.History at 0x1926e89fcd0>"
148 ]
149 },
150 "execution_count": 5,
151 "metadata": {},
152 "output_type": "execute_result"
153 }
154 ],
155 "source": [
156 "dataset = windowed_dataset(x_train, window_size, batch_size, shuffle_buffer_size)\n",
157 "\n",
158 "\n",
159 "model = tf.keras.models.Sequential([\n",
160 " tf.keras.layers.Dense(10, input_shape=[window_size], activation=\"relu\"), \n",
161 " tf.keras.layers.Dense(10, activation=\"relu\"), \n",
162 " tf.keras.layers.Dense(1)\n",
163 "])\n",
164 "\n",
165 "model.compile(loss=\"mse\", optimizer=tf.keras.optimizers.SGD(lr=1e-6, momentum=0.9))\n",
166 "model.fit(dataset,epochs=100,verbose=0)\n"
167 ]
168 },
169 {
170 "cell_type": "code",
171 "execution_count": null,
172 "metadata": {
173 "id": "efhco2rYyIFF"
174 },
175 "outputs": [],
176 "source": [
177 "forecast = []\n",
178 "for time in range(len(series) - window_size):\n",
179 " forecast.append(model.predict(series[time:time + window_size][np.newaxis]))\n",
180 "\n",
181 "forecast = forecast[split_time-window_size:]\n",
182 "results = np.array(forecast)[:, 0, 0]\n",
183 "\n",
184 "\n",
185 "plt.figure(figsize=(10, 6))\n",
186 "\n",
187 "plot_series(time_valid, x_valid)\n",
188 "plot_series(time_valid, results)"
189 ]
190 },
191 {
192 "cell_type": "code",
193 "execution_count": null,
194 "metadata": {
195 "id": "-kT6j186YO6K"
196 },
197 "outputs": [],
198 "source": [
199 "tf.keras.metrics.mean_absolute_error(x_valid, results).numpy()"
200 ]
201 },
202 {
203 "cell_type": "code",
204 "execution_count": null,
205 "metadata": {
206 "id": "tnCe_nBKu7RB"
207 },
208 "outputs": [],
209 "source": [
210 "dataset = windowed_dataset(x_train, window_size, batch_size, shuffle_buffer_size)\n",
211 "\n",
212 "\n",
213 "model = tf.keras.models.Sequential([\n",
214 " tf.keras.layers.Dense(10, input_shape=[window_size], activation=\"relu\"), \n",
215 " tf.keras.layers.Dense(10, activation=\"relu\"), \n",
216 " tf.keras.layers.Dense(1)\n",
217 "])\n",
218 "\n",
219 "lr_schedule = tf.keras.callbacks.LearningRateScheduler(\n",
220 " lambda epoch: 1e-8 * 10**(epoch / 20))\n",
221 "optimizer = tf.keras.optimizers.SGD(lr=1e-8, momentum=0.9)\n",
222 "model.compile(loss=\"mse\", optimizer=optimizer)\n",
223 "history = model.fit(dataset, epochs=100, callbacks=[lr_schedule], verbose=0)"
224 ]
225 },
226 {
227 "cell_type": "code",
228 "execution_count": null,
229 "metadata": {
230 "id": "2ZaNsM2IgCd_"
231 },
232 "outputs": [],
233 "source": [
234 "lrs = 1e-8 * (10 ** (np.arange(100) / 20))\n",
235 "plt.semilogx(lrs, history.history[\"loss\"])\n",
236 "plt.axis([1e-8, 1e-3, 0, 300])"
237 ]
238 },
239 {
240 "cell_type": "code",
241 "execution_count": null,
242 "metadata": {
243 "id": "QDwW0Q7ovYK1"
244 },
245 "outputs": [],
246 "source": [
247 "window_size = 30\n",
248 "dataset = windowed_dataset(x_train, window_size, batch_size, shuffle_buffer_size)\n",
249 "\n",
250 "model = tf.keras.models.Sequential([\n",
251 " tf.keras.layers.Dense(10, activation=\"relu\", input_shape=[window_size]),\n",
252 " tf.keras.layers.Dense(10, activation=\"relu\"),\n",
253 " tf.keras.layers.Dense(1)\n",
254 "])\n",
255 "\n",
256 "optimizer = tf.keras.optimizers.SGD(lr=8e-6, momentum=0.9)\n",
257 "model.compile(loss=\"mse\", optimizer=optimizer)\n",
258 "history = model.fit(dataset, epochs=500, verbose=0)"
259 ]
260 },
261 {
262 "cell_type": "code",
263 "execution_count": null,
264 "metadata": {
265 "id": "iXBMO1HM9AHX"
266 },
267 "outputs": [],
268 "source": [
269 "loss = history.history['loss']\n",
270 "epochs = range(len(loss))\n",
271 "plt.plot(epochs, loss, 'b', label='Training Loss')\n",
272 "plt.show()"
273 ]
274 },
275 {
276 "cell_type": "code",
277 "execution_count": null,
278 "metadata": {
279 "id": "xakiRU7R7WAo"
280 },
281 "outputs": [],
282 "source": [
283 "# Plot all but the first 10\n",
284 "loss = history.history['loss']\n",
285 "epochs = range(10, len(loss))\n",
286 "plot_loss = loss[10:]\n",
287 "print(plot_loss)\n",
288 "plt.plot(epochs, plot_loss, 'b', label='Training Loss')\n",
289 "plt.show()"
290 ]
291 },
292 {
293 "cell_type": "code",
294 "execution_count": null,
295 "metadata": {
296 "id": "YUOPUeHWvvBG"
297 },
298 "outputs": [],
299 "source": [
300 "forecast = []\n",
301 "for time in range(len(series) - window_size):\n",
302 " forecast.append(model.predict(series[time:time + window_size][np.newaxis]))\n",
303 "\n",
304 "forecast = forecast[split_time-window_size:]\n",
305 "results = np.array(forecast)[:, 0, 0]\n",
306 "\n",
307 "\n",
308 "plt.figure(figsize=(10, 6))\n",
309 "\n",
310 "plot_series(time_valid, x_valid)\n",
311 "plot_series(time_valid, results)"
312 ]
313 },
314 {
315 "cell_type": "code",
316 "execution_count": null,
317 "metadata": {
318 "id": "W-GPjL2wv0yc"
319 },
320 "outputs": [],
321 "source": [
322 "tf.keras.metrics.mean_absolute_error(x_valid, results).numpy()"
323 ]
324 },
325 {
326 "cell_type": "code",
327 "execution_count": null,
328 "metadata": {},
329 "outputs": [],
330 "source": []
331 },
332 {
333 "cell_type": "code",
334 "execution_count": null,
335 "metadata": {},
336 "outputs": [],
337 "source": []
338 },
339 {
340 "cell_type": "code",
341 "execution_count": null,
342 "metadata": {},
343 "outputs": [],
344 "source": []
345 },
346 {
347 "cell_type": "code",
348 "execution_count": null,
349 "metadata": {},
350 "outputs": [],
351 "source": []
352 }
353 ],
354 "metadata": {
355 "colab": {
356 "name": "S+P Week 2 Lesson 3.ipynb",
357 "provenance": [],
358 "toc_visible": true
359 },
360 "kernelspec": {
361 "display_name": "Python 3",
362 "language": "python",
363 "name": "python3"
364 },
365 "language_info": {
366 "codemirror_mode": {
367 "name": "ipython",
368 "version": 3
369 },
370 "file_extension": ".py",
371 "mimetype": "text/x-python",
372 "name": "python",
373 "nbconvert_exporter": "python",
374 "pygments_lexer": "ipython3",
375 "version": "3.8.8"
376 }
377 },
378 "nbformat": 4,
379 "nbformat_minor": 1
380 }
381