MLProjects/kaggle_time_series_air_pass.../.ipynb_checkpoints/model2-checkpoint.ipynb

405 lines
101 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import tensorflow as tf\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"import numpy as np\n",
"from tensorflow.keras.preprocessing.sequence import TimeseriesGenerator\n",
"from matplotlib.pylab import rcParams\n",
"rcParams['figure.figsize'] = 15,6\n",
"from tensorflow import keras\n",
"from tensorflow.keras.layers import LSTM, Dense, Dropout"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Data Prep"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"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>Month</th>\n",
" <th>#Passengers</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1949-01</td>\n",
" <td>112</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1949-02</td>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1949-03</td>\n",
" <td>132</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1949-04</td>\n",
" <td>129</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1949-05</td>\n",
" <td>121</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Month #Passengers\n",
"0 1949-01 112\n",
"1 1949-02 118\n",
"2 1949-03 132\n",
"3 1949-04 129\n",
"4 1949-05 121"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Grab and look at our data\n",
"DATA_LOCATION = 'AirPassengers.csv'\n",
"data = pd.read_csv(DATA_LOCATION)\n",
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"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>#Passengers</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Month</th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1949-01-01</th>\n",
" <td>112</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1949-02-01</th>\n",
" <td>118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1949-03-01</th>\n",
" <td>132</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1949-04-01</th>\n",
" <td>129</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1949-05-01</th>\n",
" <td>121</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" #Passengers\n",
"Month \n",
"1949-01-01 112\n",
"1949-02-01 118\n",
"1949-03-01 132\n",
"1949-04-01 129\n",
"1949-05-01 121"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Convert to DateTime\n",
"data[\"Month\"] = pd.to_datetime(data.Month)\n",
"data.set_index('Month', inplace=True)\n",
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"# Split into Train/Val sets\n",
"split_value = 100\n",
"train, valid = data[:-12], data[-12:]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\TSB\\Miniconda3\\envs\\myenv\\lib\\site-packages\\pandas\\plotting\\_matplotlib\\converter.py:103: FutureWarning: Using an implicitly registered datetime converter for a matplotlib plotting method. The converter was registered by pandas on import. Future versions of pandas will require you to explicitly register matplotlib converters.\n",
"\n",
"To register the converters:\n",
"\t>>> from pandas.plotting import register_matplotlib_converters\n",
"\t>>> register_matplotlib_converters()\n",
" warnings.warn(msg, FutureWarning)\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x249d0e2fe48>"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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j7/0UmeTBa31y1rrdK11enx8fECDtVv1KZLG1EitNR577DGkpKTgsssuQ0lJCfbt21fvPZYtW4abbroJAJCSkoKUlBRbxk5ERERE5GpaN1xpS0wEvv/e3jG5VCCVtmIAxVrrLN/n70NC2z6lVKKvypYIYH+167tXe343AHvCGmUDFTErXXPNNZg9ezbWrVuHU6dOIS0tDf/85z9x4MABrF27FjExMUhOTsbp06cbvE99VTgiIiIioibryBHg5MmGQ1tpKXD2rDQracIarbRprb8HsFsp1d/30KUANgFYCGCm77GZAIzFXQsB3OLrIjkSwBFjGqXXtGnTBpdccglmzZr1nwYkR44cQefOnRETE4OlS5eiqKiowXuMHTsWb775JgBg48aNyM3NtXzcRERERESu56/df3UJCXJktS2gShsA3AvgTaVUcwCFAG6DBL73lFI/BrALwH/5rv0UwBUACgCc9F3rWdOnT8e11177n2mSN954I66++mqkp6cjNTUVAwYMaPD5d955J2677TakpKQgNTUVI0aMsGPYRERERETu1lhoS/T1Mty7F2isB0aECyi0aa03AEj3c+pSP9dqAHeHOS7XmDp1KuRLEp06dUJmZqbfa48fPw4ASE5OxsaNGwEALVu2rLN1ABERERFRkxdoaGOlLeB92oiIiIiIiMxjhLakJP/njemRbPvP0EZERERERA4oKQHi4oAWLfyf79JFNtlmaGNoIyIiIiIiBzTU7h8AoqOB+HhOj4TLQ1v1tWRNQVP7eomIiIioCWsstAGyro2VNveGthYtWqC0tLTJBBmtNUpLS9GivvIwEREREVEkKSmpfz2bISGBoQ2Bt/y3Xbdu3VBcXIwDBw44PRTbtGjRAt26dXN6GERERERE1iorA/bvD6zS5uvK3pS5NrTFxMSgV69eTg+DiIiIiIjMtncvoHVgoW3fPqCyEmjm2kmClmu6XzkRERERETmjsT3aDImJQHk5UFpq/ZhcjKGNiIiIiIjsFWho415tABjaiIiIiIjIbsFU2gCGNqcHQERERERETUxJCdC8OdCpU8PXGaGtie/VxtBGRERERET2Mtr9K9XwdZweCYChjYiIiIiI7BbIxtoA0Lo10LYtQ5vTAyAiIiIioiYm0NAGyBRJhjYiIiIiIiKbaB18aOOaNiIiIiIiIpscPgycOhV4aEtIYKXN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bCIiIkWVkjaRKL37LuzaBTVqwOOP2z5kefEeXn3Vzh8zxio+K1daJaiwOneGtWtt3VlYpk+3dvFnnAHz51viVhTVr28NUPr0gS+/LB5t/kVEROTQoqRNJEozZlgHxTlz4LjjbB1XbpWunTuhVSu7lS9va7yeegpKlw4nltatbfriiBHhPN/EifactWtbcnriieE8b6L0729NUsqVszEQERERKUqiaH0gElt79ljlKqfGGlddZbdE27fPWu1ffTVUqACDBlnL+9Gjbepjdjt2QLNmNr1w4ECrsEXTdCQvRxxh6+OeeMI224624ceaNbaNwJQp1qY/KzEt6i6+GO67z6qcRxyR6GhEREREIqNGJJJ0stqTly69/35SmZm2EfW8ebY5ciItXgwXXQQvvGDt9r23KXiffGJr3CpUsPO2b4emTa0F/sSJcNNNsYtp/Xpbc9arV2Rr7MAaofTvD6mp1lCle3fo3VudBkVERETiRY1IpMjw3rognn22tYrPfvvuO6sgtWplmyYn0owZ1tShaVP73jlrK79nD9x9tx3773/hyivho49g8uTYJmwAVapYRW/sWNi9u2DXbNtmFahq1SwBvesu67L4yCNK2ERERESShZI2SSoLFsCyZda6PnuVDWxPsmnTLBlq08Yqb4kyYwZccsn+XR9PPx369rVmIxMmWOVtyRJ45ZX4raPq3Nk6Jb76asHOv/12S5LbtrVGJkOGFP31ayIiIiKHGiVtklSefhrKlLEphzmpWdMqSe+/Dz17xje2LF99Zft+tWhx8GM9esA559j6ts8+s+SpZcv4xXbFFZY8PvNM/ueuWWNbFjzwAIwfb5U6EREREUk+StokaWRkWBLRsWPeU/NuvhnuvdcSvBdfjF98WWbOtPtrrz34sT/8AcaNg7POspb5zZvHN7YSJeDOO2HhQvj447zPfeopa8rRtWt8YhMRERGR6KgRiSSN7t1h2DCrZFWqlPe5mZlWVVq82Jp81KoVnxgBGje2NXWrVsXvZ0bi55+henWrnC1aZIncgTZtgqpVreHLqFHxjlBEREREDqRGJJL0tm+3ClXr1vknbGAVrZdftjVlLVtaW/142LrVNprOaWpksjj2WGv9v3ixdeLMybBh1jTlvvviG5uIiIiIRE5JmySF1FSrEHXrVvBrTjrJGn589ZU1+4iHN9+0bQeSOWkDWxN4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\n",
"text/plain": [
"<Figure size 1080x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Plot the data\n",
"plt.plot(train, color='b', label = 'Train')\n",
"plt.plot(valid, color='r', label = 'Valid')\n",
"plt.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Naive Forecasting"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x249d0e661c8>]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 1080x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Shift data back by 1 month\n",
"shifted_data = data.shift(-1, freq='MS')\n",
"\n",
"naive_forecast = shifted_data[split_value:]\n",
"\n",
"# Plot Validation sets\n",
"plt.plot(naive_forecast)\n",
"plt.plot(valid)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean Average Error Is: 48.27272727272727\n"
]
}
],
"source": [
"# Calculate our Mean Average Error as a baseline\n",
"errors = naive_forecast - valid\n",
"abs_errors = errors.abs()\n",
"mae = abs_errors.mean()\n",
"print(\"Mean Average Error Is:\", mae[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Dense Model Forecasting"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"ename": "ValueError",
"evalue": "cannot copy sequence with size 12 to array axis with dimension 1",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-10-a12600b166f7>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[0;32m 17\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 18\u001b[0m history = model.fit_generator(window_generator,\n\u001b[1;32m---> 19\u001b[1;33m epochs=epochs)\n\u001b[0m",
"\u001b[1;32m~\\Miniconda3\\envs\\myenv\\lib\\site-packages\\tensorflow\\python\\util\\deprecation.py\u001b[0m in \u001b[0;36mnew_func\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 322\u001b[0m \u001b[1;34m'in a future version'\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mdate\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m \u001b[1;32melse\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m'after %s'\u001b[0m \u001b[1;33m%\u001b[0m \u001b[0mdate\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 323\u001b[0m instructions)\n\u001b[1;32m--> 324\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 325\u001b[0m return tf_decorator.make_decorator(\n\u001b[0;32m 326\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnew_func\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'deprecated'\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Miniconda3\\envs\\myenv\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\training.py\u001b[0m in \u001b[0;36mfit_generator\u001b[1;34m(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, validation_freq, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)\u001b[0m\n\u001b[0;32m 1477\u001b[0m \u001b[0muse_multiprocessing\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0muse_multiprocessing\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1478\u001b[0m \u001b[0mshuffle\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mshuffle\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1479\u001b[1;33m initial_epoch=initial_epoch)\n\u001b[0m\u001b[0;32m 1480\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1481\u001b[0m @deprecation.deprecated(\n",
"\u001b[1;32m~\\Miniconda3\\envs\\myenv\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\training.py\u001b[0m in \u001b[0;36m_method_wrapper\u001b[1;34m(self, *args, **kwargs)\u001b[0m\n\u001b[0;32m 64\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_method_wrapper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 65\u001b[0m \u001b[1;32mif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_in_multi_worker_mode\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;31m# pylint: disable=protected-access\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 66\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mmethod\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 67\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 68\u001b[0m \u001b[1;31m# Running inside `run_distribute_coordinator` already.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Miniconda3\\envs\\myenv\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\training.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)\u001b[0m\n\u001b[0;32m 813\u001b[0m \u001b[0mworkers\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mworkers\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 814\u001b[0m \u001b[0muse_multiprocessing\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0muse_multiprocessing\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 815\u001b[1;33m model=self)\n\u001b[0m\u001b[0;32m 816\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 817\u001b[0m \u001b[1;31m# Container that configures and calls `tf.keras.Callback`s.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Miniconda3\\envs\\myenv\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\data_adapter.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, x, y, sample_weight, batch_size, steps_per_epoch, initial_epoch, epochs, shuffle, class_weight, max_queue_size, workers, use_multiprocessing, model)\u001b[0m\n\u001b[0;32m 1110\u001b[0m \u001b[0muse_multiprocessing\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0muse_multiprocessing\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1111\u001b[0m \u001b[0mdistribution_strategy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mds_context\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_strategy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1112\u001b[1;33m model=model)\n\u001b[0m\u001b[0;32m 1113\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1114\u001b[0m \u001b[0mstrategy\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mds_context\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mget_strategy\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Miniconda3\\envs\\myenv\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\data_adapter.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, x, y, sample_weights, shuffle, workers, use_multiprocessing, max_queue_size, model, **kwargs)\u001b[0m\n\u001b[0;32m 906\u001b[0m \u001b[0mmax_queue_size\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmax_queue_size\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 907\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mmodel\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 908\u001b[1;33m **kwargs)\n\u001b[0m\u001b[0;32m 909\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 910\u001b[0m \u001b[1;33m@\u001b[0m\u001b[0mstaticmethod\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Miniconda3\\envs\\myenv\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\data_adapter.py\u001b[0m in \u001b[0;36m__init__\u001b[1;34m(self, x, y, sample_weights, workers, use_multiprocessing, max_queue_size, model, **kwargs)\u001b[0m\n\u001b[0;32m 770\u001b[0m \u001b[1;31m# Since we have to know the dtype of the python generator when we build the\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 771\u001b[0m \u001b[1;31m# dataset, we have to look at a batch to infer the structure.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 772\u001b[1;33m \u001b[0mpeek\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_peek_and_restore\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 773\u001b[0m \u001b[0massert_not_namedtuple\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpeek\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 774\u001b[0m \u001b[0mpeek\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_standardize_batch\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mpeek\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Miniconda3\\envs\\myenv\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\data_adapter.py\u001b[0m in \u001b[0;36m_peek_and_restore\u001b[1;34m(x)\u001b[0m\n\u001b[0;32m 910\u001b[0m \u001b[1;33m@\u001b[0m\u001b[0mstaticmethod\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 911\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_peek_and_restore\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mx\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 912\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mx\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 913\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 914\u001b[0m def _handle_multiprocessing(self, x, workers, use_multiprocessing,\n",
"\u001b[1;32m~\\Miniconda3\\envs\\myenv\\lib\\site-packages\\keras_preprocessing\\sequence.py\u001b[0m in \u001b[0;36m__getitem__\u001b[1;34m(self, index)\u001b[0m\n\u001b[0;32m 371\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 372\u001b[0m samples = np.array([self.data[row - self.length:row:self.sampling_rate]\n\u001b[1;32m--> 373\u001b[1;33m for row in rows])\n\u001b[0m\u001b[0;32m 374\u001b[0m \u001b[0mtargets\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0marray\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtargets\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mrow\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mrow\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrows\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 375\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mValueError\u001b[0m: cannot copy sequence with size 12 to array axis with dimension 1"
]
}
],
"source": [
"window_size = 12\n",
"n_features = 1\n",
"epochs = 180\n",
"\n",
"window_generator = TimeseriesGenerator(train,\n",
" train,\n",
" length = window_size,\n",
" batch_size = 6)\n",
"\n",
"model = keras.models.Sequential([\n",
" Dense(10, activation='relu', input_shape = (window_size, n_features)),\n",
" Dense(10, activation='relu'),\n",
" Dense(1)\n",
"])\n",
"\n",
"model.compile(optimizer='adam', loss='mse')\n",
"\n",
"history = model.fit_generator(window_generator,\n",
" epochs=epochs)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"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.5"
}
},
"nbformat": 4,
"nbformat_minor": 2
}