Deep Learning Et Le Hasard - Ipynb
Deep Learning Et Le Hasard - Ipynb
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Cas de prédiction du Loto français "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n",
"/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/
dtypes.py:526: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is
deprecated; in a future version of numpy, it will be understood as (type, (1,)) /
'(1,)type'.\n",
" _np_qint8 = np.dtype([(\"qint8\", np.int8, 1)])\n",
"/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/
dtypes.py:527: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is
deprecated; in a future version of numpy, it will be understood as (type, (1,)) /
'(1,)type'.\n",
" _np_quint8 = np.dtype([(\"quint8\", np.uint8, 1)])\n",
"/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/
dtypes.py:528: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is
deprecated; in a future version of numpy, it will be understood as (type, (1,)) /
'(1,)type'.\n",
" _np_qint16 = np.dtype([(\"qint16\", np.int16, 1)])\n",
"/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/
dtypes.py:529: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is
deprecated; in a future version of numpy, it will be understood as (type, (1,)) /
'(1,)type'.\n",
" _np_quint16 = np.dtype([(\"quint16\", np.uint16, 1)])\n",
"/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/
dtypes.py:530: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is
deprecated; in a future version of numpy, it will be understood as (type, (1,)) /
'(1,)type'.\n",
" _np_qint32 = np.dtype([(\"qint32\", np.int32, 1)])\n",
"/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/
dtypes.py:535: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is
deprecated; in a future version of numpy, it will be understood as (type, (1,)) /
'(1,)type'.\n",
" np_resource = np.dtype([(\"resource\", np.ubyte, 1)])\n"
]
}
],
"source": [
"#Import des librairies utiles\n",
"from bs4 import BeautifulSoup\n",
"import time\n",
"import requests\n",
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import pickle\n",
"from sklearn.preprocessing import StandardScaler\n",
"from keras.models import Sequential\n",
"from keras.layers import LSTM, Dense, Bidirectional, TimeDistributed,
RepeatVector, Flatten\n",
"from keras.callbacks import EarlyStopping"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Fonction de scraping des tirages"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"#fonction de scraping des tirages du loto\n",
"def scrap_loto_numbers():\n",
" my_list=[]\n",
" time.sleep(2)\n",
" loto_url = \"http://loto.akroweb.fr/loto-historique-tirages/\"\n",
" page = requests.get(loto_url)\n",
" soup = BeautifulSoup(page.text, 'html.parser')\n",
" body = soup.find('table')\n",
" tirage_line = body.find_all('tr')\n",
" for value in tirage_line:\n",
" my_dict = {}\n",
" res = value.text.split('\\n')\n",
" my_dict['day']=res[2]\n",
" my_dict['month_year']=res[3]\n",
"\n",
" for i,val in enumerate(res[5:10]):\n",
" my_dict['num'+str(i)]=int(val)\n",
" my_dict['chance']=int(res[10])\n",
" my_list.append(my_dict)\n",
"\n",
"\n",
" df=pd.DataFrame(my_list)\n",
" return df"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"#A noter que plusieurs tirages se sont ajoutés dépuis le 21 : date de
rédaction de l'article"
]
},
{
"cell_type": "code",
"execution_count": 4,
"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>day</th>\n",
" <th>month_year</th>\n",
" <th>num0</th>\n",
" <th>num1</th>\n",
" <th>num2</th>\n",
" <th>num3</th>\n",
" <th>num4</th>\n",
" <th>chance</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Mercredi</td>\n",
" <td>09 decembre 2020</td>\n",
" <td>17</td>\n",
" <td>24</td>\n",
" <td>39</td>\n",
" <td>47</td>\n",
" <td>48</td>\n",
" <td>7</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Lundi</td>\n",
" <td>07 decembre 2020</td>\n",
" <td>4</td>\n",
" <td>27</td>\n",
" <td>38</td>\n",
" <td>45</td>\n",
" <td>48</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Samedi</td>\n",
" <td>05 decembre 2020</td>\n",
" <td>9</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>34</td>\n",
" <td>35</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Mercredi</td>\n",
" <td>02 decembre 2020</td>\n",
" <td>14</td>\n",
" <td>23</td>\n",
" <td>27</td>\n",
" <td>40</td>\n",
" <td>46</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Lundi</td>\n",
" <td>30 novembre 2020</td>\n",
" <td>9</td>\n",
" <td>18</td>\n",
" <td>26</td>\n",
" <td>28</td>\n",
" <td>29</td>\n",
" <td>3</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" day month_year num0 num1 num2 num3 num4 chance\n",
"0 Mercredi 09 decembre 2020 17 24 39 47 48 7\n",
"1 Lundi 07 decembre 2020 4 27 38 45 48 4\n",
"2 Samedi 05 decembre 2020 9 14 20 34 35 1\n",
"3 Mercredi 02 decembre 2020 14 23 27 40 46 1\n",
"4 Lundi 30 novembre 2020 9 18 26 28 29 3"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#sracping des tirages actuellement disponibles sur le site \n",
"df_tirage=scrap_loto_numbers()\n",
"df_tirage[['day','month_year','num0','num1','num2','num3','num4','chance']].head()
\n",
"#suppression des tirages du super loto( A explorer later )\n",
"#df_tirage=df_tirage[(df_tirage['day']!='Vendredi') & (df_tirage['day']!
='Mardi')]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"#df_tirage=df_tirage.tail(df_tirage.shape[0]-1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## commentaires: \n",
"* le dernier tirage ici date du 07 décembre, ainsi afin de tester le modèle
nous allons rétirer ce tirage du dataset dans la suite\n",
"* Par contre on aurait évité de supprimer le tirage du 28 si on voulait
prédire le prochain tirage ( celui du samedi 31)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": true
},
"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>chance</th>\n",
" <th>day</th>\n",
" <th>month_year</th>\n",
" <th>num0</th>\n",
" <th>num1</th>\n",
" <th>num2</th>\n",
" <th>num3</th>\n",
" <th>num4</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>7</td>\n",
" <td>Mercredi</td>\n",
" <td>09 decembre 2020</td>\n",
" <td>17</td>\n",
" <td>24</td>\n",
" <td>39</td>\n",
" <td>47</td>\n",
" <td>48</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>4</td>\n",
" <td>Lundi</td>\n",
" <td>07 decembre 2020</td>\n",
" <td>4</td>\n",
" <td>27</td>\n",
" <td>38</td>\n",
" <td>45</td>\n",
" <td>48</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>Samedi</td>\n",
" <td>05 decembre 2020</td>\n",
" <td>9</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>34</td>\n",
" <td>35</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>Mercredi</td>\n",
" <td>02 decembre 2020</td>\n",
" <td>14</td>\n",
" <td>23</td>\n",
" <td>27</td>\n",
" <td>40</td>\n",
" <td>46</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>3</td>\n",
" <td>Lundi</td>\n",
" <td>30 novembre 2020</td>\n",
" <td>9</td>\n",
" <td>18</td>\n",
" <td>26</td>\n",
" <td>28</td>\n",
" <td>29</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" chance day month_year num0 num1 num2 num3 num4\n",
"0 7 Mercredi 09 decembre 2020 17 24 39 47 48\n",
"1 4 Lundi 07 decembre 2020 4 27 38 45 48\n",
"2 1 Samedi 05 decembre 2020 9 14 20 34 35\n",
"3 1 Mercredi 02 decembre 2020 14 23 27 40 46\n",
"4 3 Lundi 30 novembre 2020 9 18 26 28 29"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#df_tirage=df_tirage.tail(df_tirage.shape[0])# suppression du dernier tirage/à
éviter selon le cas \n",
"df_tirage.head()# le dernier tirage devient ici celui du 26"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Traitement des données"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"df = df_tirage.iloc[::-1]#inversion du dataframe pour placer le dernier tirage
en dernière position\n",
"df = df[['num0', 'num1', 'num2', 'num3', 'num4', 'chance']]#sélection des
numéros à traiter"
]
},
{
"cell_type": "code",
"execution_count": 8,
"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>num0</th>\n",
" <th>num1</th>\n",
" <th>num2</th>\n",
" <th>num3</th>\n",
" <th>num4</th>\n",
" <th>chance</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>9</td>\n",
" <td>18</td>\n",
" <td>26</td>\n",
" <td>28</td>\n",
" <td>29</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>14</td>\n",
" <td>23</td>\n",
" <td>27</td>\n",
" <td>40</td>\n",
" <td>46</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>9</td>\n",
" <td>14</td>\n",
" <td>20</td>\n",
" <td>34</td>\n",
" <td>35</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>4</td>\n",
" <td>27</td>\n",
" <td>38</td>\n",
" <td>45</td>\n",
" <td>48</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>17</td>\n",
" <td>24</td>\n",
" <td>39</td>\n",
" <td>47</td>\n",
" <td>48</td>\n",
" <td>7</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" num0 num1 num2 num3 num4 chance\n",
"4 9 18 26 28 29 3\n",
"3 14 23 27 40 46 1\n",
"2 9 14 20 34 35 1\n",
"1 4 27 38 45 48 4\n",
"0 17 24 39 47 48 7"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.tail()# notre tirage du 26 ici devient le dernier de notre dataset afin de
pourvoir organiser les data par historique"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAATkAAAD8CAYAAAAMs9NCAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEg
AACxIB0t1+/
AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5v
cmcvnQurowAAC7dJREFUeJzt3F2MXHUZx/
Hfb9/6DtWUNrDbpE2sENJEqmtFG40WMVUI9cpAAiEEszeAxZAQ8MZ454UheGGMDVRIQBrkJRKCYMNLCIkUS
kHpC2jDW1sKy0pLCyjtdh8vdpY0pXbOds/5T/v4/
STNzkzPzP857e63Z+bM1BEhAMiqq9MDAECTiByA1IgcgNSIHIDUiByA1IgcgNQqRc72Ktuv2t5h+6amhwKA
urjd++Rsd0v6h6QLJe2S9LykyyJiW/
PjAcDUVDmSWy5pR0S8FhEHJa2XtLrZsQCgHj0VtumXtPOI67skfe3ojWwPSRqSJHX1fcWz5tUxX1vu7Suyz
qeKf0Ck9IIuu1zBT9yU/pPs7estut6hg4eKrmcX/l6RNLb3jZGIOGMy96kSuUoiYq2ktZLUdVp/
TPvqNXU99HH1LVhYZJ0JMVb2R+Xw4cNF1+vqKnsuauzwWLm1xsqtJUnzB+YXXW9457tF1+vurS0flX30x6v
enOx9qnxH75Z0ZEkGWrcBwEmvSuSel7TE9mLbfZIulfRQs2MBQD3aHm9GxKjtayU9Jqlb0rqI2Nr4ZABQg0
pPqiPiEUmPNDwLANSOTzwASI3IAUiNyAFIjcgBSI3IAUiNyAFIjcgBSI3IAUiNyAFIjcgBSI3IAUiNyAFIj
cgBSI3IAUiNyAFIjcgBSI3IAUiNyAFIjcgBSI3IAUiNyAFIjcgBSI3IAUiNyAFIjcgBSI3IAUiNyAFIjcgB
SI3IAUiNyAFIjcgBSI3IAUiNyAFIjcgBSI3IAUitbeRsr7M9bHtLiYEAoE5VjuTukLSq4TkAoBE97TaIiKd
tL5rMg3b1TtOMsyZ1lxPWO623yDoT9r/8XNH1ehYtLbre6L/2FF1PMVZ0uZ55/
cXW+vjAx8XWkqTT580tut6BfQeKrneiantNzvaQ7U22N8Unp8bO4/9LycDh5FFb5CJibUQMRsSgp82p62EB
YEo4uwogNSIHILUqbyG5R9JfJZ1te5ftq5sfCwDqUeXs6mUlBgGAJvB0FUBqRA5AakQOQGpEDkBqRA5AakQ
OQGpEDkBqRA5AakQOQGpEDkBqRA5AakQOQGpEDkBqRA5AakQOQGpEDkBqRA5AakQOQGpEDkBqRA5AakQOQG
pEDkBqRA5AakQOQGpEDkBqRA5AakQOQGpEDkBqRA5AakQOQGpEDkBqRA5AakQOQGpEDkBqbSNne6HtJ21vs
73V9poSgwFAHXoqbDMq6YaI2Gx7jqQXbG+IiG0NzwYAU9b2SC4i9kTE5tblA5K2S+pvejAAqEOVI7lP2V4k
aZmkjcf4vSFJQ5LUNWueurrLvNy3/9WXi6zzqbkLii5X6s9xwumLv1B0vQ/
efrvYWqMHDxVbS5I+Hhsrut7YByNF15t2xplF1ztRlX+CbM+WdL+k6yNi/9G/
HxFrI2IwIgY9fU6dMwLACasUOdu9Gg/
c3RHxQLMjAUB9qpxdtaTbJW2PiFuaHwkA6lPlSG6FpCskrbT9UuvXDxqeCwBq0fbEQ0Q8I8kFZgGA2vGJBw
CpETkAqRE5AKkROQCpETkAqRE5AKkROQCpETkAqRE5AKkROQCpETkAqRE5AKkROQCpETkAqRE5AKkROQCpE
TkAqRE5AKkROQCpETkAqRE5AKkROQCpETkAqRE5AKkROQCpETkAqRE5AKkROQCpETkAqRE5AKkROQCpETkA
qRE5AKkROQCpETkAqbWNnO3ptp+z/TfbW23/osRgAFCHngrbfCJpZUR8aLtX0jO2/
xwRzzY8GwBMWdvIRURI+rB1tbf1K45/
J2n00OiUh6tixqJziqwz4d973y+63szZM4uut29kX9H1umbMKbZWd093sbUk6dC+kaLrzVvyxaLrjewpu38
nqtJrcra7bb8kaVjShojYeIxthmxvsr1p7D/7654TAE5IpchFxOGIOE/
SgKTltpceY5u1ETEYEYNd00+re04AOCGTOrsaEfskPSlpVTPjAEC9qpxdPcP23NblGZIulPRK04MBQB2qnF
09U9Kdtrs1HsV7I+LhZscCgHpUObv6d0nLCswCALXjEw8AUiNyAFIjcgBSI3IAUiNyAFIjcgBSI3IAUiNyA
FIjcgBSI3IAUiNyAFIjcgBSI3IAUiNyAFIjcgBSI3IAUiNyAFIjcgBSI3IAUiNyAFIjcgBSI3IAUiNyAFIj
cgBSI3IAUiNyAFIjcgBSI3IAUiNyAFIjcgBSI3IAUiNyAFIjcgBSI3IAUqscOdvdtl+0/
XCTAwFAnSZzJLdG0vamBgGAJlSKnO0BSRdJuq3ZcQCgXj0Vt7tV0o2S5vyvDWwPSRqSJPXO1ifbnp3ycFXM
Pu+bRdbplP3v7y+6Xt/0vqLr2S62Vm9fb7G1JKmre37R9Ub2jBRdb+
+9VxddT5Jm9P540vdpeyRn+2JJwxHxwvG2i4i1ETEYEYPumTHpQQCgCVWerq6QdIntNyStl7TS9l2NTgUAN
WkbuYi4OSIGImKRpEslPRERlzc+GQDUgPfJAUit6okHSVJEPCXpqUYmAYAGcCQHIDUiByA1IgcgNSIHIDUi
ByA1IgcgNSIHIDUiByA1IgcgNSIHIDUiByA1IgcgNSIHIDUiByA1IgcgNSIHIDUiByA1IgcgNSIHIDUiByA
1IgcgNSIHIDUiByA1IgcgNSIHIDUiByA1IgcgNSIHIDUiByA1IgcgNSIHIDUiByA1IgcgNSIHIDUiByC1ni
ob2X5D0gFJhyWNRsRgk0MBQF0qRa7lOxEx0tgkANAAnq4CSM0R0X4j+3VJeyWFpN9FxNpjbDMkaah1damkL
TXOeTKZJynzES37d2rLvn9nR8ScydyhauT6I2K37fmSNki6LiKePs72m7K+bpd53yT271TH/
n1WpaerEbG79XVY0oOSlk9+PAAor23kbM+yPWfisqTvKe9TUQDJVDm7ukDSg7Yntv9DRDza5j6fec0ukcz7
JrF/
pzr27yiVXpMDgFMVbyEBkBqRA5BarZGzvcr2q7Z32L6pzsfuNNsLbT9pe5vtrbbXdHqmutnutv2i7Yc7PUs
TbM+1fZ/tV2xvt/31Ts9UF9s/bX1fbrF9j+3pnZ5pKmyvsz1se8sRt33e9gbb/2x9/
VyVx6otcra7Jf1G0vclnSvpMtvn1vX4J4FRSTdExLmSzpd0TbL9k6Q1krZ3eogG/
VrSoxFxjqQvKcm+2u6X9BNJgxGxVFK3pEs7O9WU3SFp1VG33STp8YhYIunx1vW26jySWy5pR0S8FhEHJa2X
tLrGx++oiNgTEZtblw9o/
Aekv7NT1cf2gKSLJN3W6VmaYPt0Sd+SdLskRcTBiNjX2alq1SNphu0eSTMlvd3heaak9WGD94+6ebWkO1uX
75T0wyqPVWfk+iXtPOL6LiWKwJFsL5K0TNLGzk5Sq1sl3ShprNODNGSxpPck/b71lPy21vs+T3mtN+v/
StJbkvZI+iAi/tLZqRqxICL2tC6/o/G3t7XFiYdJsj1b0v2Sro+I/
Z2epw62L5Y0HBEvdHqWBvVI+rKk30bEMkkfqeLTnZNd67Wp1RoP+VmSZtm+vLNTNSvG3/
tW6f1vdUZut6SFR1wfaN2Whu1ejQfu7oh4oNPz1GiFpEta/2/gekkrbd/
V2ZFqt0vSroiYOPq+T+PRy+C7kl6PiPci4pCkByR9o8MzNeFd22dKUuvrcJU71Rm55yUtsb3Ydp/GX/
h8qMbH7yiPf+TjdknbI+KWTs9Tp4i4OSIGImKRxv/
enoiIVEcCEfGOpJ22z27ddIGkbR0cqU5vSTrf9szW9+kFSnJS5SgPSbqydflKSX+qcqfJ/
KeZxxURo7avlfSYxs/urIuIrXU9/
klghaQrJL1s+6XWbT+LiEc6OBMm5zpJd7f+EX5N0lUdnqcWEbHR9n2SNmv8XQAv6hT/
eJfteyR9W9I827sk/VzSLyXda/
tqSW9K+lGlx+JjXQAy48QDgNSIHIDUiByA1IgcgNSIHIDUiByA1IgcgNT+CxAciMU6+wO4AAAAAElFTkSuQ
mCC\n",
"text/plain": [
"<Figure size 360x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"\n",
"#fonction de vérification de nombres en dessous d'une certaine valeur pour les
5 premiers numéros, sauf celui de chance\n",
"def is_under(data, number):\n",
" return ((data['num0'] <= number).astype(int) + \n",
" (data['num1'] <= number).astype(int) +\n",
" (data['num2'] <= number).astype(int) +\n",
" (data['num3'] <= number).astype(int) +\n",
" (data['num4'] <= number).astype(int))\n",
"\n",
"#fonction de vérification de nombres pairs pour les 5 premiers numéros sauf
celui de chance\n",
"def is_pair(data):\n",
" return ((data['num0'].isin(pairs)).astype(int) + \n",
" (data['num1'].isin(pairs)).astype(int) +\n",
" (data['num2'].isin(pairs)).astype(int) +\n",
" (data['num3'].isin(pairs)).astype(int) +\n",
" (data['num4'].isin(pairs)).astype(int))\n",
"\n",
"#fonction de vérification de nombres impairs pour les 5 premiers numéros sauf
celui de chance\n",
"def is_impair(data):\n",
" return ((data['num0'].isin(impairs)).astype(int) + \n",
" (data['num1'].isin(impairs)).astype(int) +\n",
" (data['num2'].isin(impairs)).astype(int) +\n",
" (data['num3'].isin(impairs)).astype(int) +\n",
" (data['num4'].isin(impairs)).astype(int))\n",
"\n",
"#fonction de vérification de nombres pairs pour le numéro de chance\n",
"def is_pair_etoile(data):\n",
" return (data['chance'].isin(pairs)).astype(int)\n",
"\n",
"#fonction de vérification de nombres impairs pour le numéro de chance\n",
"def is_impair_etoile(data):\n",
" return (data['chance'].isin(impairs)).astype(int)\n",
"\n",
"#liste de nombres pairs et impairs\n",
"pairs = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36,
38, 40, 42, 44, 46, 48, 50]\n",
"impairs = [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35,
37, 39, 41, 43, 45, 47, 49]\n",
"\n",
"#Fonction de calcul de la somme de la différence au carré des 5 premiers
numéros, sauf celui de chance\n",
"def sum_diff(data):\n",
" return ((data['num1'] - data['num0'])**2 + \n",
" (data['num2'] - data['num1'])**2 +\n",
" (data['num3'] - data['num2'])**2 +\n",
" (data['num4'] - data['num3'])**2)\n",
"\n",
"\n",
"# Calcul de la fréquence de tirage de chaque numéro\n",
"freqs = []\n",
"for val in range(50):\n",
" count = ( (df['num0'] == val+1).sum() +\n",
" (df['num1'] == val+1).sum() +\n",
" (df['num2'] == val+1).sum() +\n",
" (df['num3'] == val+1).sum() +\n",
" (df['num4'] == val+1).sum() )\n",
" freqs.append(count)\n",
"ax = plt.gca() ; ax.invert_yaxis()\n",
"plt.gcf().set_size_inches(5, 4)\n",
"heatmap = plt.pcolor(np.reshape(np.array(freqs), (5, 10)), cmap=plt.cm.Blues)\
n",
"\n",
"def freq_val(data, column):\n",
" tab = data[column].values.tolist()\n",
" freqs = []\n",
" pos = 1\n",
" for e in tab:\n",
" freqs.append(tab[0:pos].count(e))\n",
" pos = pos + 1\n",
" return freqs\n",
"\n",
"\n",
"\n",
"#df['sum'] = ((df.num0 + df.num1 + df.num2 + df.num3 + df.num4 + df.chance )
>185).astype(int)\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"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>num0</th>\n",
" <th>num1</th>\n",
" <th>num2</th>\n",
" <th>num3</th>\n",
" <th>num4</th>\n",
" <th>chance</th>\n",
" <th>freq_num0</th>\n",
" <th>freq_num1</th>\n",
" <th>freq_num2</th>\n",
" <th>freq_num3</th>\n",
" <th>freq_num4</th>\n",
" <th>freq_chance</th>\n",
" <th>sum_diff</th>\n",
" <th>pair_chance</th>\n",
" <th>impair_chance</th>\n",
" <th>pair</th>\n",
" <th>impair</th>\n",
" <th>is_under_24</th>\n",
" <th>is_under_40</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1942</th>\n",
" <td>19</td>\n",
" <td>24</td>\n",
" <td>27</td>\n",
" <td>33</td>\n",
" <td>41</td>\n",
" <td>9</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>134</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1941</th>\n",
" <td>22</td>\n",
" <td>24</td>\n",
" <td>32</td>\n",
" <td>41</td>\n",
" <td>48</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>198</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1940</th>\n",
" <td>10</td>\n",
" <td>20</td>\n",
" <td>22</td>\n",
" <td>39</td>\n",
" <td>46</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>442</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1939</th>\n",
" <td>10</td>\n",
" <td>11</td>\n",
" <td>37</td>\n",
" <td>41</td>\n",
" <td>48</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>2</td>\n",
" <td>742</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>3</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1938</th>\n",
" <td>18</td>\n",
" <td>20</td>\n",
" <td>28</td>\n",
" <td>40</td>\n",
" <td>49</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>293</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1937</th>\n",
" <td>4</td>\n",
" <td>32</td>\n",
" <td>35</td>\n",
" <td>39</td>\n",
" <td>44</td>\n",
" <td>10</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>834</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>3</td>\n",
" <td>2</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" num0 num1 num2 num3 num4 chance freq_num0 freq_num1 freq_num2
\\\n",
"1942 19 24 27 33 41 9 1 1 1
\n",
"1941 22 24 32 41 48 1 1 2 1
\n",
"1940 10 20 22 39 46 4 1 1 1
\n",
"1939 10 11 37 41 48 4 2 1 1
\n",
"1938 18 20 28 40 49 1 1 2 1
\n",
"1937 4 32 35 39 44 10 1 1 1
\n",
"\n",
" freq_num3 freq_num4 freq_chance sum_diff pair_chance
impair_chance \\\n",
"1942 1 1 1 134 0
1 \n",
"1941 1 1 1 198 0
1 \n",
"1940 1 1 1 442 1
0 \n",
"1939 2 2 2 742 1
0 \n",
"1938 1 1 2 293 0
1 \n",
"1937 2 1 1 834 1
0 \n",
"\n",
" pair impair is_under_24 is_under_40 \n",
"1942 1 4 2 4 \n",
"1941 4 1 2 3 \n",
"1940 4 1 3 4 \n",
"1939 2 3 2 3 \n",
"1938 4 1 2 4 \n",
"1937 3 2 1 4 "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#ajout de la difference entre les numéros(A explorer ASAp)\n",
"#for i in range(4):\n",
" #print(i,i+1)\n",
" #df['diff_{}'.format(i)]=df['num{}'.format(i+1)]-df['num{}'.format(i)]\n",
"#application des fonctions sur le dataframe\n",
"df['freq_num0'] = freq_val(df, 'num0')\n",
"df['freq_num1'] = freq_val(df, 'num1')\n",
"df['freq_num2'] = freq_val(df, 'num2')\n",
"df['freq_num3'] = freq_val(df, 'num3')\n",
"df['freq_num4'] = freq_val(df, 'num4')\n",
"df['freq_chance'] = freq_val(df, 'chance')#calcul des frequences \n",
"df['sum_diff'] = sum_diff(df)#somme de la différence au carré entre chaque
couple de numéros successifs dans le tirage\n",
"df['pair_chance'] = is_pair_etoile(df)\n",
"df['impair_chance'] = is_impair_etoile(df)\n",
"df['pair'] = is_pair(df)\n",
"df['impair'] = is_impair(df)#verification de nombre pair et impair\n",
"df['is_under_24'] = is_under(df, 24) # Les numeros en dessous de 24 \n",
"df['is_under_40'] = is_under(df, 40)# Les numeros en dessous de 40 \n",
"df.head(6)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Modèle et fonction de formatage des données en entrée du LSTM"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"#capture 3: fonction define model seulement"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"# j'ai ici défini plusieurs modèles à tester mais pour l'intant je tavaille
avec le lstm(fonction : define_model)\n",
"# j'ai ici défini window_length à 12 pour apprendre sur 1 mois de données \n",
"\n",
"#Params du modèle\n",
"nb_label_feature=6\n",
"\n",
"UNITS = 100\n",
"BATCHSIZE = 30\n",
"EPOCH = 1500\n",
"#ACTIVATION = \"softmax\"\n",
"OPTIMIZER ='adam' # rmsprop, adam, sgd\n",
"LOSS = 'mae'#'categorical_crossentropy' #mse\n",
"DROPOUT = 0.1\n",
"window_length =12 #12 \n",
"number_of_features = df.shape[1]\n",
"\n",
"#Architecture du modèle\n",
"def define_model(number_of_features,nb_label_feature):\n",
" #initialisation du rnn\n",
" model = Sequential()\n",
" #ajout de la premiere couche lstm\n",
" model.add(LSTM(UNITS, input_shape=(window_length, number_of_features),
return_sequences=True))\n",
" model.add(LSTM(UNITS, dropout=0.1, return_sequences=False))\n",
" #ajout de la couche de sortie\n",
" model.add(Dense(nb_label_feature))\n",
" model.compile(loss=LOSS, optimizer=OPTIMIZER, metrics=['acc'])\n",
" return model\n",
"\n",
"def define_bidirectionnel_model(number_of_features,nb_label_feature):\n",
" model = Sequential()\n",
" model.add(Bidirectional(LSTM(100, dropout=0.2, return_sequences=True),
input_shape=(window_length, number_of_features)))\n",
" model.add(LSTM(50, return_sequences=True))\n",
" model.add(LSTM(100, dropout=0.1))\n",
" model.add(Dense(nb_label_feature))\n",
" model.compile(loss=LOSS, optimizer=OPTIMIZER, metrics=['acc'])\n",
" return model\n",
"\n",
"def define_autoencoder_model(number_of_features,nb_label_feature):\n",
" model = Sequential()\n",
" model.add(LSTM(100, input_shape=(window_length, number_of_features),
return_sequences=True))\n",
" model.add(LSTM(50, return_sequences=False))\n",
" model.add(RepeatVector(window_length))\n",
" model.add(LSTM(100, dropout=0.1, return_sequences=True))\n",
" model.add(LSTM(50, return_sequences=True))\n",
" model.add(TimeDistributed(Dense(number_of_features)))\n",
" model.add(Flatten())\n",
" model.add(Dense(nb_label_feature))\n",
" model.compile(loss=LOSS, optimizer=OPTIMIZER, metrics=['acc'])\n",
" return model\n",
"\n",
"\n",
"\n",
"#model = define_model(number_of_features,nb_label_feature)\n",
"#model3 = define_autoencoder_model(number_of_features,nb_label_feature)\n",
"#model4 = define_bidirectionnel_model(number_of_features,nb_label_feature)\n",
"\n",
"#Moniteur pour stoper le training\n",
"es = EarlyStopping(monitor='acc', mode='max', verbose=1, patience=100)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"# Fonction de formatage des données en entrée du LSTM\n",
"def create_lstm_dataset(df, window_length,nb_label_feature):\n",
" number_of_rows = df.shape[0] #taille du dataset number_of_features\n",
" number_of_features = df.shape[1]\n",
" scaler = StandardScaler().fit(df.values)\n",
" transformed_dataset = scaler.transform(df.values)\n",
" transformed_df = pd.DataFrame(data=transformed_dataset, index=df.index)\
n",
" #tableau de tableau de taille(number_of_rows-window_length) et
window_length ligne,number_of_features\n",
" #lstm:[nb total de row ,nb de ligne dans le passé, nb de
colonne(feature)]\n",
" train = np.empty([number_of_rows-window_length, window_length,
number_of_features], dtype=float)\n",
" \n",
" label = np.empty([number_of_rows-window_length, nb_label_feature],
dtype=float)\n",
" for i in range(0, number_of_rows-window_length):\n",
" train[i] = transformed_df.iloc[i:i+window_length, 0:
number_of_features]\n",
" label[i] = transformed_df.iloc[i+window_length: i+window_length+1,
0:nb_label_feature]\n",
" \n",
" #définition du modèle Lstm \n",
" model = define_model(number_of_features,nb_label_feature)\n",
" \n",
" return train, label, model,scaler"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Training"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py:595:
DataConversionWarning: Data with input dtype int64 was converted to float64 by
StandardScaler.\n",
" warnings.warn(msg, DataConversionWarning)\n",
"/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py:595:
DataConversionWarning: Data with input dtype int64 was converted to float64 by
StandardScaler.\n",
" warnings.warn(msg, DataConversionWarning)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From
/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/
op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is
deprecated and will be removed in a future version.\n",
"Instructions for updating:\n",
"Colocations handled automatically by placer.\n",
"WARNING:tensorflow:From
/anaconda3/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:3445:
calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated
and will be removed in a future version.\n",
"Instructions for updating:\n",
"Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 -
keep_prob`.\n",
"(1931, 12, 19)\n",
"(1931, 6)\n"
]
}
],
"source": [
"#formatage des données\n",
"train, label,model,scaler1 = create_lstm_dataset(df,
window_length,nb_label_feature)\n",
"print(train.shape)\n",
"print(label.shape)\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* On voit ici que notre dataset d'entrainement après formatage est constitué
de 1911 vecteurs contenant chacun 12 tirages où chaque tirage contient 19 features
calculés plus haut\n",
"\n",
"* Quant aux labels, on a bien 1911 vecteurs de 6 features soit les 6 numéros
de chaque tirages\n",
"\n",
"* Ainsi à partir des 12 tirages précédent on éssaie de prédire le tirage
suivant lors de l'entrainement"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"WARNING:tensorflow:From
/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py:3066:
to_int32 (from tensorflow.python.ops.math_ops) is deprecated and will be removed in
a future version.\n",
"Instructions for updating:\n",
"Use tf.cast instead.\n",
"Epoch 1/1500\n",
" - 3s - loss: 0.8123 - acc: 0.1559\n",
"Epoch 2/1500\n",
" - 2s - loss: 0.8069 - acc: 0.1491\n",
"Epoch 3/1500\n",
" - 2s - loss: 0.8049 - acc: 0.1543\n",
"Epoch 4/1500\n",
" - 2s - loss: 0.8037 - acc: 0.1611\n",
"Epoch 5/1500\n",
" - 2s - loss: 0.8018 - acc: 0.1579\n",
"Epoch 6/1500\n",
" - 2s - loss: 0.7998 - acc: 0.1776\n",
"Epoch 7/1500\n",
" - 2s - loss: 0.7963 - acc: 0.1756\n",
"Epoch 8/1500\n",
" - 2s - loss: 0.7920 - acc: 0.1838\n",
"Epoch 9/1500\n",
" - 2s - loss: 0.7862 - acc: 0.1844\n",
"Epoch 10/1500\n",
" - 2s - loss: 0.7805 - acc: 0.2025\n",
"Epoch 11/1500\n",
" - 2s - loss: 0.7718 - acc: 0.1864\n",
"Epoch 12/1500\n",
" - 2s - loss: 0.7641 - acc: 0.2092\n",
"Epoch 13/1500\n",
" - 2s - loss: 0.7574 - acc: 0.2227\n",
"Epoch 14/1500\n",
" - 2s - loss: 0.7463 - acc: 0.2351\n",
"Epoch 15/1500\n",
" - 2s - loss: 0.7313 - acc: 0.2563\n",
"Epoch 16/1500\n",
" - 2s - loss: 0.7163 - acc: 0.2553\n",
"Epoch 17/1500\n",
" - 2s - loss: 0.7026 - acc: 0.2600\n",
"Epoch 18/1500\n",
" - 1s - loss: 0.6853 - acc: 0.2931\n",
"Epoch 19/1500\n",
" - 2s - loss: 0.6689 - acc: 0.3035\n",
"Epoch 20/1500\n",
" - 2s - loss: 0.6520 - acc: 0.3138\n",
"Epoch 21/1500\n",
" - 2s - loss: 0.6335 - acc: 0.3299\n",
"Epoch 22/1500\n",
" - 2s - loss: 0.6214 - acc: 0.3278\n",
"Epoch 23/1500\n",
" - 2s - loss: 0.6020 - acc: 0.3723\n",
"Epoch 24/1500\n",
" - 2s - loss: 0.5845 - acc: 0.3760\n",
"Epoch 25/1500\n",
" - 2s - loss: 0.5705 - acc: 0.3832\n",
"Epoch 26/1500\n",
" - 2s - loss: 0.5494 - acc: 0.4019\n",
"Epoch 27/1500\n",
" - 2s - loss: 0.5378 - acc: 0.4164\n",
"Epoch 28/1500\n",
" - 2s - loss: 0.5218 - acc: 0.4355\n",
"Epoch 29/1500\n",
" - 2s - loss: 0.5045 - acc: 0.4283\n",
"Epoch 30/1500\n",
" - 2s - loss: 0.4920 - acc: 0.4599\n",
"Epoch 31/1500\n",
" - 2s - loss: 0.4814 - acc: 0.4723\n",
"Epoch 32/1500\n",
" - 2s - loss: 0.4674 - acc: 0.4790\n",
"Epoch 33/1500\n",
" - 2s - loss: 0.4490 - acc: 0.4899\n",
"Epoch 34/1500\n",
" - 2s - loss: 0.4389 - acc: 0.5194\n",
"Epoch 35/1500\n",
" - 2s - loss: 0.4291 - acc: 0.5168\n",
"Epoch 36/1500\n",
" - 1s - loss: 0.4137 - acc: 0.5350\n",
"Epoch 37/1500\n",
" - 2s - loss: 0.4075 - acc: 0.5417\n",
"Epoch 38/1500\n",
" - 2s - loss: 0.3979 - acc: 0.5640\n",
"Epoch 39/1500\n",
" - 2s - loss: 0.3921 - acc: 0.5629\n",
"Epoch 40/1500\n",
" - 2s - loss: 0.3792 - acc: 0.5728\n",
"Epoch 41/1500\n",
" - 2s - loss: 0.3740 - acc: 0.5785\n",
"Epoch 42/1500\n",
" - 2s - loss: 0.3608 - acc: 0.5924\n",
"Epoch 43/1500\n",
" - 2s - loss: 0.3531 - acc: 0.6012\n",
"Epoch 44/1500\n",
" - 2s - loss: 0.3484 - acc: 0.6044\n",
"Epoch 45/1500\n",
" - 2s - loss: 0.3431 - acc: 0.6049\n",
"Epoch 46/1500\n",
" - 2s - loss: 0.3342 - acc: 0.6251\n",
"Epoch 47/1500\n",
" - 2s - loss: 0.3265 - acc: 0.6282\n",
"Epoch 48/1500\n",
" - 2s - loss: 0.3220 - acc: 0.6359\n",
"Epoch 49/1500\n",
" - 2s - loss: 0.3121 - acc: 0.6453\n",
"Epoch 50/1500\n",
" - 2s - loss: 0.3102 - acc: 0.6385\n",
"Epoch 51/1500\n",
" - 2s - loss: 0.3047 - acc: 0.6587\n",
"Epoch 52/1500\n",
" - 1s - loss: 0.3011 - acc: 0.6458\n",
"Epoch 53/1500\n",
" - 2s - loss: 0.2918 - acc: 0.6779\n",
"Epoch 54/1500\n",
" - 1s - loss: 0.2868 - acc: 0.6779\n",
"Epoch 55/1500\n",
" - 1s - loss: 0.2847 - acc: 0.6717\n",
"Epoch 56/1500\n",
" - 2s - loss: 0.2778 - acc: 0.6872\n",
"Epoch 57/1500\n",
" - 2s - loss: 0.2724 - acc: 0.7038\n",
"Epoch 58/1500\n",
" - 2s - loss: 0.2685 - acc: 0.6955\n",
"Epoch 59/1500\n",
" - 1s - loss: 0.2643 - acc: 0.6929\n",
"Epoch 60/1500\n",
" - 1s - loss: 0.2602 - acc: 0.7157\n",
"Epoch 61/1500\n",
" - 2s - loss: 0.2599 - acc: 0.6996\n",
"Epoch 62/1500\n",
" - 2s - loss: 0.2544 - acc: 0.7317\n",
"Epoch 63/1500\n",
" - 2s - loss: 0.2516 - acc: 0.7162\n",
"Epoch 64/1500\n",
" - 1s - loss: 0.2516 - acc: 0.7141\n",
"Epoch 65/1500\n",
" - 2s - loss: 0.2454 - acc: 0.7478\n",
"Epoch 66/1500\n",
" - 2s - loss: 0.2426 - acc: 0.7380\n",
"Epoch 67/1500\n",
" - 2s - loss: 0.2394 - acc: 0.7359\n",
"Epoch 68/1500\n",
" - 2s - loss: 0.2381 - acc: 0.7426\n",
"Epoch 69/1500\n",
" - 2s - loss: 0.2318 - acc: 0.7452\n",
"Epoch 70/1500\n",
" - 2s - loss: 0.2316 - acc: 0.7582\n",
"Epoch 71/1500\n",
" - 2s - loss: 0.2295 - acc: 0.7566\n",
"Epoch 72/1500\n",
" - 2s - loss: 0.2267 - acc: 0.7452\n",
"Epoch 73/1500\n",
" - 2s - loss: 0.2251 - acc: 0.7649\n",
"Epoch 74/1500\n",
" - 2s - loss: 0.2231 - acc: 0.7680\n",
"Epoch 75/1500\n",
" - 2s - loss: 0.2145 - acc: 0.7747\n",
"Epoch 76/1500\n",
" - 3s - loss: 0.2185 - acc: 0.7659\n",
"Epoch 77/1500\n",
" - 2s - loss: 0.2185 - acc: 0.7664\n",
"Epoch 78/1500\n",
" - 2s - loss: 0.2133 - acc: 0.7623\n",
"Epoch 79/1500\n",
" - 2s - loss: 0.2127 - acc: 0.7659\n",
"Epoch 80/1500\n",
" - 2s - loss: 0.2102 - acc: 0.7659\n",
"Epoch 81/1500\n",
" - 2s - loss: 0.2089 - acc: 0.7695\n",
"Epoch 82/1500\n",
" - 2s - loss: 0.2087 - acc: 0.7607\n",
"Epoch 83/1500\n",
" - 2s - loss: 0.2011 - acc: 0.7856\n",
"Epoch 84/1500\n",
" - 2s - loss: 0.2042 - acc: 0.7856\n",
"Epoch 85/1500\n",
" - 2s - loss: 0.2036 - acc: 0.7954\n",
"Epoch 86/1500\n",
" - 2s - loss: 0.1999 - acc: 0.7809\n",
"Epoch 87/1500\n",
" - 2s - loss: 0.1988 - acc: 0.7996\n",
"Epoch 88/1500\n",
" - 2s - loss: 0.1965 - acc: 0.7892\n",
"Epoch 89/1500\n",
" - 2s - loss: 0.1935 - acc: 0.7840\n",
"Epoch 90/1500\n",
" - 2s - loss: 0.1970 - acc: 0.7913\n",
"Epoch 91/1500\n",
" - 1s - loss: 0.1893 - acc: 0.8136\n",
"Epoch 92/1500\n",
" - 2s - loss: 0.1926 - acc: 0.8048\n",
"Epoch 93/1500\n",
" - 1s - loss: 0.1864 - acc: 0.8151\n",
"Epoch 94/1500\n",
" - 1s - loss: 0.1866 - acc: 0.8063\n",
"Epoch 95/1500\n",
" - 2s - loss: 0.1864 - acc: 0.8131\n",
"Epoch 96/1500\n",
" - 2s - loss: 0.1865 - acc: 0.8053\n",
"Epoch 97/1500\n",
" - 2s - loss: 0.1838 - acc: 0.8053\n",
"Epoch 98/1500\n",
" - 1s - loss: 0.1831 - acc: 0.8167\n",
"Epoch 99/1500\n",
" - 1s - loss: 0.1857 - acc: 0.8001\n",
"Epoch 100/1500\n",
" - 2s - loss: 0.1824 - acc: 0.8105\n",
"Epoch 101/1500\n",
" - 2s - loss: 0.1803 - acc: 0.8239\n",
"Epoch 102/1500\n",
" - 2s - loss: 0.1805 - acc: 0.8219\n",
"Epoch 103/1500\n",
" - 2s - loss: 0.1795 - acc: 0.8172\n",
"Epoch 104/1500\n",
" - 2s - loss: 0.1782 - acc: 0.8146\n",
"Epoch 105/1500\n",
" - 1s - loss: 0.1763 - acc: 0.8177\n",
"Epoch 106/1500\n",
" - 1s - loss: 0.1745 - acc: 0.8136\n",
"Epoch 107/1500\n",
" - 1s - loss: 0.1715 - acc: 0.8281\n",
"Epoch 108/1500\n",
" - 1s - loss: 0.1770 - acc: 0.8358\n",
"Epoch 109/1500\n",
" - 2s - loss: 0.1748 - acc: 0.8286\n",
"Epoch 110/1500\n",
" - 2s - loss: 0.1737 - acc: 0.8307\n",
"Epoch 111/1500\n",
" - 2s - loss: 0.1687 - acc: 0.8301\n",
"Epoch 112/1500\n",
" - 1s - loss: 0.1703 - acc: 0.8244\n",
"Epoch 113/1500\n",
" - 2s - loss: 0.1711 - acc: 0.8374\n",
"Epoch 114/1500\n",
" - 2s - loss: 0.1698 - acc: 0.8374\n",
"Epoch 115/1500\n",
" - 2s - loss: 0.1674 - acc: 0.8136\n",
"Epoch 116/1500\n",
" - 1s - loss: 0.1676 - acc: 0.8224\n",
"Epoch 117/1500\n",
" - 1s - loss: 0.1626 - acc: 0.8369\n",
"Epoch 118/1500\n",
" - 1s - loss: 0.1682 - acc: 0.8213\n",
"Epoch 119/1500\n",
" - 2s - loss: 0.1662 - acc: 0.8286\n",
"Epoch 120/1500\n",
" - 2s - loss: 0.1638 - acc: 0.8301\n",
"Epoch 121/1500\n",
" - 2s - loss: 0.1664 - acc: 0.8384\n",
"Epoch 122/1500\n",
" - 2s - loss: 0.1658 - acc: 0.8348\n",
"Epoch 123/1500\n",
" - 2s - loss: 0.1634 - acc: 0.8415\n",
"Epoch 124/1500\n",
" - 2s - loss: 0.1630 - acc: 0.8379\n",
"Epoch 125/1500\n",
" - 2s - loss: 0.1626 - acc: 0.8472\n",
"Epoch 126/1500\n",
" - 2s - loss: 0.1584 - acc: 0.8545\n",
"Epoch 127/1500\n",
" - 2s - loss: 0.1565 - acc: 0.8566\n",
"Epoch 128/1500\n",
" - 2s - loss: 0.1606 - acc: 0.8405\n",
"Epoch 129/1500\n",
" - 2s - loss: 0.1595 - acc: 0.8400\n",
"Epoch 130/1500\n",
" - 2s - loss: 0.1548 - acc: 0.8462\n",
"Epoch 131/1500\n",
" - 2s - loss: 0.1575 - acc: 0.8493\n",
"Epoch 132/1500\n",
" - 2s - loss: 0.1541 - acc: 0.8560\n",
"Epoch 133/1500\n",
" - 2s - loss: 0.1573 - acc: 0.8384\n",
"Epoch 134/1500\n",
" - 2s - loss: 0.1532 - acc: 0.8410\n",
"Epoch 135/1500\n",
" - 2s - loss: 0.1557 - acc: 0.8571\n",
"Epoch 136/1500\n",
" - 2s - loss: 0.1588 - acc: 0.8477\n",
"Epoch 137/1500\n",
" - 2s - loss: 0.1542 - acc: 0.8332\n",
"Epoch 138/1500\n",
" - 2s - loss: 0.1555 - acc: 0.8348\n",
"Epoch 139/1500\n",
" - 2s - loss: 0.1535 - acc: 0.8524\n",
"Epoch 140/1500\n",
" - 2s - loss: 0.1510 - acc: 0.8571\n",
"Epoch 141/1500\n",
" - 2s - loss: 0.1532 - acc: 0.8493\n",
"Epoch 142/1500\n",
" - 2s - loss: 0.1513 - acc: 0.8503\n",
"Epoch 143/1500\n",
" - 2s - loss: 0.1512 - acc: 0.8529\n",
"Epoch 144/1500\n",
" - 2s - loss: 0.1486 - acc: 0.8534\n",
"Epoch 145/1500\n",
" - 2s - loss: 0.1487 - acc: 0.8498\n",
"Epoch 146/1500\n",
" - 2s - loss: 0.1493 - acc: 0.8560\n",
"Epoch 147/1500\n",
" - 2s - loss: 0.1480 - acc: 0.8483\n",
"Epoch 148/1500\n",
" - 2s - loss: 0.1489 - acc: 0.8566\n",
"Epoch 149/1500\n",
" - 2s - loss: 0.1485 - acc: 0.8509\n",
"Epoch 150/1500\n",
" - 2s - loss: 0.1490 - acc: 0.8488\n",
"Epoch 151/1500\n",
" - 2s - loss: 0.1486 - acc: 0.8426\n",
"Epoch 152/1500\n",
" - 2s - loss: 0.1472 - acc: 0.8566\n",
"Epoch 153/1500\n",
" - 2s - loss: 0.1477 - acc: 0.8498\n",
"Epoch 154/1500\n",
" - 2s - loss: 0.1464 - acc: 0.8509\n",
"Epoch 155/1500\n",
" - 2s - loss: 0.1479 - acc: 0.8540\n",
"Epoch 156/1500\n",
" - 1s - loss: 0.1442 - acc: 0.8628\n",
"Epoch 157/1500\n",
" - 2s - loss: 0.1448 - acc: 0.8602\n",
"Epoch 158/1500\n",
" - 2s - loss: 0.1457 - acc: 0.8659\n",
"Epoch 159/1500\n",
" - 2s - loss: 0.1449 - acc: 0.8534\n",
"Epoch 160/1500\n",
" - 2s - loss: 0.1442 - acc: 0.8633\n",
"Epoch 161/1500\n",
" - 1s - loss: 0.1419 - acc: 0.8379\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 162/1500\n",
" - 1s - loss: 0.1452 - acc: 0.8597\n",
"Epoch 163/1500\n",
" - 2s - loss: 0.1411 - acc: 0.8705\n",
"Epoch 164/1500\n",
" - 2s - loss: 0.1437 - acc: 0.8509\n",
"Epoch 165/1500\n",
" - 2s - loss: 0.1421 - acc: 0.8612\n",
"Epoch 166/1500\n",
" - 2s - loss: 0.1436 - acc: 0.8602\n",
"Epoch 167/1500\n",
" - 2s - loss: 0.1416 - acc: 0.8628\n",
"Epoch 168/1500\n",
" - 2s - loss: 0.1399 - acc: 0.8560\n",
"Epoch 169/1500\n",
" - 2s - loss: 0.1409 - acc: 0.8586\n",
"Epoch 170/1500\n",
" - 2s - loss: 0.1395 - acc: 0.8664\n",
"Epoch 171/1500\n",
" - 2s - loss: 0.1397 - acc: 0.8581\n",
"Epoch 172/1500\n",
" - 2s - loss: 0.1425 - acc: 0.8617\n",
"Epoch 173/1500\n",
" - 2s - loss: 0.1371 - acc: 0.8607\n",
"Epoch 174/1500\n",
" - 2s - loss: 0.1389 - acc: 0.8472\n",
"Epoch 175/1500\n",
" - 2s - loss: 0.1412 - acc: 0.8633\n",
"Epoch 176/1500\n",
" - 2s - loss: 0.1396 - acc: 0.8643\n",
"Epoch 177/1500\n",
" - 2s - loss: 0.1383 - acc: 0.8674\n",
"Epoch 178/1500\n",
" - 2s - loss: 0.1380 - acc: 0.8711\n",
"Epoch 179/1500\n",
" - 2s - loss: 0.1389 - acc: 0.8716\n",
"Epoch 180/1500\n",
" - 2s - loss: 0.1379 - acc: 0.8597\n",
"Epoch 181/1500\n",
" - 2s - loss: 0.1353 - acc: 0.8731\n",
"Epoch 182/1500\n",
" - 2s - loss: 0.1369 - acc: 0.8659\n",
"Epoch 183/1500\n",
" - 2s - loss: 0.1352 - acc: 0.8685\n",
"Epoch 184/1500\n",
" - 2s - loss: 0.1321 - acc: 0.8690\n",
"Epoch 185/1500\n",
" - 2s - loss: 0.1361 - acc: 0.8602\n",
"Epoch 186/1500\n",
" - 2s - loss: 0.1338 - acc: 0.8695\n",
"Epoch 187/1500\n",
" - 2s - loss: 0.1335 - acc: 0.8643\n",
"Epoch 188/1500\n",
" - 2s - loss: 0.1340 - acc: 0.8612\n",
"Epoch 189/1500\n",
" - 1s - loss: 0.1340 - acc: 0.8742\n",
"Epoch 190/1500\n",
" - 2s - loss: 0.1362 - acc: 0.8560\n",
"Epoch 191/1500\n",
" - 2s - loss: 0.1342 - acc: 0.8721\n",
"Epoch 192/1500\n",
" - 2s - loss: 0.1339 - acc: 0.8576\n",
"Epoch 193/1500\n",
" - 2s - loss: 0.1349 - acc: 0.8674\n",
"Epoch 194/1500\n",
" - 2s - loss: 0.1328 - acc: 0.8679\n",
"Epoch 195/1500\n",
" - 2s - loss: 0.1316 - acc: 0.8840\n",
"Epoch 196/1500\n",
" - 2s - loss: 0.1338 - acc: 0.8700\n",
"Epoch 197/1500\n",
" - 2s - loss: 0.1329 - acc: 0.8742\n",
"Epoch 198/1500\n",
" - 2s - loss: 0.1330 - acc: 0.8648\n",
"Epoch 199/1500\n",
" - 1s - loss: 0.1338 - acc: 0.8778\n",
"Epoch 200/1500\n",
" - 1s - loss: 0.1300 - acc: 0.8778\n",
"Epoch 201/1500\n",
" - 2s - loss: 0.1301 - acc: 0.8700\n",
"Epoch 202/1500\n",
" - 2s - loss: 0.1317 - acc: 0.8695\n",
"Epoch 203/1500\n",
" - 2s - loss: 0.1315 - acc: 0.8721\n",
"Epoch 204/1500\n",
" - 2s - loss: 0.1313 - acc: 0.8716\n",
"Epoch 205/1500\n",
" - 1s - loss: 0.1296 - acc: 0.8591\n",
"Epoch 206/1500\n",
" - 2s - loss: 0.1307 - acc: 0.8845\n",
"Epoch 207/1500\n",
" - 2s - loss: 0.1309 - acc: 0.8736\n",
"Epoch 208/1500\n",
" - 2s - loss: 0.1294 - acc: 0.8721\n",
"Epoch 209/1500\n",
" - 2s - loss: 0.1286 - acc: 0.8711\n",
"Epoch 210/1500\n",
" - 2s - loss: 0.1288 - acc: 0.8711\n",
"Epoch 211/1500\n",
" - 2s - loss: 0.1272 - acc: 0.8664\n",
"Epoch 212/1500\n",
" - 2s - loss: 0.1306 - acc: 0.8700\n",
"Epoch 213/1500\n",
" - 2s - loss: 0.1303 - acc: 0.8819\n",
"Epoch 214/1500\n",
" - 2s - loss: 0.1270 - acc: 0.8762\n",
"Epoch 215/1500\n",
" - 2s - loss: 0.1286 - acc: 0.8783\n",
"Epoch 216/1500\n",
" - 2s - loss: 0.1253 - acc: 0.8793\n",
"Epoch 217/1500\n",
" - 2s - loss: 0.1265 - acc: 0.8643\n",
"Epoch 218/1500\n",
" - 2s - loss: 0.1268 - acc: 0.8892\n",
"Epoch 219/1500\n",
" - 2s - loss: 0.1267 - acc: 0.8799\n",
"Epoch 220/1500\n",
" - 2s - loss: 0.1260 - acc: 0.8664\n",
"Epoch 221/1500\n",
" - 2s - loss: 0.1265 - acc: 0.8695\n",
"Epoch 222/1500\n",
" - 2s - loss: 0.1266 - acc: 0.8778\n",
"Epoch 223/1500\n",
" - 2s - loss: 0.1256 - acc: 0.8778\n",
"Epoch 224/1500\n",
" - 2s - loss: 0.1259 - acc: 0.8762\n",
"Epoch 225/1500\n",
" - 2s - loss: 0.1245 - acc: 0.8690\n",
"Epoch 226/1500\n",
" - 2s - loss: 0.1257 - acc: 0.8679\n",
"Epoch 227/1500\n",
" - 2s - loss: 0.1258 - acc: 0.8814\n",
"Epoch 228/1500\n",
" - 2s - loss: 0.1230 - acc: 0.8819\n",
"Epoch 229/1500\n",
" - 2s - loss: 0.1259 - acc: 0.8819\n",
"Epoch 230/1500\n",
" - 1s - loss: 0.1234 - acc: 0.8783\n",
"Epoch 231/1500\n",
" - 1s - loss: 0.1246 - acc: 0.8856\n",
"Epoch 232/1500\n",
" - 1s - loss: 0.1238 - acc: 0.8690\n",
"Epoch 233/1500\n",
" - 2s - loss: 0.1237 - acc: 0.8835\n",
"Epoch 234/1500\n",
" - 2s - loss: 0.1264 - acc: 0.8747\n",
"Epoch 235/1500\n",
" - 2s - loss: 0.1235 - acc: 0.8773\n",
"Epoch 236/1500\n",
" - 2s - loss: 0.1233 - acc: 0.8793\n",
"Epoch 237/1500\n",
" - 2s - loss: 0.1221 - acc: 0.8788\n",
"Epoch 238/1500\n",
" - 2s - loss: 0.1233 - acc: 0.8757\n",
"Epoch 239/1500\n",
" - 2s - loss: 0.1251 - acc: 0.8778\n",
"Epoch 240/1500\n",
" - 2s - loss: 0.1211 - acc: 0.8871\n",
"Epoch 241/1500\n",
" - 1s - loss: 0.1201 - acc: 0.8912\n",
"Epoch 242/1500\n",
" - 2s - loss: 0.1204 - acc: 0.8788\n",
"Epoch 243/1500\n",
" - 1s - loss: 0.1207 - acc: 0.8819\n",
"Epoch 244/1500\n",
" - 2s - loss: 0.1211 - acc: 0.8757\n",
"Epoch 245/1500\n",
" - 2s - loss: 0.1188 - acc: 0.8783\n",
"Epoch 246/1500\n",
" - 2s - loss: 0.1218 - acc: 0.8778\n",
"Epoch 247/1500\n",
" - 2s - loss: 0.1224 - acc: 0.8664\n",
"Epoch 248/1500\n",
" - 2s - loss: 0.1223 - acc: 0.8819\n",
"Epoch 249/1500\n",
" - 2s - loss: 0.1233 - acc: 0.8892\n",
"Epoch 250/1500\n",
" - 2s - loss: 0.1214 - acc: 0.8700\n",
"Epoch 251/1500\n",
" - 2s - loss: 0.1223 - acc: 0.8861\n",
"Epoch 252/1500\n",
" - 2s - loss: 0.1199 - acc: 0.8824\n",
"Epoch 253/1500\n",
" - 2s - loss: 0.1190 - acc: 0.8845\n",
"Epoch 254/1500\n",
" - 2s - loss: 0.1204 - acc: 0.8783\n",
"Epoch 255/1500\n",
" - 2s - loss: 0.1192 - acc: 0.8856\n",
"Epoch 256/1500\n",
" - 2s - loss: 0.1207 - acc: 0.8799\n",
"Epoch 257/1500\n",
" - 2s - loss: 0.1201 - acc: 0.8856\n",
"Epoch 258/1500\n",
" - 2s - loss: 0.1195 - acc: 0.8783\n",
"Epoch 259/1500\n",
" - 2s - loss: 0.1204 - acc: 0.8845\n",
"Epoch 260/1500\n",
" - 2s - loss: 0.1170 - acc: 0.8783\n",
"Epoch 261/1500\n",
" - 2s - loss: 0.1174 - acc: 0.8850\n",
"Epoch 262/1500\n",
" - 2s - loss: 0.1194 - acc: 0.8840\n",
"Epoch 263/1500\n",
" - 2s - loss: 0.1205 - acc: 0.8736\n",
"Epoch 264/1500\n",
" - 2s - loss: 0.1197 - acc: 0.8788\n",
"Epoch 265/1500\n",
" - 2s - loss: 0.1190 - acc: 0.8850\n",
"Epoch 266/1500\n",
" - 2s - loss: 0.1198 - acc: 0.8892\n",
"Epoch 267/1500\n",
" - 2s - loss: 0.1178 - acc: 0.8819\n",
"Epoch 268/1500\n",
" - 2s - loss: 0.1170 - acc: 0.8887\n",
"Epoch 269/1500\n",
" - 2s - loss: 0.1168 - acc: 0.8887\n",
"Epoch 270/1500\n",
" - 1s - loss: 0.1195 - acc: 0.8835\n",
"Epoch 271/1500\n",
" - 1s - loss: 0.1185 - acc: 0.8819\n",
"Epoch 272/1500\n",
" - 2s - loss: 0.1155 - acc: 0.8773\n",
"Epoch 273/1500\n",
" - 1s - loss: 0.1157 - acc: 0.8887\n",
"Epoch 274/1500\n",
" - 2s - loss: 0.1159 - acc: 0.8669\n",
"Epoch 275/1500\n",
" - 2s - loss: 0.1162 - acc: 0.8845\n",
"Epoch 276/1500\n",
" - 2s - loss: 0.1174 - acc: 0.8897\n",
"Epoch 277/1500\n",
" - 2s - loss: 0.1177 - acc: 0.8762\n",
"Epoch 278/1500\n",
" - 2s - loss: 0.1149 - acc: 0.8887\n",
"Epoch 279/1500\n",
" - 2s - loss: 0.1158 - acc: 0.8799\n",
"Epoch 280/1500\n",
" - 2s - loss: 0.1155 - acc: 0.8897\n",
"Epoch 281/1500\n",
" - 2s - loss: 0.1141 - acc: 0.8897\n",
"Epoch 282/1500\n",
" - 2s - loss: 0.1153 - acc: 0.8933\n",
"Epoch 283/1500\n",
" - 2s - loss: 0.1148 - acc: 0.8866\n",
"Epoch 284/1500\n",
" - 2s - loss: 0.1144 - acc: 0.8793\n",
"Epoch 285/1500\n",
" - 2s - loss: 0.1169 - acc: 0.8881\n",
"Epoch 286/1500\n",
" - 2s - loss: 0.1163 - acc: 0.8876\n",
"Epoch 287/1500\n",
" - 2s - loss: 0.1154 - acc: 0.8819\n",
"Epoch 288/1500\n",
" - 2s - loss: 0.1145 - acc: 0.8804\n",
"Epoch 289/1500\n",
" - 2s - loss: 0.1149 - acc: 0.9016\n",
"Epoch 290/1500\n",
" - 2s - loss: 0.1145 - acc: 0.8876\n",
"Epoch 291/1500\n",
" - 2s - loss: 0.1135 - acc: 0.8928\n",
"Epoch 292/1500\n",
" - 2s - loss: 0.1146 - acc: 0.8783\n",
"Epoch 293/1500\n",
" - 2s - loss: 0.1132 - acc: 0.8923\n",
"Epoch 294/1500\n",
" - 2s - loss: 0.1135 - acc: 0.8845\n",
"Epoch 295/1500\n",
" - 2s - loss: 0.1132 - acc: 0.8918\n",
"Epoch 296/1500\n",
" - 2s - loss: 0.1145 - acc: 0.8793\n",
"Epoch 297/1500\n",
" - 2s - loss: 0.1116 - acc: 0.8871\n",
"Epoch 298/1500\n",
" - 2s - loss: 0.1129 - acc: 0.8892\n",
"Epoch 299/1500\n",
" - 2s - loss: 0.1119 - acc: 0.8928\n",
"Epoch 300/1500\n",
" - 2s - loss: 0.1131 - acc: 0.8871\n",
"Epoch 301/1500\n",
" - 2s - loss: 0.1112 - acc: 0.8881\n",
"Epoch 302/1500\n",
" - 2s - loss: 0.1133 - acc: 0.8918\n",
"Epoch 303/1500\n",
" - 2s - loss: 0.1115 - acc: 0.8881\n",
"Epoch 304/1500\n",
" - 2s - loss: 0.1119 - acc: 0.8959\n",
"Epoch 305/1500\n",
" - 2s - loss: 0.1120 - acc: 0.8824\n",
"Epoch 306/1500\n",
" - 2s - loss: 0.1109 - acc: 0.8845\n",
"Epoch 307/1500\n",
" - 2s - loss: 0.1121 - acc: 0.8809\n",
"Epoch 308/1500\n",
" - 2s - loss: 0.1108 - acc: 0.8850\n",
"Epoch 309/1500\n",
" - 2s - loss: 0.1128 - acc: 0.8964\n",
"Epoch 310/1500\n",
" - 2s - loss: 0.1103 - acc: 0.8887\n",
"Epoch 311/1500\n",
" - 2s - loss: 0.1131 - acc: 0.8881\n",
"Epoch 312/1500\n",
" - 2s - loss: 0.1133 - acc: 0.8887\n",
"Epoch 313/1500\n",
" - 2s - loss: 0.1114 - acc: 0.8840\n",
"Epoch 314/1500\n",
" - 2s - loss: 0.1127 - acc: 0.8799\n",
"Epoch 315/1500\n",
" - 2s - loss: 0.1125 - acc: 0.8850\n",
"Epoch 316/1500\n",
" - 2s - loss: 0.1100 - acc: 0.8938\n",
"Epoch 317/1500\n",
" - 2s - loss: 0.1096 - acc: 0.8871\n",
"Epoch 318/1500\n",
" - 2s - loss: 0.1119 - acc: 0.8871\n",
"Epoch 319/1500\n",
" - 1s - loss: 0.1123 - acc: 0.8856\n",
"Epoch 320/1500\n",
" - 1s - loss: 0.1111 - acc: 0.8871\n",
"Epoch 321/1500\n",
" - 2s - loss: 0.1088 - acc: 0.8912\n",
"Epoch 322/1500\n",
" - 2s - loss: 0.1108 - acc: 0.9037\n",
"Epoch 323/1500\n",
" - 2s - loss: 0.1093 - acc: 0.8954\n",
"Epoch 324/1500\n",
" - 2s - loss: 0.1095 - acc: 0.8881\n",
"Epoch 325/1500\n",
" - 2s - loss: 0.1093 - acc: 0.8881\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 326/1500\n",
" - 2s - loss: 0.1082 - acc: 0.8990\n",
"Epoch 327/1500\n",
" - 2s - loss: 0.1091 - acc: 0.8871\n",
"Epoch 328/1500\n",
" - 2s - loss: 0.1086 - acc: 0.8985\n",
"Epoch 329/1500\n",
" - 2s - loss: 0.1104 - acc: 0.8980\n",
"Epoch 330/1500\n",
" - 2s - loss: 0.1093 - acc: 0.8835\n",
"Epoch 331/1500\n",
" - 2s - loss: 0.1085 - acc: 0.8949\n",
"Epoch 332/1500\n",
" - 2s - loss: 0.1088 - acc: 0.8840\n",
"Epoch 333/1500\n",
" - 2s - loss: 0.1089 - acc: 0.8902\n",
"Epoch 334/1500\n",
" - 2s - loss: 0.1085 - acc: 0.8959\n",
"Epoch 335/1500\n",
" - 2s - loss: 0.1095 - acc: 0.8980\n",
"Epoch 336/1500\n",
" - 2s - loss: 0.1098 - acc: 0.8814\n",
"Epoch 337/1500\n",
" - 2s - loss: 0.1078 - acc: 0.9001\n",
"Epoch 338/1500\n",
" - 2s - loss: 0.1077 - acc: 0.8949\n",
"Epoch 339/1500\n",
" - 2s - loss: 0.1066 - acc: 0.9037\n",
"Epoch 340/1500\n",
" - 2s - loss: 0.1075 - acc: 0.8933\n",
"Epoch 341/1500\n",
" - 2s - loss: 0.1080 - acc: 0.8788\n",
"Epoch 342/1500\n",
" - 2s - loss: 0.1084 - acc: 0.8938\n",
"Epoch 343/1500\n",
" - 2s - loss: 0.1057 - acc: 0.8902\n",
"Epoch 344/1500\n",
" - 2s - loss: 0.1076 - acc: 0.8887\n",
"Epoch 345/1500\n",
" - 2s - loss: 0.1078 - acc: 0.8824\n",
"Epoch 346/1500\n",
" - 2s - loss: 0.1083 - acc: 0.8912\n",
"Epoch 347/1500\n",
" - 2s - loss: 0.1057 - acc: 0.8866\n",
"Epoch 348/1500\n",
" - 2s - loss: 0.1063 - acc: 0.8892\n",
"Epoch 349/1500\n",
" - 2s - loss: 0.1064 - acc: 0.8975\n",
"Epoch 350/1500\n",
" - 2s - loss: 0.1053 - acc: 0.8949\n",
"Epoch 351/1500\n",
" - 2s - loss: 0.1063 - acc: 0.9032\n",
"Epoch 352/1500\n",
" - 2s - loss: 0.1077 - acc: 0.9021\n",
"Epoch 353/1500\n",
" - 1s - loss: 0.1064 - acc: 0.8969\n",
"Epoch 354/1500\n",
" - 2s - loss: 0.1043 - acc: 0.9011\n",
"Epoch 355/1500\n",
" - 2s - loss: 0.1059 - acc: 0.8944\n",
"Epoch 356/1500\n",
" - 2s - loss: 0.1073 - acc: 0.8938\n",
"Epoch 357/1500\n",
" - 2s - loss: 0.1057 - acc: 0.8995\n",
"Epoch 358/1500\n",
" - 2s - loss: 0.1050 - acc: 0.9001\n",
"Epoch 359/1500\n",
" - 2s - loss: 0.1057 - acc: 0.9021\n",
"Epoch 360/1500\n",
" - 2s - loss: 0.1071 - acc: 0.8912\n",
"Epoch 361/1500\n",
" - 2s - loss: 0.1051 - acc: 0.8969\n",
"Epoch 362/1500\n",
" - 2s - loss: 0.1043 - acc: 0.8995\n",
"Epoch 363/1500\n",
" - 2s - loss: 0.1055 - acc: 0.8985\n",
"Epoch 364/1500\n",
" - 2s - loss: 0.1065 - acc: 0.9052\n",
"Epoch 365/1500\n",
" - 2s - loss: 0.1047 - acc: 0.8969\n",
"Epoch 366/1500\n",
" - 2s - loss: 0.1050 - acc: 0.8856\n",
"Epoch 367/1500\n",
" - 3s - loss: 0.1053 - acc: 0.8964\n",
"Epoch 368/1500\n",
" - 3s - loss: 0.1058 - acc: 0.8892\n",
"Epoch 369/1500\n",
" - 2s - loss: 0.1060 - acc: 0.8912\n",
"Epoch 370/1500\n",
" - 2s - loss: 0.1059 - acc: 0.8980\n",
"Epoch 371/1500\n",
" - 2s - loss: 0.1050 - acc: 0.9021\n",
"Epoch 372/1500\n",
" - 2s - loss: 0.1032 - acc: 0.8933\n",
"Epoch 373/1500\n",
" - 2s - loss: 0.1040 - acc: 0.9016\n",
"Epoch 374/1500\n",
" - 2s - loss: 0.1031 - acc: 0.8912\n",
"Epoch 375/1500\n",
" - 2s - loss: 0.1034 - acc: 0.8762\n",
"Epoch 376/1500\n",
" - 2s - loss: 0.1035 - acc: 0.8918\n",
"Epoch 377/1500\n",
" - 2s - loss: 0.1062 - acc: 0.8856\n",
"Epoch 378/1500\n",
" - 2s - loss: 0.1038 - acc: 0.8856\n",
"Epoch 379/1500\n",
" - 2s - loss: 0.1034 - acc: 0.8959\n",
"Epoch 380/1500\n",
" - 2s - loss: 0.1042 - acc: 0.9068\n",
"Epoch 381/1500\n",
" - 2s - loss: 0.1029 - acc: 0.9032\n",
"Epoch 382/1500\n",
" - 2s - loss: 0.1050 - acc: 0.8840\n",
"Epoch 383/1500\n",
" - 2s - loss: 0.1034 - acc: 0.8975\n",
"Epoch 384/1500\n",
" - 2s - loss: 0.1052 - acc: 0.8897\n",
"Epoch 385/1500\n",
" - 2s - loss: 0.1027 - acc: 0.9037\n",
"Epoch 386/1500\n",
" - 2s - loss: 0.1030 - acc: 0.8949\n",
"Epoch 387/1500\n",
" - 2s - loss: 0.1036 - acc: 0.8969\n",
"Epoch 388/1500\n",
" - 2s - loss: 0.1033 - acc: 0.9068\n",
"Epoch 389/1500\n",
" - 2s - loss: 0.1025 - acc: 0.8923\n",
"Epoch 390/1500\n",
" - 2s - loss: 0.1019 - acc: 0.8985\n",
"Epoch 391/1500\n",
" - 2s - loss: 0.1025 - acc: 0.8918\n",
"Epoch 392/1500\n",
" - 2s - loss: 0.1029 - acc: 0.8990\n",
"Epoch 393/1500\n",
" - 2s - loss: 0.1026 - acc: 0.8949\n",
"Epoch 394/1500\n",
" - 2s - loss: 0.1038 - acc: 0.8954\n",
"Epoch 395/1500\n",
" - 2s - loss: 0.1019 - acc: 0.8954\n",
"Epoch 396/1500\n",
" - 2s - loss: 0.1034 - acc: 0.8990\n",
"Epoch 397/1500\n",
" - 2s - loss: 0.1011 - acc: 0.9026\n",
"Epoch 398/1500\n",
" - 2s - loss: 0.1004 - acc: 0.9021\n",
"Epoch 399/1500\n",
" - 2s - loss: 0.1020 - acc: 0.8995\n",
"Epoch 400/1500\n",
" - 2s - loss: 0.1008 - acc: 0.8949\n",
"Epoch 401/1500\n",
" - 2s - loss: 0.1022 - acc: 0.8980\n",
"Epoch 402/1500\n",
" - 2s - loss: 0.1025 - acc: 0.9026\n",
"Epoch 403/1500\n",
" - 2s - loss: 0.1012 - acc: 0.9016\n",
"Epoch 404/1500\n",
" - 2s - loss: 0.1011 - acc: 0.9001\n",
"Epoch 405/1500\n",
" - 2s - loss: 0.1016 - acc: 0.8985\n",
"Epoch 406/1500\n",
" - 2s - loss: 0.0998 - acc: 0.9026\n",
"Epoch 407/1500\n",
" - 2s - loss: 0.1014 - acc: 0.9032\n",
"Epoch 408/1500\n",
" - 2s - loss: 0.1005 - acc: 0.8990\n",
"Epoch 409/1500\n",
" - 2s - loss: 0.1011 - acc: 0.8959\n",
"Epoch 410/1500\n",
" - 2s - loss: 0.1022 - acc: 0.9042\n",
"Epoch 411/1500\n",
" - 2s - loss: 0.1013 - acc: 0.8980\n",
"Epoch 412/1500\n",
" - 2s - loss: 0.1024 - acc: 0.9011\n",
"Epoch 413/1500\n",
" - 2s - loss: 0.1012 - acc: 0.9006\n",
"Epoch 414/1500\n",
" - 2s - loss: 0.1012 - acc: 0.8954\n",
"Epoch 415/1500\n",
" - 2s - loss: 0.1007 - acc: 0.9073\n",
"Epoch 416/1500\n",
" - 2s - loss: 0.1005 - acc: 0.9032\n",
"Epoch 417/1500\n",
" - 2s - loss: 0.0999 - acc: 0.9083\n",
"Epoch 418/1500\n",
" - 2s - loss: 0.1014 - acc: 0.8990\n",
"Epoch 419/1500\n",
" - 2s - loss: 0.1008 - acc: 0.9125\n",
"Epoch 420/1500\n",
" - 2s - loss: 0.1013 - acc: 0.9001\n",
"Epoch 421/1500\n",
" - 2s - loss: 0.0985 - acc: 0.8938\n",
"Epoch 422/1500\n",
" - 2s - loss: 0.1003 - acc: 0.8964\n",
"Epoch 423/1500\n",
" - 2s - loss: 0.1004 - acc: 0.8980\n",
"Epoch 424/1500\n",
" - 2s - loss: 0.0991 - acc: 0.8907\n",
"Epoch 425/1500\n",
" - 2s - loss: 0.0993 - acc: 0.8995\n",
"Epoch 426/1500\n",
" - 2s - loss: 0.0984 - acc: 0.9089\n",
"Epoch 427/1500\n",
" - 2s - loss: 0.0982 - acc: 0.9052\n",
"Epoch 428/1500\n",
" - 2s - loss: 0.0985 - acc: 0.9047\n",
"Epoch 429/1500\n",
" - 2s - loss: 0.0988 - acc: 0.9021\n",
"Epoch 430/1500\n",
" - 3s - loss: 0.0995 - acc: 0.8876\n",
"Epoch 431/1500\n",
" - 2s - loss: 0.0988 - acc: 0.8944\n",
"Epoch 432/1500\n",
" - 2s - loss: 0.1013 - acc: 0.9011\n",
"Epoch 433/1500\n",
" - 2s - loss: 0.0989 - acc: 0.9016\n",
"Epoch 434/1500\n",
" - 1s - loss: 0.0992 - acc: 0.9057\n",
"Epoch 435/1500\n",
" - 2s - loss: 0.0982 - acc: 0.8980\n",
"Epoch 436/1500\n",
" - 3s - loss: 0.1000 - acc: 0.9042\n",
"Epoch 437/1500\n",
" - 2s - loss: 0.0990 - acc: 0.9021\n",
"Epoch 438/1500\n",
" - 2s - loss: 0.0982 - acc: 0.8938\n",
"Epoch 439/1500\n",
" - 2s - loss: 0.1000 - acc: 0.9011\n",
"Epoch 440/1500\n",
" - 2s - loss: 0.0986 - acc: 0.8985\n",
"Epoch 441/1500\n",
" - 2s - loss: 0.0990 - acc: 0.9094\n",
"Epoch 442/1500\n",
" - 2s - loss: 0.0984 - acc: 0.9078\n",
"Epoch 443/1500\n",
" - 2s - loss: 0.0979 - acc: 0.8975\n",
"Epoch 444/1500\n",
" - 2s - loss: 0.0973 - acc: 0.9073\n",
"Epoch 445/1500\n",
" - 2s - loss: 0.0995 - acc: 0.8990\n",
"Epoch 446/1500\n",
" - 2s - loss: 0.0975 - acc: 0.8959\n",
"Epoch 447/1500\n",
" - 2s - loss: 0.0962 - acc: 0.9021\n",
"Epoch 448/1500\n",
" - 2s - loss: 0.0965 - acc: 0.8995\n",
"Epoch 449/1500\n",
" - 2s - loss: 0.0998 - acc: 0.8892\n",
"Epoch 450/1500\n",
" - 2s - loss: 0.0983 - acc: 0.8980\n",
"Epoch 451/1500\n",
" - 2s - loss: 0.0985 - acc: 0.9068\n",
"Epoch 452/1500\n",
" - 2s - loss: 0.0969 - acc: 0.9063\n",
"Epoch 453/1500\n",
" - 2s - loss: 0.0986 - acc: 0.9073\n",
"Epoch 454/1500\n",
" - 2s - loss: 0.0969 - acc: 0.9001\n",
"Epoch 455/1500\n",
" - 2s - loss: 0.0963 - acc: 0.9047\n",
"Epoch 456/1500\n",
" - 2s - loss: 0.0977 - acc: 0.9063\n",
"Epoch 457/1500\n",
" - 2s - loss: 0.0972 - acc: 0.8995\n",
"Epoch 458/1500\n",
" - 2s - loss: 0.0955 - acc: 0.9094\n",
"Epoch 459/1500\n",
" - 2s - loss: 0.0970 - acc: 0.9052\n",
"Epoch 460/1500\n",
" - 2s - loss: 0.0972 - acc: 0.9016\n",
"Epoch 461/1500\n",
" - 2s - loss: 0.0970 - acc: 0.9021\n",
"Epoch 462/1500\n",
" - 2s - loss: 0.0978 - acc: 0.8990\n",
"Epoch 463/1500\n",
" - 2s - loss: 0.0966 - acc: 0.9068\n",
"Epoch 464/1500\n",
" - 2s - loss: 0.0960 - acc: 0.9026\n",
"Epoch 465/1500\n",
" - 2s - loss: 0.0973 - acc: 0.9078\n",
"Epoch 466/1500\n",
" - 2s - loss: 0.0970 - acc: 0.9032\n",
"Epoch 467/1500\n",
" - 2s - loss: 0.0960 - acc: 0.9156\n",
"Epoch 468/1500\n",
" - 2s - loss: 0.0971 - acc: 0.9177\n",
"Epoch 469/1500\n",
" - 3s - loss: 0.0949 - acc: 0.8985\n",
"Epoch 470/1500\n",
" - 2s - loss: 0.0971 - acc: 0.9042\n",
"Epoch 471/1500\n",
" - 2s - loss: 0.0972 - acc: 0.9166\n",
"Epoch 472/1500\n",
" - 2s - loss: 0.0964 - acc: 0.9078\n",
"Epoch 473/1500\n",
" - 2s - loss: 0.0946 - acc: 0.9037\n",
"Epoch 474/1500\n",
" - 2s - loss: 0.0984 - acc: 0.9089\n",
"Epoch 475/1500\n",
" - 2s - loss: 0.0950 - acc: 0.8959\n",
"Epoch 476/1500\n",
" - 2s - loss: 0.0961 - acc: 0.9057\n",
"Epoch 477/1500\n",
" - 2s - loss: 0.0949 - acc: 0.9006\n",
"Epoch 478/1500\n",
" - 2s - loss: 0.0948 - acc: 0.9068\n",
"Epoch 479/1500\n",
" - 2s - loss: 0.0956 - acc: 0.9130\n",
"Epoch 480/1500\n",
" - 2s - loss: 0.0951 - acc: 0.9026\n",
"Epoch 481/1500\n",
" - 2s - loss: 0.0954 - acc: 0.9083\n",
"Epoch 482/1500\n",
" - 2s - loss: 0.0960 - acc: 0.8990\n",
"Epoch 483/1500\n",
" - 2s - loss: 0.0955 - acc: 0.8990\n",
"Epoch 484/1500\n",
" - 2s - loss: 0.0949 - acc: 0.9120\n",
"Epoch 485/1500\n",
" - 2s - loss: 0.0943 - acc: 0.9114\n",
"Epoch 486/1500\n",
" - 2s - loss: 0.0950 - acc: 0.9047\n",
"Epoch 487/1500\n",
" - 2s - loss: 0.0958 - acc: 0.8954\n",
"Epoch 488/1500\n",
" - 2s - loss: 0.0945 - acc: 0.9068\n",
"Epoch 489/1500\n",
" - 2s - loss: 0.0940 - acc: 0.8980\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 490/1500\n",
" - 2s - loss: 0.0961 - acc: 0.9047\n",
"Epoch 491/1500\n",
" - 2s - loss: 0.0955 - acc: 0.9073\n",
"Epoch 492/1500\n",
" - 2s - loss: 0.0936 - acc: 0.9016\n",
"Epoch 493/1500\n",
" - 2s - loss: 0.0952 - acc: 0.9099\n",
"Epoch 494/1500\n",
" - 2s - loss: 0.0944 - acc: 0.9125\n",
"Epoch 495/1500\n",
" - 2s - loss: 0.0946 - acc: 0.9099\n",
"Epoch 496/1500\n",
" - 2s - loss: 0.0927 - acc: 0.9016\n",
"Epoch 497/1500\n",
" - 3s - loss: 0.0945 - acc: 0.8964\n",
"Epoch 498/1500\n",
" - 3s - loss: 0.0947 - acc: 0.9016\n",
"Epoch 499/1500\n",
" - 2s - loss: 0.0947 - acc: 0.9104\n",
"Epoch 500/1500\n",
" - 2s - loss: 0.0943 - acc: 0.9021\n",
"Epoch 501/1500\n",
" - 2s - loss: 0.0929 - acc: 0.9120\n",
"Epoch 502/1500\n",
" - 2s - loss: 0.0923 - acc: 0.9078\n",
"Epoch 503/1500\n",
" - 2s - loss: 0.0942 - acc: 0.9057\n",
"Epoch 504/1500\n",
" - 2s - loss: 0.0941 - acc: 0.9047\n",
"Epoch 505/1500\n",
" - 2s - loss: 0.0936 - acc: 0.9151\n",
"Epoch 506/1500\n",
" - 2s - loss: 0.0944 - acc: 0.8980\n",
"Epoch 507/1500\n",
" - 2s - loss: 0.0960 - acc: 0.9094\n",
"Epoch 508/1500\n",
" - 2s - loss: 0.0932 - acc: 0.8959\n",
"Epoch 509/1500\n",
" - 2s - loss: 0.0947 - acc: 0.9078\n",
"Epoch 510/1500\n",
" - 2s - loss: 0.0922 - acc: 0.9094\n",
"Epoch 511/1500\n",
" - 2s - loss: 0.0956 - acc: 0.9078\n",
"Epoch 512/1500\n",
" - 2s - loss: 0.0928 - acc: 0.9037\n",
"Epoch 513/1500\n",
" - 2s - loss: 0.0929 - acc: 0.9130\n",
"Epoch 514/1500\n",
" - 2s - loss: 0.0935 - acc: 0.9063\n",
"Epoch 515/1500\n",
" - 2s - loss: 0.0921 - acc: 0.9120\n",
"Epoch 516/1500\n",
" - 2s - loss: 0.0929 - acc: 0.9052\n",
"Epoch 517/1500\n",
" - 2s - loss: 0.0932 - acc: 0.9068\n",
"Epoch 518/1500\n",
" - 3s - loss: 0.0929 - acc: 0.9078\n",
"Epoch 519/1500\n",
" - 2s - loss: 0.0936 - acc: 0.9073\n",
"Epoch 520/1500\n",
" - 2s - loss: 0.0933 - acc: 0.9047\n",
"Epoch 521/1500\n",
" - 2s - loss: 0.0935 - acc: 0.9114\n",
"Epoch 522/1500\n",
" - 2s - loss: 0.0912 - acc: 0.9182\n",
"Epoch 523/1500\n",
" - 2s - loss: 0.0934 - acc: 0.9120\n",
"Epoch 524/1500\n",
" - 2s - loss: 0.0920 - acc: 0.9026\n",
"Epoch 525/1500\n",
" - 2s - loss: 0.0932 - acc: 0.9089\n",
"Epoch 526/1500\n",
" - 2s - loss: 0.0925 - acc: 0.9006\n",
"Epoch 527/1500\n",
" - 2s - loss: 0.0933 - acc: 0.9047\n",
"Epoch 528/1500\n",
" - 2s - loss: 0.0910 - acc: 0.9151\n",
"Epoch 529/1500\n",
" - 2s - loss: 0.0916 - acc: 0.9047\n",
"Epoch 530/1500\n",
" - 2s - loss: 0.0931 - acc: 0.9021\n",
"Epoch 531/1500\n",
" - 2s - loss: 0.0922 - acc: 0.8980\n",
"Epoch 532/1500\n",
" - 2s - loss: 0.0924 - acc: 0.9042\n",
"Epoch 533/1500\n",
" - 2s - loss: 0.0906 - acc: 0.9078\n",
"Epoch 534/1500\n",
" - 2s - loss: 0.0935 - acc: 0.9037\n",
"Epoch 535/1500\n",
" - 2s - loss: 0.0930 - acc: 0.9047\n",
"Epoch 536/1500\n",
" - 2s - loss: 0.0919 - acc: 0.9078\n",
"Epoch 537/1500\n",
" - 2s - loss: 0.0919 - acc: 0.9151\n",
"Epoch 538/1500\n",
" - 2s - loss: 0.0918 - acc: 0.9042\n",
"Epoch 539/1500\n",
" - 2s - loss: 0.0906 - acc: 0.9083\n",
"Epoch 540/1500\n",
" - 2s - loss: 0.0917 - acc: 0.9021\n",
"Epoch 541/1500\n",
" - 2s - loss: 0.0924 - acc: 0.9140\n",
"Epoch 542/1500\n",
" - 3s - loss: 0.0914 - acc: 0.9063\n",
"Epoch 543/1500\n",
" - 2s - loss: 0.0915 - acc: 0.9130\n",
"Epoch 544/1500\n",
" - 2s - loss: 0.0909 - acc: 0.9135\n",
"Epoch 545/1500\n",
" - 2s - loss: 0.0929 - acc: 0.9021\n",
"Epoch 546/1500\n",
" - 2s - loss: 0.0911 - acc: 0.9218\n",
"Epoch 547/1500\n",
" - 2s - loss: 0.0896 - acc: 0.9104\n",
"Epoch 548/1500\n",
" - 2s - loss: 0.0920 - acc: 0.9146\n",
"Epoch 549/1500\n",
" - 2s - loss: 0.0912 - acc: 0.9006\n",
"Epoch 550/1500\n",
" - 2s - loss: 0.0928 - acc: 0.9011\n",
"Epoch 551/1500\n",
" - 2s - loss: 0.0919 - acc: 0.9114\n",
"Epoch 552/1500\n",
" - 2s - loss: 0.0925 - acc: 0.9057\n",
"Epoch 553/1500\n",
" - 2s - loss: 0.0909 - acc: 0.9037\n",
"Epoch 554/1500\n",
" - 2s - loss: 0.0911 - acc: 0.9114\n",
"Epoch 555/1500\n",
" - 2s - loss: 0.0900 - acc: 0.9063\n",
"Epoch 556/1500\n",
" - 2s - loss: 0.0915 - acc: 0.9047\n",
"Epoch 557/1500\n",
" - 2s - loss: 0.0892 - acc: 0.9068\n",
"Epoch 558/1500\n",
" - 2s - loss: 0.0911 - acc: 0.9047\n",
"Epoch 559/1500\n",
" - 2s - loss: 0.0896 - acc: 0.9114\n",
"Epoch 560/1500\n",
" - 2s - loss: 0.0919 - acc: 0.8959\n",
"Epoch 561/1500\n",
" - 2s - loss: 0.0901 - acc: 0.9187\n",
"Epoch 562/1500\n",
" - 2s - loss: 0.0901 - acc: 0.9114\n",
"Epoch 563/1500\n",
" - 2s - loss: 0.0895 - acc: 0.9068\n",
"Epoch 564/1500\n",
" - 2s - loss: 0.0906 - acc: 0.9047\n",
"Epoch 565/1500\n",
" - 2s - loss: 0.0898 - acc: 0.9089\n",
"Epoch 566/1500\n",
" - 2s - loss: 0.0911 - acc: 0.9042\n",
"Epoch 567/1500\n",
" - 2s - loss: 0.0906 - acc: 0.9161\n",
"Epoch 568/1500\n",
" - 2s - loss: 0.0903 - acc: 0.9047\n",
"Epoch 569/1500\n",
" - 2s - loss: 0.0900 - acc: 0.9073\n",
"Epoch 570/1500\n",
" - 2s - loss: 0.0907 - acc: 0.9001\n",
"Epoch 571/1500\n",
" - 2s - loss: 0.0897 - acc: 0.9130\n",
"Epoch 572/1500\n",
" - 2s - loss: 0.0891 - acc: 0.9140\n",
"Epoch 573/1500\n",
" - 2s - loss: 0.0899 - acc: 0.9130\n",
"Epoch 574/1500\n",
" - 2s - loss: 0.0893 - acc: 0.9052\n",
"Epoch 575/1500\n",
" - 2s - loss: 0.0893 - acc: 0.9130\n",
"Epoch 576/1500\n",
" - 2s - loss: 0.0881 - acc: 0.9156\n",
"Epoch 577/1500\n",
" - 2s - loss: 0.0890 - acc: 0.9078\n",
"Epoch 578/1500\n",
" - 2s - loss: 0.0906 - acc: 0.9146\n",
"Epoch 579/1500\n",
" - 2s - loss: 0.0888 - acc: 0.9114\n",
"Epoch 580/1500\n",
" - 2s - loss: 0.0899 - acc: 0.9037\n",
"Epoch 581/1500\n",
" - 2s - loss: 0.0906 - acc: 0.9073\n",
"Epoch 582/1500\n",
" - 2s - loss: 0.0900 - acc: 0.9089\n",
"Epoch 583/1500\n",
" - 2s - loss: 0.0892 - acc: 0.9171\n",
"Epoch 584/1500\n",
" - 2s - loss: 0.0892 - acc: 0.9083\n",
"Epoch 585/1500\n",
" - 2s - loss: 0.0895 - acc: 0.9114\n",
"Epoch 586/1500\n",
" - 2s - loss: 0.0889 - acc: 0.9094\n",
"Epoch 587/1500\n",
" - 2s - loss: 0.0890 - acc: 0.9047\n",
"Epoch 588/1500\n",
" - 2s - loss: 0.0879 - acc: 0.9052\n",
"Epoch 589/1500\n",
" - 2s - loss: 0.0885 - acc: 0.9063\n",
"Epoch 590/1500\n",
" - 2s - loss: 0.0901 - acc: 0.9109\n",
"Epoch 591/1500\n",
" - 2s - loss: 0.0888 - acc: 0.9254\n",
"Epoch 592/1500\n",
" - 2s - loss: 0.0879 - acc: 0.9130\n",
"Epoch 593/1500\n",
" - 2s - loss: 0.0892 - acc: 0.9104\n",
"Epoch 594/1500\n",
" - 2s - loss: 0.0873 - acc: 0.9063\n",
"Epoch 595/1500\n",
" - 2s - loss: 0.0880 - acc: 0.9213\n",
"Epoch 596/1500\n",
" - 2s - loss: 0.0884 - acc: 0.9104\n",
"Epoch 597/1500\n",
" - 2s - loss: 0.0898 - acc: 0.9130\n",
"Epoch 598/1500\n",
" - 2s - loss: 0.0887 - acc: 0.9078\n",
"Epoch 599/1500\n",
" - 2s - loss: 0.0876 - acc: 0.9161\n",
"Epoch 600/1500\n",
" - 2s - loss: 0.0879 - acc: 0.9073\n",
"Epoch 601/1500\n",
" - 2s - loss: 0.0877 - acc: 0.9099\n",
"Epoch 602/1500\n",
" - 2s - loss: 0.0894 - acc: 0.9078\n",
"Epoch 603/1500\n",
" - 2s - loss: 0.0865 - acc: 0.9078\n",
"Epoch 604/1500\n",
" - 2s - loss: 0.0873 - acc: 0.9125\n",
"Epoch 605/1500\n",
" - 2s - loss: 0.0887 - acc: 0.9094\n",
"Epoch 606/1500\n",
" - 2s - loss: 0.0885 - acc: 0.9073\n",
"Epoch 607/1500\n",
" - 2s - loss: 0.0875 - acc: 0.9109\n",
"Epoch 608/1500\n",
" - 2s - loss: 0.0885 - acc: 0.9208\n",
"Epoch 609/1500\n",
" - 2s - loss: 0.0875 - acc: 0.9202\n",
"Epoch 610/1500\n",
" - 2s - loss: 0.0870 - acc: 0.9140\n",
"Epoch 611/1500\n",
" - 2s - loss: 0.0883 - acc: 0.9166\n",
"Epoch 612/1500\n",
" - 2s - loss: 0.0878 - acc: 0.9094\n",
"Epoch 613/1500\n",
" - 2s - loss: 0.0881 - acc: 0.9182\n",
"Epoch 614/1500\n",
" - 2s - loss: 0.0891 - acc: 0.9146\n",
"Epoch 615/1500\n",
" - 2s - loss: 0.0880 - acc: 0.9021\n",
"Epoch 616/1500\n",
" - 2s - loss: 0.0884 - acc: 0.9166\n",
"Epoch 617/1500\n",
" - 2s - loss: 0.0873 - acc: 0.9089\n",
"Epoch 618/1500\n",
" - 2s - loss: 0.0873 - acc: 0.9099\n",
"Epoch 619/1500\n",
" - 2s - loss: 0.0854 - acc: 0.9037\n",
"Epoch 620/1500\n",
" - 2s - loss: 0.0878 - acc: 0.9063\n",
"Epoch 621/1500\n",
" - 2s - loss: 0.0877 - acc: 0.9120\n",
"Epoch 622/1500\n",
" - 2s - loss: 0.0879 - acc: 0.9130\n",
"Epoch 623/1500\n",
" - 2s - loss: 0.0876 - acc: 0.9073\n",
"Epoch 624/1500\n",
" - 2s - loss: 0.0881 - acc: 0.9213\n",
"Epoch 625/1500\n",
" - 2s - loss: 0.0872 - acc: 0.9083\n",
"Epoch 626/1500\n",
" - 2s - loss: 0.0875 - acc: 0.9052\n",
"Epoch 627/1500\n",
" - 3s - loss: 0.0867 - acc: 0.9068\n",
"Epoch 628/1500\n",
" - 3s - loss: 0.0858 - acc: 0.9151\n",
"Epoch 629/1500\n",
" - 2s - loss: 0.0878 - acc: 0.9099\n",
"Epoch 630/1500\n",
" - 2s - loss: 0.0869 - acc: 0.9151\n",
"Epoch 631/1500\n",
" - 2s - loss: 0.0860 - acc: 0.9099\n",
"Epoch 632/1500\n",
" - 2s - loss: 0.0887 - acc: 0.9052\n",
"Epoch 633/1500\n",
" - 2s - loss: 0.0879 - acc: 0.8938\n",
"Epoch 634/1500\n",
" - 2s - loss: 0.0858 - acc: 0.9109\n",
"Epoch 635/1500\n",
" - 2s - loss: 0.0872 - acc: 0.9063\n",
"Epoch 636/1500\n",
" - 2s - loss: 0.0866 - acc: 0.9166\n",
"Epoch 637/1500\n",
" - 2s - loss: 0.0865 - acc: 0.9234\n",
"Epoch 638/1500\n",
" - 2s - loss: 0.0860 - acc: 0.9151\n",
"Epoch 639/1500\n",
" - 2s - loss: 0.0868 - acc: 0.9104\n",
"Epoch 640/1500\n",
" - 2s - loss: 0.0863 - acc: 0.9161\n",
"Epoch 641/1500\n",
" - 2s - loss: 0.0865 - acc: 0.9218\n",
"Epoch 642/1500\n",
" - 2s - loss: 0.0871 - acc: 0.9073\n",
"Epoch 643/1500\n",
" - 2s - loss: 0.0854 - acc: 0.9135\n",
"Epoch 644/1500\n",
" - 2s - loss: 0.0865 - acc: 0.9026\n",
"Epoch 645/1500\n",
" - 2s - loss: 0.0863 - acc: 0.9125\n",
"Epoch 646/1500\n",
" - 2s - loss: 0.0856 - acc: 0.9187\n",
"Epoch 647/1500\n",
" - 2s - loss: 0.0864 - acc: 0.9094\n",
"Epoch 648/1500\n",
" - 3s - loss: 0.0875 - acc: 0.9135\n",
"Epoch 649/1500\n",
" - 2s - loss: 0.0856 - acc: 0.9177\n",
"Epoch 650/1500\n",
" - 2s - loss: 0.0859 - acc: 0.9135\n",
"Epoch 651/1500\n",
" - 2s - loss: 0.0872 - acc: 0.9140\n",
"Epoch 652/1500\n",
" - 2s - loss: 0.0859 - acc: 0.9161\n",
"Epoch 653/1500\n",
" - 2s - loss: 0.0854 - acc: 0.9135\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 654/1500\n",
" - 2s - loss: 0.0865 - acc: 0.9089\n",
"Epoch 655/1500\n",
" - 2s - loss: 0.0867 - acc: 0.9104\n",
"Epoch 656/1500\n",
" - 2s - loss: 0.0880 - acc: 0.9109\n",
"Epoch 657/1500\n",
" - 2s - loss: 0.0845 - acc: 0.9166\n",
"Epoch 658/1500\n",
" - 2s - loss: 0.0852 - acc: 0.9197\n",
"Epoch 659/1500\n",
" - 2s - loss: 0.0859 - acc: 0.9208\n",
"Epoch 660/1500\n",
" - 2s - loss: 0.0853 - acc: 0.9032\n",
"Epoch 661/1500\n",
" - 1s - loss: 0.0844 - acc: 0.9104\n",
"Epoch 662/1500\n",
" - 2s - loss: 0.0854 - acc: 0.9156\n",
"Epoch 663/1500\n",
" - 2s - loss: 0.0856 - acc: 0.9202\n",
"Epoch 664/1500\n",
" - 2s - loss: 0.0859 - acc: 0.9057\n",
"Epoch 665/1500\n",
" - 2s - loss: 0.0853 - acc: 0.9083\n",
"Epoch 666/1500\n",
" - 2s - loss: 0.0857 - acc: 0.9073\n",
"Epoch 667/1500\n",
" - 2s - loss: 0.0851 - acc: 0.9073\n",
"Epoch 668/1500\n",
" - 2s - loss: 0.0866 - acc: 0.9177\n",
"Epoch 669/1500\n",
" - 2s - loss: 0.0859 - acc: 0.9063\n",
"Epoch 670/1500\n",
" - 2s - loss: 0.0882 - acc: 0.9202\n",
"Epoch 671/1500\n",
" - 2s - loss: 0.0833 - acc: 0.9114\n",
"Epoch 672/1500\n",
" - 2s - loss: 0.0844 - acc: 0.9316\n",
"Epoch 673/1500\n",
" - 2s - loss: 0.0862 - acc: 0.9083\n",
"Epoch 674/1500\n",
" - 2s - loss: 0.0850 - acc: 0.9135\n",
"Epoch 675/1500\n",
" - 2s - loss: 0.0843 - acc: 0.9171\n",
"Epoch 676/1500\n",
" - 2s - loss: 0.0850 - acc: 0.9089\n",
"Epoch 677/1500\n",
" - 2s - loss: 0.0858 - acc: 0.9166\n",
"Epoch 678/1500\n",
" - 2s - loss: 0.0848 - acc: 0.9244\n",
"Epoch 679/1500\n",
" - 2s - loss: 0.0846 - acc: 0.9239\n",
"Epoch 680/1500\n",
" - 2s - loss: 0.0858 - acc: 0.9042\n",
"Epoch 681/1500\n",
" - 2s - loss: 0.0850 - acc: 0.9161\n",
"Epoch 682/1500\n",
" - 2s - loss: 0.0847 - acc: 0.9063\n",
"Epoch 683/1500\n",
" - 2s - loss: 0.0842 - acc: 0.9171\n",
"Epoch 684/1500\n",
" - 2s - loss: 0.0844 - acc: 0.9218\n",
"Epoch 685/1500\n",
" - 2s - loss: 0.0841 - acc: 0.9202\n",
"Epoch 686/1500\n",
" - 2s - loss: 0.0852 - acc: 0.9161\n",
"Epoch 687/1500\n",
" - 2s - loss: 0.0844 - acc: 0.9218\n",
"Epoch 688/1500\n",
" - 2s - loss: 0.0856 - acc: 0.9166\n",
"Epoch 689/1500\n",
" - 2s - loss: 0.0847 - acc: 0.9089\n",
"Epoch 690/1500\n",
" - 2s - loss: 0.0850 - acc: 0.9156\n",
"Epoch 691/1500\n",
" - 2s - loss: 0.0842 - acc: 0.9171\n",
"Epoch 692/1500\n",
" - 2s - loss: 0.0853 - acc: 0.9063\n",
"Epoch 693/1500\n",
" - 2s - loss: 0.0863 - acc: 0.9140\n",
"Epoch 694/1500\n",
" - 2s - loss: 0.0843 - acc: 0.9187\n",
"Epoch 695/1500\n",
" - 2s - loss: 0.0854 - acc: 0.9135\n",
"Epoch 696/1500\n",
" - 2s - loss: 0.0842 - acc: 0.9218\n",
"Epoch 697/1500\n",
" - 2s - loss: 0.0852 - acc: 0.9187\n",
"Epoch 698/1500\n",
" - 2s - loss: 0.0844 - acc: 0.9192\n",
"Epoch 699/1500\n",
" - 2s - loss: 0.0851 - acc: 0.9182\n",
"Epoch 700/1500\n",
" - 2s - loss: 0.0846 - acc: 0.9197\n",
"Epoch 701/1500\n",
" - 2s - loss: 0.0837 - acc: 0.9125\n",
"Epoch 702/1500\n",
" - 2s - loss: 0.0849 - acc: 0.9202\n",
"Epoch 703/1500\n",
" - 2s - loss: 0.0825 - acc: 0.9202\n",
"Epoch 704/1500\n",
" - 2s - loss: 0.0845 - acc: 0.9104\n",
"Epoch 705/1500\n",
" - 2s - loss: 0.0834 - acc: 0.9125\n",
"Epoch 706/1500\n",
" - 2s - loss: 0.0848 - acc: 0.9135\n",
"Epoch 707/1500\n",
" - 2s - loss: 0.0827 - acc: 0.9171\n",
"Epoch 708/1500\n",
" - 2s - loss: 0.0832 - acc: 0.9187\n",
"Epoch 709/1500\n",
" - 2s - loss: 0.0836 - acc: 0.9187\n",
"Epoch 710/1500\n",
" - 2s - loss: 0.0844 - acc: 0.9094\n",
"Epoch 711/1500\n",
" - 2s - loss: 0.0827 - acc: 0.9177\n",
"Epoch 712/1500\n",
" - 2s - loss: 0.0831 - acc: 0.9197\n",
"Epoch 713/1500\n",
" - 2s - loss: 0.0822 - acc: 0.9208\n",
"Epoch 714/1500\n",
" - 2s - loss: 0.0839 - acc: 0.9244\n",
"Epoch 715/1500\n",
" - 2s - loss: 0.0851 - acc: 0.9228\n",
"Epoch 716/1500\n",
" - 2s - loss: 0.0818 - acc: 0.9285\n",
"Epoch 717/1500\n",
" - 2s - loss: 0.0828 - acc: 0.9182\n",
"Epoch 718/1500\n",
" - 2s - loss: 0.0819 - acc: 0.9254\n",
"Epoch 719/1500\n",
" - 2s - loss: 0.0835 - acc: 0.9156\n",
"Epoch 720/1500\n",
" - 2s - loss: 0.0833 - acc: 0.9083\n",
"Epoch 721/1500\n",
" - 2s - loss: 0.0832 - acc: 0.9213\n",
"Epoch 722/1500\n",
" - 2s - loss: 0.0844 - acc: 0.9177\n",
"Epoch 723/1500\n",
" - 2s - loss: 0.0825 - acc: 0.9171\n",
"Epoch 724/1500\n",
" - 2s - loss: 0.0839 - acc: 0.9161\n",
"Epoch 725/1500\n",
" - 2s - loss: 0.0825 - acc: 0.9078\n",
"Epoch 726/1500\n",
" - 2s - loss: 0.0824 - acc: 0.9192\n",
"Epoch 727/1500\n",
" - 2s - loss: 0.0825 - acc: 0.9099\n",
"Epoch 728/1500\n",
" - 2s - loss: 0.0806 - acc: 0.9218\n",
"Epoch 729/1500\n",
" - 2s - loss: 0.0823 - acc: 0.9244\n",
"Epoch 730/1500\n",
" - 2s - loss: 0.0812 - acc: 0.9223\n",
"Epoch 731/1500\n",
" - 2s - loss: 0.0826 - acc: 0.9202\n",
"Epoch 732/1500\n",
" - 3s - loss: 0.0837 - acc: 0.9166\n",
"Epoch 733/1500\n",
" - 3s - loss: 0.0828 - acc: 0.9202\n",
"Epoch 734/1500\n",
" - 2s - loss: 0.0827 - acc: 0.9104\n",
"Epoch 735/1500\n",
" - 2s - loss: 0.0837 - acc: 0.9192\n",
"Epoch 736/1500\n",
" - 2s - loss: 0.0822 - acc: 0.9239\n",
"Epoch 737/1500\n",
" - 2s - loss: 0.0830 - acc: 0.9130\n",
"Epoch 738/1500\n",
" - 2s - loss: 0.0821 - acc: 0.9146\n",
"Epoch 739/1500\n",
" - 2s - loss: 0.0832 - acc: 0.9197\n",
"Epoch 740/1500\n",
" - 2s - loss: 0.0836 - acc: 0.9259\n",
"Epoch 741/1500\n",
" - 2s - loss: 0.0819 - acc: 0.9202\n",
"Epoch 742/1500\n",
" - 2s - loss: 0.0819 - acc: 0.9099\n",
"Epoch 743/1500\n",
" - 2s - loss: 0.0811 - acc: 0.9151\n",
"Epoch 744/1500\n",
" - 2s - loss: 0.0819 - acc: 0.9187\n",
"Epoch 745/1500\n",
" - 2s - loss: 0.0828 - acc: 0.9099\n",
"Epoch 746/1500\n",
" - 2s - loss: 0.0826 - acc: 0.9270\n",
"Epoch 747/1500\n",
" - 2s - loss: 0.0839 - acc: 0.9073\n",
"Epoch 748/1500\n",
" - 2s - loss: 0.0836 - acc: 0.9094\n",
"Epoch 749/1500\n",
" - 2s - loss: 0.0837 - acc: 0.9146\n",
"Epoch 750/1500\n",
" - 2s - loss: 0.0806 - acc: 0.9280\n",
"Epoch 751/1500\n",
" - 2s - loss: 0.0815 - acc: 0.9301\n",
"Epoch 752/1500\n",
" - 2s - loss: 0.0827 - acc: 0.9208\n",
"Epoch 753/1500\n",
" - 2s - loss: 0.0817 - acc: 0.9239\n",
"Epoch 754/1500\n",
" - 2s - loss: 0.0826 - acc: 0.9182\n",
"Epoch 755/1500\n",
" - 2s - loss: 0.0820 - acc: 0.9213\n",
"Epoch 756/1500\n",
" - 2s - loss: 0.0817 - acc: 0.9234\n",
"Epoch 757/1500\n",
" - 3s - loss: 0.0814 - acc: 0.9223\n",
"Epoch 758/1500\n",
" - 3s - loss: 0.0808 - acc: 0.9140\n",
"Epoch 759/1500\n",
" - 2s - loss: 0.0831 - acc: 0.9078\n",
"Epoch 760/1500\n",
" - 2s - loss: 0.0819 - acc: 0.9187\n",
"Epoch 761/1500\n",
" - 2s - loss: 0.0825 - acc: 0.9161\n",
"Epoch 762/1500\n",
" - 2s - loss: 0.0816 - acc: 0.9249\n",
"Epoch 763/1500\n",
" - 2s - loss: 0.0807 - acc: 0.9187\n",
"Epoch 764/1500\n",
" - 2s - loss: 0.0817 - acc: 0.9099\n",
"Epoch 765/1500\n",
" - 2s - loss: 0.0802 - acc: 0.9151\n",
"Epoch 766/1500\n",
" - 2s - loss: 0.0823 - acc: 0.9135\n",
"Epoch 767/1500\n",
" - 2s - loss: 0.0816 - acc: 0.9114\n",
"Epoch 768/1500\n",
" - 2s - loss: 0.0825 - acc: 0.9161\n",
"Epoch 769/1500\n",
" - 2s - loss: 0.0824 - acc: 0.9223\n",
"Epoch 770/1500\n",
" - 2s - loss: 0.0816 - acc: 0.9285\n",
"Epoch 771/1500\n",
" - 2s - loss: 0.0808 - acc: 0.9068\n",
"Epoch 772/1500\n",
" - 2s - loss: 0.0812 - acc: 0.9249\n",
"Epoch 00772: early stopping\n"
]
}
],
"source": [
"#Training\n",
"history=model.fit(train, label, batch_size=BATCHSIZE, epochs=EPOCH, verbose=2,
callbacks=[es])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Fonction de perte "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#capture 6"
]
},
{
"cell_type": "code",
"execution_count": 78,
"metadata": {},
"outputs": [
{
"data": {
"image/png":
"iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEg
AACxIB0t1+/
AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5v
cmcvnQurowAAIABJREFUeJzt3Xt4XNV97vHvTzOaGd3vlmRLtmVjGwzGBgsDMSQkJKm5BBJCciCnaZyS+Ek
fSNOmSWueUpq46WnapBDIMaQ0DWlzmhACpXGoU3MvSQBjGWODfJWvkuWL7vfbSOv8MWMjC2GNpZFGM/
N+nmcez957aeYnMbxaWnvttc05h4iIJJaUWBcgIiLRp3AXEUlACncRkQSkcBcRSUAKdxGRBKRwFxFJQAp3E
ZEEpHAXEUlACncRkQTkjdUbFxYWurlz58bq7UVE4tLWrVsbnXNFY7WLWbjPnTuXqqqqWL29iEhcMrPDkbTT
sIyISAJSuIuIJCCFu4hIAorZmLuIJJ6BgQHq6uro7e2NdSlxLxAIUFZWRmpq6ri+XuEuIlFTV1dHVlYWc+f
OxcxiXU7ccs7R1NREXV0dFRUV43oNDcuISNT09vZSUFCgYJ8gM6OgoGBCfwEp3EUkqhTs0THRn2PchfvWwy
38/X/vRrcHFBF5bxGFu5mtMrM9ZlZjZmtHOT7bzF40s21mtsPMro9+qSHV9W08/
NJ+DjV1T9ZbiIjEvTHD3cw8wHrgOmAxcLuZLR7R7B7gcefcJcBtwEPRLvSUaxbOAOC/
3z4+WW8hInGqtbWVhx469/i5/
vrraW1tPeevW716NU888cQ5f91UiKTnvgKocc4dcM71A48BN49o44Ds8PMcoD56JZ5pdkE6Vy8o5MHn97Gj
7tz/
Y4hI4nqvcA8Gg2f9uo0bN5KbmztZZcVEJFMhZwG1w7brgMtHtPkG8IyZfRnIAD4clerewz9+eim3PPQKd/
xrFb+66ypKcgKT+XYiMg7f/FU1O+vbo/qai2dm89cfu/A9j69du5b9+/
ezbNkyUlNTCQQC5OXlsXv3bvbu3cvHP/
5xamtr6e3t5Stf+Qpr1qwB3lnrqrOzk+uuu46rrrqKV155hVmzZvHLX/6StLS0MWt7/
vnn+drXvkYwGOSyyy7j4Ycfxu/3s3btWjZs2IDX6+WjH/0o3/3ud/
nFL37BN7/5TTweDzk5Obz88stR+xmdEq0TqrcDP3bOlQHXAz8xs3e9tpmtMbMqM6tqaGgY95vNyArwo9WX0
d0X5M+f3DH+qkUkoXz7299m/vz5vPnmm3znO9/hjTfe4IEHHmDv3r0A/
OhHP2Lr1q1UVVXx4IMP0tTU9K7X2LdvH3feeSfV1dXk5uby5JNPjvm+vb29rF69mp///
Oe89dZbBINBHn74YZqamnjqqaeorq5mx44d3HPPPQCsW7eOTZs2sX37djZs2BDdH0JYJD33o0D5sO2y8L7h
7gBWATjnXjWzAFAInBzeyDn3CPAIQGVl5YSmuywszuLzKyt46KUa2roHyEkf31VcIjI5ztbDniorVqw44yK
gBx98kKeeegqA2tpa9u3bR0FBwRlfU1FRwbJlywBYvnw5hw4dGvN99uzZQ0VFBQsXLgTgc5/7HOvXr+euu+
4iEAhwxx13cOONN3LjjTcCsHLlSlavXs2nP/
1pbrnllmh8q+8SSc99C7DAzCrMzEfohOnIXzVHgGsBzOwCIACMv2seoQ+eP4MhBy/vm/
S3EpE4lJGRcfr5Sy+9xHPPPcerr77K9u3bueSSS0a9SMjv959+7vF4xhyvPxuv18vrr7/
OrbfeytNPP82qVasA+MEPfsC3vvUtamtrWb58+ah/
QUzUmOHunAsCdwGbgF2EZsVUm9k6M7sp3OzPgC+a2XbgZ8BqNwUT0ZeV55KbnsqLe06O3VhEEl5WVhYdHR2
jHmtrayMvL4/09HR2797Na6+9FrX3XbRoEYcOHaKmpgaAn/zkJ3zgAx+gs7OTtrY2rr/
+eu6//362b98OwP79+7n88stZt24dRUVF1NbWnu3lxyWitWWccxuBjSP23Tvs+U5gZXRLG5snxVgxN59tRz
RrRkSgoKCAlStXctFFF5GWlkZxcfHpY6tWreIHP/
gBF1xwAYsWLeKKK66I2vsGAgEeffRRPvWpT50+ofqlL32J5uZmbr75Znp7e3HOcd999wHw9a9/
nX379uGc49prr2Xp0qVRq+UUi9WVnpWVlS4ad2L6/vP7+Mdn9/
LWNz5KVkDj7iKxtGvXLi644IJYl5EwRvt5mtlW51zlWF8bd8sPjLS0PDQ39Q313kVETov7cL9sbj4+Twq/
1UlVEZkkd955J8uWLTvj8eijj8a6rLOK+/Xc03weFpVksfdEZ6xLERFCa5En2sqQ69evn/
L3nOiQedz33AFm5gaob+2JdRkiSS8QCNDU1KRVWyfo1M06AoHxX30f9z13gJm5afx2X2NC9hhE4klZWRl1d
XVM5Ap0CTl1m73xSoxwz0mjq3+Q9p6grlQViaHU1NRx3xZOoishhmXmFKQDcLCpK8aViIhMDwkR7guKswDY
e2L0K9NERJJNQoT77Px0fN4Uak5qxoyICCRIuHtSjJk5mjEjInJKQoQ7QHF2gBPt717hTUQkGSVYuPfFugw
RkWkhYcK9JCfA8fZeXTwhIkIChXtxdoD+4BBtPQOxLkVEJOYSKNxDd085rnF3EZHECfeS7NAaDMfbFO4iIg
kT7sXhcD+pk6oiIpGFu5mtMrM9ZlZjZmtHOX6/mb0Zfuw1sym/
c8YMDcuIiJw25sJhZuYB1gMfAeqALWa2IXzfVACcc386rP2XgUsmodaz8ns95Gf4FO4iIkTWc18B1DjnDjj
n+oHHgJvP0v524GfRKO5cFWcHOKlwFxGJKNxnAbXDtuvC+97FzOYAFcALEy/
t3BVn+9VzFxEh+idUbwOecM4NjnbQzNaYWZWZVU3GYv4lukpVRASILNyPAuXDtsvC+0ZzG2cZknHOPeKcq3
TOVRYVFUVeZYRmZAdo7OxjYHAo6q8tIhJPIgn3LcACM6swMx+hAN8wspGZnQ/
kAa9Gt8TIlWQHcA4aOtR7F5HkNma4O+eCwF3AJmAX8LhzrtrM1pnZTcOa3gY85mK4uEtJTmg6pFaHFJFkF9
E9VJ1zG4GNI/
bdO2L7G9Era3xmZIUuZFK4i0iyS5grVCG0MiSgk6oikvQSKtzz032kekzTIUUk6SVUuKekGDOyApzQ4mEik
uQSKtwhdCHTiQ6Fu4gkt4QL95KcgJb9FZGkl3DhXpjpp6mrP9ZliIjEVMKFe166j7aeAYK6SlVEkljChXt+
hg/n0L1URSSpJVy452X4AGjp1tCMiCSvhAv3/
PRQuDd3qecuIskr8cI93HNv6tRVqiKSvBIu3IuztXiYiEjChXt+hg+fJ4XjWl9GRJJYwoW7mVGc4+d4W0+s
SxERiZmEC3eA0uw0jukqVRFJYgkZ7iU5Aa0MKSJJLWHD/
VhbLzG8KZSISEwlZrhnB+gPDtHSrbnuIpKcIgp3M1tlZnvMrMbM1r5Hm0+b2U4zqzazn0a3zHNTGr4j0zGd
VBWRJDXmPVTNzAOsBz4C1AFbzGyDc27nsDYLgLuBlc65FjObMVkFR6IoKzTXvaFD0yFFJDlF0nNfAdQ45w4
45/
qBx4CbR7T5IrDeOdcC4Jw7Gd0yz01ueAkCLR4mIskqknCfBdQO264L7xtuIbDQzH5nZq+Z2apoFTgeeempA
LRqzF1EktSYwzLn8DoLgGuAMuBlM1vinGsd3sjM1gBrAGbPnh2lt363nLRQuGtlSBFJVpH03I8C5cO2y8L7
hqsDNjjnBpxzB4G9hML+DM65R5xzlc65yqKiovHWPCavJ4WsgFc9dxFJWpGE+xZggZlVmJkPuA3YMKLNfxL
qtWNmhYSGaQ5Esc5zlpueSqt67iKSpMYMd+dcELgL2ATsAh53zlWb2TozuyncbBPQZGY7gReBrzvnmiar6E
jkZ/
hp7FS4i0hyimjM3Tm3Edg4Yt+9w5474Kvhx7SwYEYmL+9tiHUZIiIxkZBXqAKcX5LFyY4+3bRDRJJSwob7/
KJMAA41dce4EhGRqZew4V6aG1qC4LiW/
hWRJJS44Z6dBmh9GRFJTgkb7tlpXtJSPeq5i0hSSthwNzNKw+u6i4gkm4QNdwiNu2tYRkSSUUKHe0l2moZl
RCQpJXS4l+YEONHRx+CQbrcnIsklocO9JCfA4JCjURcyiUiSSehwf+d2exqaEZHkktDhXnIq3Ft1UlVEkkt
Ch/vMnFMXMqnnLiLJJaHDPTc9Fb83hePtCncRSS4JHe66kElEklVChzuExt2P60ImEUkyCR/
upTlp1Leq5y4iySXhw70kJ8CJ9l6GdCGTiCSRhA/
3mTkBgkOOxi5dyCQiySOicDezVWa2x8xqzGztKMdXm1mDmb0Zfnwh+qWOT0l4OqTWmBGRZDJmuJuZB1gPXA
csBm43s8WjNP25c25Z+PHDKNc5brpKVUSSUSQ99xVAjXPugHOuH3gMuHlyy4qeU1epqucuIskkknCfBdQO2
64L7xvpk2a2w8yeMLPy0V7IzNaYWZWZVTU0NIyj3HOXn+7D50mhXtMhRSSJROuE6q+Auc65i4FngX8drZFz
7hHnXKVzrrKoqChKb312KSlGcY5fPXcRSSqRhPtRYHhPvCy87zTnXJNz7tR0lB8Cy6NTXnSU5qRpzF1Ekko
k4b4FWGBmFWbmA24DNgxvYGalwzZvAnZFr8SJK80JqOcuIkllzHB3zgWBu4BNhEL7cedctZmtM7Obws3+2M
yqzWw78MfA6skqeDxm5qZxrK1Hd2QSkaThjaSRc24jsHHEvnuHPb8buDu6pUXP7Px0BgYd9a09lOenx7ocE
ZFJl/BXqALMKQgF+pHm7hhXIiIyNZIk3DMAhbuIJI+kCPcZWX5STFepikjySIpwT/
WkUJTl17ruIpI0kiLcAUqydUcmEUkeyRPuut2eiCSRpAn3OQUZHGnu1k07RCQpJE24VxRm0B8c4mirxt1FJ
PElVbgDHGzsinElIiKTL2nCfZ7CXUSSSNKEe1GWn0y/
lwMNnbEuRURk0iVNuJsZFYUZHFDPXUSSQNKEO4TG3Q80KNxFJPElVbjPK8qgvq2H3oHBWJciIjKpkirc5xd
l4pxOqopI4kuqcJ9XFJoxo6EZEUl0SRXup+a6a8aMiCS6pAr3dJ+XmTkB9ivcRSTBRRTuZrbKzPaYWY2ZrT
1Lu0+amTOzyuiVGF3zijI1HVJEEt6Y4W5mHmA9cB2wGLjdzBaP0i4L+AqwOdpFRtP8otB0SOe0gJiIJK5Ie
u4rgBrn3AHnXD/
wGHDzKO3+Bvh7YFqvqzuvKJPOviANHX2xLkVEZNJEEu6zgNph23XhfaeZ2aVAuXPuv872Qma2xsyqzKyqoa
HhnIuNhvNmZAKw76TG3UUkcU34hKqZpQD3AX82Vlvn3CPOuUrnXGVRUdFE33pcFhZnAbDneEdM3l9EZCpEE
u5HgfJh22XhfadkARcBL5nZIeAKYMN0PalamOkjLz2VfScV7iKSuCIJ9y3AAjOrMDMfcBuw4dRB51ybc67Q
OTfXOTcXeA24yTlXNSkVT5CZsbA4Sz13EUloY4a7cy4I3AVsAnYBjzvnqs1snZndNNkFToaFxVnsPdGpGTM
ikrC8kTRyzm0ENo7Yd+97tL1m4mVNriWzcvjJa4fZVtvKpbPzYl2OiEjUJdUVqqfccHEpgdQUnt5+LNaliI
hMiqQM9wy/l7kFGRxq0pWqIpKYkjLcAeYWZHBY4S4iCSppw31OYTq1zT30BXXjDhFJPEkb7ldUFNA/
OMTvahpjXYqISNQlbbi/
77wCPCnGG4dbY12KiEjUJW24+70eZuWmcbi5O9aliIhEXdKGO8CcgnSO6KSqiCSgpA73+UWZ7DnRwfG2ab1
KsYjIOUvqcP/c+
+bSOzDEr7bXx7oUEZGoSupwryjMYGZOgLeOtsW6FBGRqErqcAdYUpbD9jrNmBGRxJL04b6iooDDTd3Ut/
bEuhQRkahJ+nB/3/wCAF7Z3xTjSkREoifpw31RcRb5GT5e2a8rVUUkcSR9uKekGFfOK+DV/
U26eYeIJIykD3cILUVwrK2Xg426oElEEoPCHXjf/
EIAfqdxdxFJEBGFu5mtMrM9ZlZjZmtHOf4lM3vLzN40s9+a2eLolzp55hakMys3jfuf3Ut770CsyxERmbAx
w93MPMB64DpgMXD7KOH9U+fcEufcMuAfgPuiXukkMjO++pGFNHf18/
qB5liXIyIyYZH03FcANc65A865fuAx4ObhDZxz7cM2M4C4OzN5w8WleFOMN460xLoUEZEJ80bQZhZQO2y7D
rh8ZCMzuxP4KuADPjTaC5nZGmANwOzZs8+11kkVSPWweGa2wl1EEkLUTqg659Y75+YDfwHc8x5tHnHOVTrn
KouKiqL11lFzSXku24600tatcXcRiW+RhPtRoHzYdll433t5DPj4RIqKlZuWzSI45Ljv2T2xLkVEZEIiCfc
twAIzqzAzH3AbsGF4AzNbMGzzBmBf9EqcOsvn5HHdRSVs2F7P4FDcnTYQETltzHB3zgWBu4BNwC7gcedctZ
mtM7Obws3uMrNqM3uT0Lj75yat4kn2kcXFtHQPsLO+fezGIiLTVCQnVHHObQQ2jth377DnX4lyXTFz5bxTC
4k1sqQsJ8bViIiMj65QHWFGdoD5RRm8ekBXq4pI/FK4j+LqBUW8tKeBb/96d6xLEREZF4X7KL5wdQUAP/
if/TR29sW4GhGRc6dwH0VZXjpPf/kqAP5nT0OMqxEROXcK9/dwQWk2mX4vmw9q7F1E4o/C/
T14Uoyrzivk8ao63j7aFutyRETOicL9LP7PLUtI93n4x2f2MKSLmkQkjijczyI/
w8effHgBL+5p4NldJ2JdjohIxBTuY/jDlRXMzk/ne8/to3dgMNbliIhEROE+Bq8nhT/9yAJ2HWtn/
Ys1sS5HRCQiCvcIfOKSMpaW5/L9F2o40NAZ63JERMakcI/
QDUtKALjnP9+OcSUiImOLaOEwgS9ePY+BQcd3Nu1h9/F2zi/JjnVJIiLvST33CJkZn1kRujXgqu/
9hq2HdTs+EZm+FO7nIC/Dxx1Xhdad+b8vxOX9SEQkSSjcz9Ff3bj49Nz3n24+EutyRERGpXAfhy9ePY/
Fpdnc9+wezX0XkWlJ4T4OGX4vf3XjYho7+/nEQ6/
Q1ReMdUkiImeIKNzNbJWZ7TGzGjNbO8rxr5rZTjPbYWbPm9mc6Jc6vVw5v4D7/9dSdh1r55GXD2jtGRGZVs
YMdzPzAOuB64DFwO1mtnhEs21ApXPuYuAJ4B+iXeh09IlLyvjwBTN44Pl9rHrgZfqDQ7EuSUQEiKznvgKoc
c4dcM71A48BNw9v4Jx70TnXHd58DSiLbpnT17c+voQr5xWw90QnC+/
5NVsPN8e6JBGRiMJ9FlA7bLsuvO+93AH8erQDZrbGzKrMrKqhITHucFSSE+CnX7ycL4SnSN7+z5vZdaw9xl
WJSLKL6glVM/
t9oBL4zmjHnXOPOOcqnXOVRUVF0XzrmDIz7rlxMS9+7Rr8nhT+7te7NQYvIjEVSbgfBcqHbZeF953BzD4M/
CVwk3MuKe8qXVGYwR99cD4v723gtn9+jed2nuDF3SdjXZaIJKFI1pbZAiwwswpCoX4b8JnhDczsEuCfgFXO
uaROsy+9fz5pqR6++audvH4wNP5e/
c3fI8OvZXxEZOqM2XN3zgWBu4BNwC7gcedctZmtM7Obws2+A2QCvzCzN81sw6RVPM2lpBifX1nBJy9955zy
hX+9id3H2zVUIyJTxpyLTeBUVla6qqqqmLz3VOgdGKSxs4+/
eHIHv6tpAmBpeS7/9ocryElLjXF1IhKvzGyrc65yrHa6QnWSBFI9lOWl8//
uuJw7PzgfgO21rXz2XzbT0TtAcFBz4kVk8qjnPkXaegb45MOvUHPynTs5/
fjzl3HNohkxrEpE4o167tNMTloqz/7p+/npFy5ndn46AKsf3cJlf/
sctc3dY3y1iMi5Uc89BgYGh9hysJmvP7GDo609AMzI8jOvKIMPnT+DNe+fH+MKRWS6irTnrnCPsf/
acYw7f/rGu/afX5LFT+64nKIsfwyqEpHpSuEeR440dVOU5edoaw83fv839A6ETrYWZvrJDni5aFYO3/
rERWQHNMtGJNkp3OOUcw4zY8P2er719E5Odrxzse+qC0v40AUzWHleITNzAhxr66UkO0BKisWwYhGZSgr3B
OCco7t/kFseeoU9JzrOODYzJ0B9Wy+Xzs7l+5+5lFm5aTGqUkSmksI9gfQHhzjS3EXNyU66+we5+z/eom/
E2vHnzchkflEG2YFUOvuCLC3P5Usf0IlZkUSjcE9gfcFBvvfcPj528Uz+7dVD/
PLNegB6RtzP9VPLy1g8M5sLZ+YwMzdAWV56DKoVkWhSuCehlq5+PvujzSwty+XfNx951/
GlZTnMLsjgwpnZ3LCklLK8NMw0Xi8STxTuScw5x6v7m9h6uIWDTV04B5sPNNE/
6GjsfOcEbWGmD4DGzn5uWFLKvR9bTGGmn4HBIQKpnliVLyJnoXCXUbX1DFBd38Y//
c8Bdh1rP2M2zimpHuOC0mx21LVx1XmF3LxsJk++UcfHls7klkvKSPMp+EViReEuEWnp6mcw3NP/
8s+2MTs/nSVlOew61s6Bhq53tfd5U5iZE6B3YIh//oNKPCnGifZestNSmZ2fjsOR5U/
F503BoymaIlGncJdz1tM/SCA15fQ4/NHWHtq6B/B6jI7eAV7d38TOY+1sfOv4WV+nPD+Nnv4hZuWlMSc/
nYvLcpidn85v9jWSm57K51dW8Jt9DfQHh/
hUZflZX0tEzqRwl0nT0x9aq35T9XEaOvuobe7mSHM3K+cX8tuaRqrrz36D8HmFGRxoDP1VsPK8Am5dXkZTZ
z/
XLJpBXnoqD720nzuuqmBmbhoHGjopz08n1aM17kRA4S4x1BccxJuSwt4THbT3DDC3MINX9jdS3xq6ova7z+
zhWFvvqF+bk5ZKW88AAIHUFHoHhpiVm0Zxth8HXHv+DFZUFPD87hNk+LzcvmI22Wle/
F6dB5DkoHCXaa+1u5/a5h42H2zi2guKeWH3SV7acxJPirG9tpW8DB/dfYMcbx/
9F8EpnhQjP8NHUaafNJ+HE+291LX0UJoT4Mp5Bfz+lXOYV5jBsztP0NLdz2evmMugcxxr7eG8GZmaDipxJa
rhbmargAcAD/BD59y3Rxx/P/
A94GLgNufcE2O9psJdzqa7P4jf68GTYgwNOV472MTQEPzHtjpy0lKpPtqO12NUHW5hXmEGu4+HlmcoyvLTM
MoMoOGyA178qR4aOvo4vySLvHQfKSlQkp3G9UtK6AsO8duaRgoz/
VwyO5eZOWnMLUynuauf0pw0Boccu4+3s7g0W78YZMpFGu7eCF7IA6wHPgLUAVvMbINzbuewZkeA1cDXxleu
yJnSfe98NFNSjPfNLwTgqgWFZ7QbGnKnF05r6eonL8OHc46DjaHlGlp7Bqhv7eFwUzcHGrsozvLT1NVPVsD
L5RUFPL2jnv0NnaenhD75Rt1Z6/
J5UpiVl8bB8DmDO66qoCwvjZaufurbetl3ooNZeWncsGQmF5flcLipm3S/h6JMPy/
va+Dq84oozw+tA6RfDDKZxgx3YAVQ45w7AGBmjwE3A6fD3Tl3KHxMNwaVKTV8Rcy8jNBFWWbGvKJM5hVljv
n1f3RNaP2dY209DA45quvbyQ6k0tzVz94THZzs6GVg0PHE1lDop/
k8lOWl0TswyLG2Xv7ltwff9Zrb69rGnFF0yg0Xl9LZG6SiMIN0n4fHq+pYPDObi2ZmU56fTl66j66+INX17
RRn+7ntstnUtnRzuKmbqxcW0jswSENHH8XZAQoztfa/vGPMYRkzuxVY5Zz7Qnj
7s8Dlzrm7Rmn7Y+Dp9xqWMbM1wBqA2bNnLz98+PDEqheZIsP/Qji1faipi3lFmTxTfZwnttZRnp/
OBxfNwOdN4WBjJ0dberhkTh5Nnf08ubWO1p4Bjrf1kO7zkp/
h462jbVGvM8PnoXJuPrXN3WT4vRRnB+joHaA0J0B+hp/CLB+Zfi8Li7PYc7yDrv4gBRk+ls/
JI9Ofyr6THbxvfiGdvUG6B4KU5qTRHxwi1WM4F5oeq2UrYitqwzLR5Jx7BHgEQmPuU/neIhMxcs38lBQ7/
ZfBRy8s4aMXlpxxfEVF/hnbty4ve9dr9g4M0to9QG1LN0tm5dDQ0UdZXhrBIUddSw/
OOepbe2nu7ifL72XzwWaeqT7OjUtnsuVgM28dbSPTH5oxtL+hk9/VNHLpnDyqj7ZRH56NdLS1h+au/
nP6XofPWLp6QSE76tpo6xnAm2IEhxwfvqCYhcWZPPTSfjwpxh9/
aAEdvQPMn5HJU9uOkh3wctV5hWT4vZTlpVOSE/
oFU13fTnvPAB9bOpOW7n4WFWcxMOjYe6KDpeW5tPcO0N03SElO4JzqldFF0nO/EviGc+73wtt3Azjn/
m6Utj/mLD334XRCVWRyBAeH2FbbyvLZeaSkGHUt3fzlU2/jgD/58AJy0lLZdqSVGVl+
+oJDbDvSwowsP28caaWlu5+S7AB7T3TQ0NFHdloqXf1BirMCLJ+TR9XhFrYebolKnaemuo60ZFYOgdQUegY
GGQg6SnMDdPQGyQp4+cDCImpOdpKX7uOyinzeqmtl25FW0nweFhVnceGs7NBaSgeb6ewLcttl5TR19bOsLJ
fOviCl4V8cnhR7118fBxo6yU330dDRx5yC9Gm7vlLUZsuYmRfYC1wLHAW2AJ9xzlWP0vbHKNxFEtrA4BANH
X2kpXrI8Ht5YfcJ8tJ9p5ebWFaey4HGLrYebqGps4/a5h4WlmSRl55KihlvHW2jtrmb1p4BCjJ8/
Prt46f/WkhLDZ3TyAx42XakFYB0n4dAqof2ngGCQ9H5gz/L76VvcIiiTP/p+xRX17eFvz/
HrNxTM6QGWFyazdHWbubkZ3C4uYvcNB8Dg0O09w5w07JZ/
OrNepaW55DpTyU3PZUPLCzihd0n8XlDJ9+LMv2Uh5dsi63vAAAFxElEQVTbrq5vw+tJoaIwY9z3R472VMjr
CU119AA/cs79rZmtA6qccxvM7DLgKSAP6AWOO+cuPNtrKtxF5BTnHM1d/RQMOync3R/
kcFM3F5RmA9DZF6Slq58Mv5fg4BCbDzYzMzdAeV46nhTjjSOt9AeHSPd58Kem8Ez1Ccry0vCneqhr6WbzgW
YGBoeobe5mSVkOpTlp1JzspKGjD583hVSPkZvu42BjF5l+L/
WtPWfcFMeTYiwqzuJkR98Zq6uOx7qbL+QPrpw7rq/
VRUwiIhMwNOToHxxi17F2yvPTKcjwnR7Kaezs4+nt9ayoKKA8P43W7gEONnbR3NXP64eaOb8ki4IMP9lpXg
40dNHVH6S5s5+5hRnkZ/
i4bG7+9Oi5TwaFu4jIuYs03LUak4hIAlK4i4gkIIW7iEgCUriLiCQghbuISAJSuIuIJCCFu4hIAlK4i4gko
JhdxGRmDcB41/
wtBBqjWM5UUd1TS3VPvXitPZ7qnuOcKxqrUczCfSLMrCqSK7SmG9U9tVT31IvX2uO17rPRsIyISAJSuIuIJ
KB4DfdHYl3AOKnuqaW6p1681h6vdb+nuBxzFxGRs4vXnruIiJxF3IW7ma0ysz1mVmNma2Ndz3Bm9iMzO2lm
bw/bl29mz5rZvvC/
eeH9ZmYPhr+PHWZ2aQzrLjezF81sp5lVm9lX4qF2MwuY2etmtj1c9zfD+yvMbHO4vp+bmS+83x/
ergkfnxuLuofV7zGzbWb2dLzUbWaHzOwtM3vTzKrC+6b15yRcS66ZPWFmu81sl5ldGQ91T0RchbuZeYD1wH
XAYuB2M1sc26rO8GNg1Yh9a4HnnXMLgOfD2xD6HhaEH2uAh6eoxtEEgT9zzi0GrgDuDP9cp3vtfcCHnHNLg
WXAKjO7Avh74H7n3HlAC3BHuP0dQEt4//3hdrH0FWDXsO14qfuDzrllw6YOTvfPCcADwH87584HlhL6ucdD
3ePnnIubB3AlsGnY9t3A3bGua0SNc4G3h23vAUrDz0uBPeHn/
wTcPlq7WD+AXwIfiafagXTgDeByQhejeEd+ZoBNwJXh595wO4tRvWWEAuVDwNOAxUndh4DCEfum9ecEyAEO
jvyZTfe6J/qIq547MAuoHbZdF943nRU7546Fnx8HisPPp+X3Ev6T/
xJgM3FQe3ho403gJPAssB9odc4FR6ntdN3h421AwdRWfNr3gD8HTt2BuYD4qNsBz5jZVjNbE9433T8nFUAD
8Gh4GOyHZpbB9K97QuIt3OOaC3UDpu30JDPLBJ4E/
sQ51z782HSt3Tk36JxbRqgnvAI4P8YljcnMbgROOue2xrqWcbjKOXcpoaGLO83s/
cMPTtPPiRe4FHjYOXcJ0MU7QzDAtK17QuIt3I8C5cO2y8L7prMTZlYKEP73ZHj/tPpezCyVULD/
u3PuP8K746J2AOdcK/AioeGMXDPzhg8Nr+103eHjOUDTFJcKsBK4ycwOAY8RGpp5gOlfN865o+F/
TwJPEfqFOt0/J3VAnXNuc3j7CUJhP93rnpB4C/
ctwILwrAIfcBuwIcY1jWUD8Lnw888RGs8+tf8PwmfmrwDahv2JOKXMzIB/
AXY55+4bdmha125mRWaWG36eRug8wS5CIX9ruNnIuk99P7cCL4R7bFPKOXe3c67MOTeX0Gf4Befc/
2aa121mGWaWdeo58FHgbab558Q5dxyoNbNF4V3XAjuZ5nVPWKwH/c/1AVwP7CU0tvqXsa5nRG0/
A44BA4R6C3cQGht9HtgHPAfkh9saoZk/+4G3gMoY1n0VoT9JdwBvhh/XT/
fagYuBbeG63wbuDe+fB7wO1AC/APzh/YHwdk34+Lxp8Jm5Bng6HuoO17c9/Kg+9f/fdP+chGtZBlSFPyv/
CeTFQ90TeegKVRGRBBRvwzIiIhIBhbuISAJSuIuIJCCFu4hIAlK4i4gkIIW7iEgCUriLiCQghbuISAL6/3t
hvgQo4+8AAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(history.history['loss'])\n",
"plt.legend(['train_loss'])\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Prédiction du tirage suivant le dernier tirage de notre dataset de train"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py:595:
DataConversionWarning: Data with input dtype int64 was converted to float64 by
StandardScaler.\n",
" warnings.warn(msg, DataConversionWarning)\n",
"/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:4:
DataConversionWarning: Data with input dtype int64 were all converted to float64 by
StandardScaler.\n",
" after removing the cwd from sys.path.\n"
]
}
],
"source": [
"#Prediction basée sur les 12 derniers tirages\n",
"last_twelve = df.tail(window_length) # on recupere les 12 derniers tirages\n",
"scaler = StandardScaler().fit(df.values)\n",
"scaled_to_predict = scaler.transform(last_twelve)\n",
"scaled_predicted_output_1 = model.predict(np.array([scaled_to_predict]))"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 9 15 21 31 39 4]\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/anaconda3/lib/python3.6/site-packages/sklearn/preprocessing/data.py:645:
DataConversionWarning: Data with input dtype int64 were all converted to float64 by
StandardScaler.\n",
" return self.partial_fit(X, y)\n",
"/anaconda3/lib/python3.6/site-packages/ipykernel_launcher.py:4:
DataConversionWarning: Data with input dtype int64 were all converted to float64 by
StandardScaler.\n",
" after removing the cwd from sys.path.\n"
]
}
],
"source": [
"#prediction\n",
"tom = df.tail(window_length).iloc[:,0:6] # \n",
"scaler = StandardScaler().fit(df.iloc[:,0:6])\n",
"scaled_to_predict = scaler.transform(tom)\n",
"print(scaler.inverse_transform(scaled_predicted_output_1).astype(int)[0])"
]
},
{
"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.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}