Skip to content

Instantly share code, notes, and snippets.

@Lay4U
Created February 21, 2020 02:00
Show Gist options
  • Select an option

  • Save Lay4U/4471f4ed9b80a615de42be54fdaaa4ed to your computer and use it in GitHub Desktop.

Select an option

Save Lay4U/4471f4ed9b80a615de42be54fdaaa4ed to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "2Pmxv2ioyCRw"
},
"source": [
"##### Copyright 2019 The TensorFlow Authors."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"cellView": "form",
"colab": {},
"colab_type": "code",
"id": "b-2ShX25yNWf"
},
"outputs": [],
"source": [
"#@title Licensed under the Apache License, Version 2.0 (the \"License\");\n",
"# you may not use this file except in compliance with the License.\n",
"# You may obtain a copy of the License at\n",
"#\n",
"# https://www.apache.org/licenses/LICENSE-2.0\n",
"#\n",
"# Unless required by applicable law or agreed to in writing, software\n",
"# distributed under the License is distributed on an \"AS IS\" BASIS,\n",
"# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
"# See the License for the specific language governing permissions and\n",
"# limitations under the License."
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "pa49bUnKyRgF"
},
"source": [
"# Time series forecasting"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "11Ilg92myRcw"
},
"source": [
"<table class=\"tfo-notebook-buttons\" align=\"left\">\n",
" <td>\n",
" <a target=\"_blank\" href=\"https://www.tensorflow.org/tutorials/structured_data/time_series\"><img src=\"https://www.tensorflow.org/images/tf_logo_32px.png\" />View on TensorFlow.org</a>\n",
" </td>\n",
" <td>\n",
" <a target=\"_blank\" href=\"https://colab.research.google.com/github/tensorflow/docs/blob/master/site/en/tutorials/structured_data/time_series.ipynb\"><img src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" />Run in Google Colab</a>\n",
" </td>\n",
" <td>\n",
" <a target=\"_blank\" href=\"https://github.com/tensorflow/docs/blob/master/site/en/tutorials/structured_data/time_series.ipynb\"><img src=\"https://www.tensorflow.org/images/GitHub-Mark-32px.png\" />View source on GitHub</a>\n",
" </td>\n",
" <td>\n",
" <a href=\"https://storage.googleapis.com/tensorflow_docs/docs/site/en/tutorials/structured_data/time_series.ipynb\"><img src=\"https://www.tensorflow.org/images/download_logo_32px.png\" />Download notebook</a>\n",
" </td>\n",
"</table>"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "GU8C5qm_4vZb"
},
"source": [
"This tutorial is an introduction to time series forecasting using Recurrent Neural Networks (RNNs). This is covered in two parts: first, you will forecast a univariate time series, then you will forecast a multivariate time series."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "7rZnJaGTWQw0"
},
"outputs": [],
"source": [
"from __future__ import absolute_import, division, print_function, unicode_literals\n",
"try:\n",
" # %tensorflow_version only exists in Colab.\n",
" %tensorflow_version 2.x\n",
"except Exception:\n",
" pass\n",
"import tensorflow as tf\n",
"\n",
"import matplotlib as mpl\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import os\n",
"import pandas as pd\n",
"\n",
"mpl.rcParams['figure.figsize'] = (8, 6)\n",
"mpl.rcParams['axes.grid'] = False"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "TokBlnUhWFw9"
},
"source": [
"## The weather dataset\n",
"This tutorial uses a <a href=\"https://www.bgc-jena.mpg.de/wetter/\" class=\"external\">[weather time series dataset</a> recorded by the <a href=\"https://www.bgc-jena.mpg.de\" class=\"external\">Max Planck Institute for Biogeochemistry</a>.\n",
"\n",
"This dataset contains 14 different features such as air temperature, atmospheric pressure, and humidity. These were collected every 10 minutes, beginning in 2003. For efficiency, you will use only the data collected between 2009 and 2016. This section of the dataset was prepared by François Chollet for his book [Deep Learning with Python](https://www.manning.com/books/deep-learning-with-python)."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "xyv_i85IWInT"
},
"outputs": [],
"source": [
"zip_path = tf.keras.utils.get_file(\n",
" origin='https://storage.googleapis.com/tensorflow/tf-keras-datasets/jena_climate_2009_2016.csv.zip',\n",
" fname='jena_climate_2009_2016.csv.zip',\n",
" extract=True)\n",
"csv_path, _ = os.path.splitext(zip_path)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "TX6uGeeeWIkG"
},
"outputs": [],
"source": [
"df = pd.read_csv(csv_path)"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "VdbOWXiTWM2T"
},
"source": [
"Let's take a glance at the data."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "ojHE-iCCWIhz"
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Date Time</th>\n",
" <th>p (mbar)</th>\n",
" <th>T (degC)</th>\n",
" <th>Tpot (K)</th>\n",
" <th>Tdew (degC)</th>\n",
" <th>rh (%)</th>\n",
" <th>VPmax (mbar)</th>\n",
" <th>VPact (mbar)</th>\n",
" <th>VPdef (mbar)</th>\n",
" <th>sh (g/kg)</th>\n",
" <th>H2OC (mmol/mol)</th>\n",
" <th>rho (g/m**3)</th>\n",
" <th>wv (m/s)</th>\n",
" <th>max. wv (m/s)</th>\n",
" <th>wd (deg)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>01.01.2009 00:10:00</td>\n",
" <td>996.52</td>\n",
" <td>-8.02</td>\n",
" <td>265.40</td>\n",
" <td>-8.90</td>\n",
" <td>93.3</td>\n",
" <td>3.33</td>\n",
" <td>3.11</td>\n",
" <td>0.22</td>\n",
" <td>1.94</td>\n",
" <td>3.12</td>\n",
" <td>1307.75</td>\n",
" <td>1.03</td>\n",
" <td>1.75</td>\n",
" <td>152.3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>01.01.2009 00:20:00</td>\n",
" <td>996.57</td>\n",
" <td>-8.41</td>\n",
" <td>265.01</td>\n",
" <td>-9.28</td>\n",
" <td>93.4</td>\n",
" <td>3.23</td>\n",
" <td>3.02</td>\n",
" <td>0.21</td>\n",
" <td>1.89</td>\n",
" <td>3.03</td>\n",
" <td>1309.80</td>\n",
" <td>0.72</td>\n",
" <td>1.50</td>\n",
" <td>136.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>01.01.2009 00:30:00</td>\n",
" <td>996.53</td>\n",
" <td>-8.51</td>\n",
" <td>264.91</td>\n",
" <td>-9.31</td>\n",
" <td>93.9</td>\n",
" <td>3.21</td>\n",
" <td>3.01</td>\n",
" <td>0.20</td>\n",
" <td>1.88</td>\n",
" <td>3.02</td>\n",
" <td>1310.24</td>\n",
" <td>0.19</td>\n",
" <td>0.63</td>\n",
" <td>171.6</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>01.01.2009 00:40:00</td>\n",
" <td>996.51</td>\n",
" <td>-8.31</td>\n",
" <td>265.12</td>\n",
" <td>-9.07</td>\n",
" <td>94.2</td>\n",
" <td>3.26</td>\n",
" <td>3.07</td>\n",
" <td>0.19</td>\n",
" <td>1.92</td>\n",
" <td>3.08</td>\n",
" <td>1309.19</td>\n",
" <td>0.34</td>\n",
" <td>0.50</td>\n",
" <td>198.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>01.01.2009 00:50:00</td>\n",
" <td>996.51</td>\n",
" <td>-8.27</td>\n",
" <td>265.15</td>\n",
" <td>-9.04</td>\n",
" <td>94.1</td>\n",
" <td>3.27</td>\n",
" <td>3.08</td>\n",
" <td>0.19</td>\n",
" <td>1.92</td>\n",
" <td>3.09</td>\n",
" <td>1309.00</td>\n",
" <td>0.32</td>\n",
" <td>0.63</td>\n",
" <td>214.3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Date Time p (mbar) T (degC) Tpot (K) Tdew (degC) rh (%) \\\n",
"0 01.01.2009 00:10:00 996.52 -8.02 265.40 -8.90 93.3 \n",
"1 01.01.2009 00:20:00 996.57 -8.41 265.01 -9.28 93.4 \n",
"2 01.01.2009 00:30:00 996.53 -8.51 264.91 -9.31 93.9 \n",
"3 01.01.2009 00:40:00 996.51 -8.31 265.12 -9.07 94.2 \n",
"4 01.01.2009 00:50:00 996.51 -8.27 265.15 -9.04 94.1 \n",
"\n",
" VPmax (mbar) VPact (mbar) VPdef (mbar) sh (g/kg) H2OC (mmol/mol) \\\n",
"0 3.33 3.11 0.22 1.94 3.12 \n",
"1 3.23 3.02 0.21 1.89 3.03 \n",
"2 3.21 3.01 0.20 1.88 3.02 \n",
"3 3.26 3.07 0.19 1.92 3.08 \n",
"4 3.27 3.08 0.19 1.92 3.09 \n",
"\n",
" rho (g/m**3) wv (m/s) max. wv (m/s) wd (deg) \n",
"0 1307.75 1.03 1.75 152.3 \n",
"1 1309.80 0.72 1.50 136.1 \n",
"2 1310.24 0.19 0.63 171.6 \n",
"3 1309.19 0.34 0.50 198.0 \n",
"4 1309.00 0.32 0.63 214.3 "
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "qfbpcV0MWQzl"
},
"source": [
"As you can see above, an observation is recorded every 10 mintues. This means that, for a single hour, you will have 6 observations. Similarly, a single day will contain 144 (6x24) observations. \n",
"\n",
"Given a specific time, let's say you want to predict the temperature 6 hours in the future. In order to make this prediction, you choose to use 5 days of observations. Thus, you would create a window containing the last 720(5x144) observations to train the model. Many such configurations are possible, making this dataset a good one to experiment with.\n",
"\n",
"The function below returns the above described windows of time for the model to train on. The parameter `history_size` is the size of the past window of information. The `target_size` is how far in the future does the model need to learn to predict. The `target_size` is the label that needs to be predicted."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "7AoxQuTrWIbi"
},
"outputs": [],
"source": [
"def univariate_data(dataset, start_index, end_index, history_size, target_size):\n",
" data = []\n",
" labels = []\n",
"\n",
" start_index = start_index + history_size\n",
" if end_index is None:\n",
" end_index = len(dataset) - target_size\n",
"\n",
" for i in range(start_index, end_index):\n",
" indices = range(i-history_size, i)\n",
" # Reshape data from (history_size,) to (history_size, 1)\n",
" data.append(np.reshape(dataset[indices], (history_size, 1)))\n",
" labels.append(dataset[i+target_size])\n",
" return np.array(data), np.array(labels)"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "qoFJZmXBaxCc"
},
"source": [
"In both the following tutorials, the first 300,000 rows of the data will be the training dataset, and there remaining will be the validation dataset. This amounts to ~2100 days worth of training data."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "ia-MPAHxbInX"
},
"outputs": [],
"source": [
"TRAIN_SPLIT = 300000"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "EowWDtaNnH1y"
},
"source": [
"Setting seed to ensure reproducibility."
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "-x-GgENynHdx"
},
"outputs": [],
"source": [
"tf.random.set_seed(13)"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "8YEwr-NoWUpV"
},
"source": [
"## Part 1: Forecast a univariate time series\n",
"First, you will train a model using only a single feature (temperature), and use it to make predictions for that value in the future.\n",
"\n",
"Let's first extract only the temperature from the dataset."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "nbdcnm1_WIY9"
},
"outputs": [
{
"data": {
"text/plain": [
"Date Time\n",
"01.01.2009 00:10:00 -8.02\n",
"01.01.2009 00:20:00 -8.41\n",
"01.01.2009 00:30:00 -8.51\n",
"01.01.2009 00:40:00 -8.31\n",
"01.01.2009 00:50:00 -8.27\n",
"Name: T (degC), dtype: float64"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"uni_data = df['T (degC)']\n",
"uni_data.index = df['Date Time']\n",
"uni_data.head()"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "aQB-46MyWZMm"
},
"source": [
"Let's observe how this data looks across time."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "ftOExwAqWXSU"
},
"outputs": [
{
"data": {
"text/plain": [
"array([<matplotlib.axes._subplots.AxesSubplot object at 0x000001C8BCCDBDA0>],\n",
" dtype=object)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"uni_data.plot(subplots=True)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "ejSEiDqBWXQa"
},
"outputs": [],
"source": [
"uni_data = uni_data.values"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "-eFckdUUHWmT"
},
"source": [
"It is important to scale features before training a neural network. Standardization is a common way of doing this scaling by subtracting the mean and dividing by the standard deviation of each feature.You could also use a `tf.keras.utils.normalize` method that rescales the values into a range of [0,1]."
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "mxbIic5TMlxx"
},
"source": [
"Note: The mean and standard deviation should only be computed using the training data."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "Eji6njXvHusN"
},
"outputs": [],
"source": [
"uni_train_mean = uni_data[:TRAIN_SPLIT].mean()\n",
"uni_train_std = uni_data[:TRAIN_SPLIT].std()"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "8Gob1YJYH0cH"
},
"source": [
"Let's standardize the data."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "BO55yRD6H0Dx"
},
"outputs": [],
"source": [
"uni_data = (uni_data-uni_train_mean)/uni_train_std"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "gn8A_nrccKtn"
},
"source": [
"Let's now create the data for the univariate model. For part 1, the model will be given the last 20 recorded temperature observations, and needs to learn to predict the temperature at the next time step. "
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "aJJ-T49vWXOZ"
},
"outputs": [],
"source": [
"univariate_past_history = 20\n",
"univariate_future_target = 0\n",
"\n",
"x_train_uni, y_train_uni = univariate_data(uni_data, 0, TRAIN_SPLIT,\n",
" univariate_past_history,\n",
" univariate_future_target)\n",
"x_val_uni, y_val_uni = univariate_data(uni_data, TRAIN_SPLIT, None,\n",
" univariate_past_history,\n",
" univariate_future_target)"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "aWpVMENsdp0N"
},
"source": [
"This is what the `univariate_data` function returns."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "feDd95XFdz5H"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Single window of past history\n",
"[[-1.99766294]\n",
" [-2.04281897]\n",
" [-2.05439744]\n",
" [-2.0312405 ]\n",
" [-2.02660912]\n",
" [-2.00113649]\n",
" [-1.95134907]\n",
" [-1.95134907]\n",
" [-1.98492663]\n",
" [-2.04513467]\n",
" [-2.08334362]\n",
" [-2.09723778]\n",
" [-2.09376424]\n",
" [-2.09144854]\n",
" [-2.07176515]\n",
" [-2.07176515]\n",
" [-2.07639653]\n",
" [-2.08913285]\n",
" [-2.09260639]\n",
" [-2.10418486]]\n",
"\n",
" Target temperature to predict\n",
"-2.1041848598100876\n"
]
}
],
"source": [
"print ('Single window of past history')\n",
"print (x_train_uni[0])\n",
"print ('\\n Target temperature to predict')\n",
"print (y_train_uni[0])"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "hni3Jt9OMR1_"
},
"source": [
"Now that the data has been created, let's take a look at a single example. The information given to the network is given in blue, and it must predict the value at the red cross."
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "qVukM9dRipop"
},
"outputs": [],
"source": [
"def create_time_steps(length):\n",
" return list(range(-length, 0))"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "QQeGvh7cWXMR"
},
"outputs": [],
"source": [
"def show_plot(plot_data, delta, title):\n",
" labels = ['History', 'True Future', 'Model Prediction']\n",
" marker = ['.-', 'rx', 'go']\n",
" time_steps = create_time_steps(plot_data[0].shape[0])\n",
" if delta:\n",
" future = delta\n",
" else:\n",
" future = 0\n",
"\n",
" plt.title(title)\n",
" for i, x in enumerate(plot_data):\n",
" if i:\n",
" plt.plot(future, plot_data[i], marker[i], markersize=10,\n",
" label=labels[i])\n",
" else:\n",
" plt.plot(time_steps, plot_data[i].flatten(), marker[i], label=labels[i])\n",
" plt.legend()\n",
" plt.xlim([time_steps[0], (future+5)*2])\n",
" plt.xlabel('Time-Step')\n",
" return plt"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "Pd05iV-UWXKL"
},
"outputs": [
{
"data": {
"text/plain": [
"<module 'matplotlib.pyplot' from 'C:\\\\Users\\\\HL_ML\\\\Anaconda3\\\\envs\\\\me2\\\\lib\\\\site-packages\\\\matplotlib\\\\pyplot.py'>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"show_plot([x_train_uni[0], y_train_uni[0]], 0, 'Sample Example')"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "b5rUJ_2YMWzG"
},
"source": [
"### Baseline\n",
"Before proceeding to train a model, let's first set a simple baseline. Given an input point, the baseline method looks at all the history and predicts the next point to be the average of the last 20 observations."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "P9nYWcxMMWnr"
},
"outputs": [],
"source": [
"def baseline(history):\n",
" return np.mean(history)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "KMcdFYKQMWlm"
},
"outputs": [
{
"data": {
"text/plain": [
"<module 'matplotlib.pyplot' from 'C:\\\\Users\\\\HL_ML\\\\Anaconda3\\\\envs\\\\me2\\\\lib\\\\site-packages\\\\matplotlib\\\\pyplot.py'>"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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7uHUU0/ljTfeoKioqG0r2AsvvJB9+/YBUFRUxPTp0znttNOOWzb35ZdfbmuJqK2t5cYbb6SgoIDCwkKeeuop7rrrLurr65kxYwbXXXdd2zPBN3D5jjvuYNq0aRQUFPD444+33fPDH/4wV111FVOmTOG6666jLyeOKcELO8rqmDiibwbYtZqT78U5eGu3avEi/eUPG/7wgZp7e40tjfx+w+97/YxrrrmGpUuXcvToUTZs2MCpp57adu1b3/oWM2fOZMOGDfzgBz/gE5/4BADf/va3OeOMM3jrrbe47LLL2L17N+Bbwe3xxx/n9ddfZ/369cTFxbFkyZJux/Lcc89RUFAAQF1dHdOmTePNN9/k1FNP5T//8z958sknKSoq4qabbuLuu+8G4MYbb+TBBx/kjTfe6PC+3/3ud8nMzGTjxo1s2LCBc845h8WLF5OSksL69es/EOPTTz/N+vXrefvtt1m5ciV33HFH2xeKt956i//+7//m3Xffpbi4mNdff73b76+n+mWhGxm4Gppa2F1xhIsL+maKXKvpeVnEeYyiXZV8+ERtGijSH2obasNaLpjCwkJ27tzJH//4RxYuXHjctddee42nnnoKgHPOOYfy8nKqq6t55ZVXePrppwG4+OKL8Xp9C2K99NJLFBUVtW01W19fz4gRXf97MX/+fOLi4igsLOR73/seAHFxcXz0ox8FYOvWrWzatInzzz8f8DXZjx49murqaqqqqjj77LMBWLRoEStWfHBMwsqVK1m6dGnbcWu8HXnttde49tpriYuLY+TIkZx99tmsXbuWjIwM5s6d27Ye/4wZM9i5cydnnHFGl++xN5TgY9zuijqaW1zYl6htb0hSPCeNTtdIepF+lJaYRk1DTbfKheKyyy7jq1/9Ki+//DLl5eVt54M1P7euhRFsTQznHDfccAP33Xdfj56/atUqhg07fpXz5ORk4uLi2u578sknf6CWXlVV1a21OXq6hkdnze6tm+KA70tIR9vchoOa6GNc6xr04dxFriOzx3pZX1JFU3NL14VFJGTXF15Pgqfz5acTPAksKlzUaZmu3HTTTdxzzz1tzeOtzjrrrLbm65dffplhw4aRkZFx3PkVK1ZQWen74n/uuefy5JNPcvCgb+fwiooKdu3aFVJsACeeeCJlZWVtCb6xsZF33nmHrKwsMjMzee211wA67A644IIL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\n",
"text/plain": [
"<Figure size 576x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"show_plot([x_train_uni[0], y_train_uni[0], baseline(x_train_uni[0])], 0,\n",
" 'Baseline Prediction Example')"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "067m6t8cMakb"
},
"source": [
"Let's see if you can beat this baseline using a recurrent neural network."
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "H4crpOcoMlSe"
},
"source": [
"### Recurrent neural network\n",
"\n",
"A Recurrent Neural Network (RNN) is a type of neural network well-suited to time series data. RNNs process a time series step-by-step, maintaining an internal state summarizing the information they've seen so far. For more details, read the [RNN tutorial](https://www.tensorflow.org/tutorials/sequences/recurrent). In this tutorial, you will use a specialized RNN layer called Long Short Term Memory ([LSTM](https://www.tensorflow.org/versions/r2.0/api_docs/python/tf/keras/layers/LSTM))\n",
"\n",
"Let's now use `tf.data` to shuffle, batch, and cache the dataset."
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "kk-evkrmMWh9"
},
"outputs": [],
"source": [
"BATCH_SIZE = 256\n",
"BUFFER_SIZE = 10000\n",
"\n",
"train_univariate = tf.data.Dataset.from_tensor_slices((x_train_uni, y_train_uni))\n",
"train_univariate = train_univariate.cache().shuffle(BUFFER_SIZE).batch(BATCH_SIZE).repeat()\n",
"\n",
"val_univariate = tf.data.Dataset.from_tensor_slices((x_val_uni, y_val_uni))\n",
"val_univariate = val_univariate.batch(BATCH_SIZE).repeat()"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "n2AmKkyVS5Ht"
},
"source": [
"The following visualisation should help you understand how the data is represented after batching.\n",
"\n",
"![Time Series](images/time_series.png)"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "4nagdTRNfPuZ"
},
"source": [
"You will see the LSTM requires the input shape of the data it is being given."
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"colab": {},
"colab_type": "code",
"id": "IDbpHosCMWZO"
},
"outputs": [],
"source": [
"simple_lstm_model = tf.keras.models.Sequential([\n",
" tf.keras.layers.LSTM(8, input_shape=x_train_uni.shape[-2:]),\n",
" tf.keras.layers.Dense(1)\n",
"])\n",
"\n",
"simple_lstm_model.compile(optimizer='adam', loss='mae')"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "n2AmKkyVS5Ht"
},
"source": [
"here is my code"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train for 200 steps, validate for 50 steps\n",
"Epoch 1/100\n",
"200/200 [==============================] - 3s 14ms/step - loss: 0.4075 - val_loss: 0.1351\n",
"Epoch 2/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.1118 - val_loss: 0.0360\n",
"Epoch 3/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0490 - val_loss: 0.0289\n",
"Epoch 4/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0444 - val_loss: 0.0257\n",
"Epoch 5/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0299 - val_loss: 0.0235\n",
"Epoch 6/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0317 - val_loss: 0.0224\n",
"Epoch 7/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0287 - val_loss: 0.0206\n",
"Epoch 8/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0263 - val_loss: 0.0200\n",
"Epoch 9/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0254 - val_loss: 0.0182\n",
"Epoch 10/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0228 - val_loss: 0.0173\n",
"Epoch 11/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0196 - val_loss: 0.0165\n",
"Epoch 12/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0222 - val_loss: 0.0162\n",
"Epoch 13/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0200 - val_loss: 0.0153\n",
"Epoch 14/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0194 - val_loss: 0.0148\n",
"Epoch 15/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0194 - val_loss: 0.0143\n",
"Epoch 16/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0176 - val_loss: 0.0146\n",
"Epoch 17/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0167 - val_loss: 0.0142\n",
"Epoch 18/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0191 - val_loss: 0.0136\n",
"Epoch 19/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0170 - val_loss: 0.0135\n",
"Epoch 20/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0170 - val_loss: 0.0129\n",
"Epoch 21/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0168 - val_loss: 0.0127\n",
"Epoch 22/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0150 - val_loss: 0.0126\n",
"Epoch 23/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0155 - val_loss: 0.0126\n",
"Epoch 24/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0178 - val_loss: 0.0123\n",
"Epoch 25/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0156 - val_loss: 0.0122\n",
"Epoch 26/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0156 - val_loss: 0.0122\n",
"Epoch 27/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0159 - val_loss: 0.0120\n",
"Epoch 28/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0140 - val_loss: 0.0123\n",
"Epoch 29/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0151 - val_loss: 0.0122\n",
"Epoch 30/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0169 - val_loss: 0.0120\n",
"Epoch 31/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0150 - val_loss: 0.0124\n",
"Epoch 32/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0152 - val_loss: 0.0121\n",
"Epoch 33/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0155 - val_loss: 0.0122\n",
"Epoch 34/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0137 - val_loss: 0.0121\n",
"Epoch 35/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0151 - val_loss: 0.0119\n",
"Epoch 36/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0160 - val_loss: 0.0120\n",
"Epoch 37/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0150 - val_loss: 0.0120\n",
"Epoch 38/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0154 - val_loss: 0.0119\n",
"Epoch 39/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0155 - val_loss: 0.0119\n",
"Epoch 40/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0135 - val_loss: 0.0120\n",
"Epoch 41/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0155 - val_loss: 0.0128\n",
"Epoch 42/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0151 - val_loss: 0.0119\n",
"Epoch 43/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0151 - val_loss: 0.0121\n",
"Epoch 44/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0157 - val_loss: 0.0119\n",
"Epoch 45/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0152 - val_loss: 0.0119\n",
"Epoch 46/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0134 - val_loss: 0.0119\n",
"Epoch 47/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0155 - val_loss: 0.0122\n",
"Epoch 48/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0149 - val_loss: 0.0119\n",
"Epoch 49/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0151 - val_loss: 0.0121\n",
"Epoch 50/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0158 - val_loss: 0.0123\n",
"Epoch 51/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0151 - val_loss: 0.0126\n",
"Epoch 52/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0137 - val_loss: 0.0120\n",
"Epoch 53/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0159 - val_loss: 0.0119\n",
"Epoch 54/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0148 - val_loss: 0.0120\n",
"Epoch 55/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0151 - val_loss: 0.0121\n",
"Epoch 56/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0155 - val_loss: 0.0120\n",
"Epoch 57/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0146 - val_loss: 0.0120\n",
"Epoch 58/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0141 - val_loss: 0.0129\n",
"Epoch 59/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0164 - val_loss: 0.0122\n",
"Epoch 60/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0148 - val_loss: 0.0122\n",
"Epoch 61/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0151 - val_loss: 0.0119\n",
"Epoch 62/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0153 - val_loss: 0.0120\n",
"Epoch 63/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0142 - val_loss: 0.0121\n",
"Epoch 64/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0145 - val_loss: 0.0123\n",
"Epoch 65/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0169 - val_loss: 0.0119\n",
"Epoch 66/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0147 - val_loss: 0.0121\n",
"Epoch 67/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0150 - val_loss: 0.0121\n",
"Epoch 68/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0153 - val_loss: 0.0124\n",
"Epoch 69/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0138 - val_loss: 0.0124\n",
"Epoch 70/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0149 - val_loss: 0.0120\n",
"Epoch 71/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0165 - val_loss: 0.0119\n",
"Epoch 72/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0148 - val_loss: 0.0121\n",
"Epoch 73/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0152 - val_loss: 0.0122\n",
"Epoch 74/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0153 - val_loss: 0.0120\n",
"Epoch 75/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0136 - val_loss: 0.0121\n",
"Epoch 76/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0150 - val_loss: 0.0120\n",
"Epoch 77/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0160 - val_loss: 0.0121\n",
"Epoch 78/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0148 - val_loss: 0.0119\n",
"Epoch 79/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0154 - val_loss: 0.0119\n",
"Epoch 80/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0152 - val_loss: 0.0120\n",
"Epoch 81/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0135 - val_loss: 0.0119\n",
"Epoch 82/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0152 - val_loss: 0.0124\n",
"Epoch 83/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0152 - val_loss: 0.0119\n",
"Epoch 84/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0150 - val_loss: 0.0121\n",
"Epoch 85/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0157 - val_loss: 0.0122\n",
"Epoch 86/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0152 - val_loss: 0.0119\n",
"Epoch 87/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0133 - val_loss: 0.0119\n",
"Epoch 88/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0155 - val_loss: 0.0123\n",
"Epoch 89/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0149 - val_loss: 0.0120\n",
"Epoch 90/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0150 - val_loss: 0.0120\n",
"Epoch 91/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0156 - val_loss: 0.0120\n",
"Epoch 92/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0150 - val_loss: 0.0124\n",
"Epoch 93/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0136 - val_loss: 0.0122\n",
"Epoch 94/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0157 - val_loss: 0.0119\n",
"Epoch 95/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0147 - val_loss: 0.0119\n",
"Epoch 96/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0150 - val_loss: 0.0122\n",
"Epoch 97/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0156 - val_loss: 0.0119\n",
"Epoch 98/100\n",
"200/200 [==============================] - 1s 4ms/step - loss: 0.0146 - val_loss: 0.0119\n",
"Epoch 99/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0139 - val_loss: 0.0121\n",
"Epoch 100/100\n",
"200/200 [==============================] - 1s 3ms/step - loss: 0.0163 - val_loss: 0.0121\n"
]
},
{
"data": {
"text/plain": [
"<tensorflow.python.keras.callbacks.History at 0x1c8bd220f98>"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"EVALUATION_INTERVAL = 200\n",
"EPOCHS = 100\n",
"\n",
"simple_lstm_model.fit(train_univariate, epochs=EPOCHS,\n",
" steps_per_epoch=EVALUATION_INTERVAL,\n",
" validation_data=val_univariate, validation_steps=50)"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [],
"source": [
"model = simple_lstm_model"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [],
"source": [
"y = x_val_uni"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [],
"source": [
"a = x_val_uni[-20:, :, :]"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [],
"source": [
"tmp = model.predict(a)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [],
"source": [
"a = x_val_uni[-20:, :, :]\n",
"g = []\n",
"for i in range(20):\n",
" tmp = model.predict(a.reshape(-1, 20, 1)) #predict a new value n times.\n",
"# print(tmp.shape, i)\n",
" a = np.append(a, tmp) #insert predicted value\n",
"# print(a.shape, i)\n",
" a = a[20:] #remove first \n",
"# print(a.shape, i)\n",
" g = np.append(g, tmp[-1])\n",
"# print(tmp[-1], i)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x1ca84b68160>]"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(g)"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x1ca83b83e80>]"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 576x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(y_val_uni[-20:])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"collapsed_sections": [],
"name": "time_series.ipynb",
"private_outputs": true,
"toc_visible": true
},
"kernelspec": {
"display_name": "me2",
"language": "python",
"name": "me2"
},
"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.6.10"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment