1058 lines
177 KiB
Plaintext
1058 lines
177 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import os\n",
|
||
"import librosa\n",
|
||
"import numpy as np\n",
|
||
"import pandas as pd\n",
|
||
"import seaborn as sns\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import tensorflow as tf\n",
|
||
"from tensorflow.keras.layers import Conv2D\n",
|
||
"from tensorflow.keras.preprocessing.sequence import pad_sequences\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"from sklearn.metrics import classification_report\n",
|
||
"from tensorflow.keras import layers, models\n",
|
||
"from pydub import AudioSegment\n",
|
||
"from keras.utils import plot_model\n",
|
||
"from tensorflow import keras\n",
|
||
"from IPython.display import HTML, display\n",
|
||
"from torch.utils.data import DataLoader, Dataset, TensorDataset\n",
|
||
"import torch\n",
|
||
"import torchaudio\n",
|
||
"from transformers import Wav2Vec2Processor, Wav2Vec2Model\n",
|
||
"import torch.nn as nn\n",
|
||
"import torch.optim as optim\n",
|
||
"os.environ[\"CUDA_LAUNCH_BLOCKING\"] = \"1\"\n",
|
||
"device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n",
|
||
"from tensorflow.keras import regularizers\n",
|
||
"from tensorflow.keras.callbacks import EarlyStopping, ReduceLROnPlateau"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def read_wave(folder_path, max_duration=None):\n",
|
||
" audio_data = []\n",
|
||
" sample_rates = []\n",
|
||
" labels = []\n",
|
||
"\n",
|
||
" for root, dirs, files in os.walk(folder_path):\n",
|
||
" for file in files:\n",
|
||
" if file.endswith(\".wav\"):\n",
|
||
" file_path = os.path.join(root, file)\n",
|
||
" label = os.path.splitext(file)[0] \n",
|
||
" try:\n",
|
||
" audio, sr = librosa.load(file_path, sr=None, duration=max_duration)\n",
|
||
" sample_rates.append(sr)\n",
|
||
" audio_data.append(audio)\n",
|
||
" labels.append(label)\n",
|
||
" except Exception as e:\n",
|
||
" print(f\"Error processing file {file}: {str(e)}\")\n",
|
||
"\n",
|
||
" return audio_data, sample_rates, labels"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"speech_audio,speech_sar,speech_labels = read_wave('C:\\\\Users\\\\garci\\\\OneDrive\\\\Área de Trabalho\\\\Ambiente de trabalho unbunto\\\\Cienciadedados\\\\IPL\\\\Tese\\\\RAVDNESS\\\\Audio\\\\Speech', max_duration=10.0)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"speech_data = pd.DataFrame({'audio':speech_audio,'sample_rate':speech_sar,'label':speech_labels})"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"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>audio</th>\n",
|
||
" <th>sample_rate</th>\n",
|
||
" <th>label</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>03-01-01-01-01-01-01</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>[0.0, 0.0, -3.0517578e-05, 0.0, 0.0, 0.0, 0.0,...</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>03-01-01-01-01-02-01</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>[3.0517578e-05, 3.0517578e-05, 0.0, 3.0517578e...</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>03-01-01-01-02-01-01</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>[3.0517578e-05, 3.0517578e-05, 3.0517578e-05, ...</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>03-01-01-01-02-02-01</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>[3.0517578e-05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>03-01-02-01-01-01-01</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" audio sample_rate \\\n",
|
||
"0 [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... 48000 \n",
|
||
"1 [0.0, 0.0, -3.0517578e-05, 0.0, 0.0, 0.0, 0.0,... 48000 \n",
|
||
"2 [3.0517578e-05, 3.0517578e-05, 0.0, 3.0517578e... 48000 \n",
|
||
"3 [3.0517578e-05, 3.0517578e-05, 3.0517578e-05, ... 48000 \n",
|
||
"4 [3.0517578e-05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... 48000 \n",
|
||
"\n",
|
||
" label \n",
|
||
"0 03-01-01-01-01-01-01 \n",
|
||
"1 03-01-01-01-01-02-01 \n",
|
||
"2 03-01-01-01-02-01-01 \n",
|
||
"3 03-01-01-01-02-02-01 \n",
|
||
"4 03-01-02-01-01-01-01 "
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"speech_data.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"audio_data=speech_data"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"audio_data['modality']= audio_data['label'].str.split('-',expand=True)[0].astype(int)\n",
|
||
"audio_data['vocal_channel']= audio_data['label'].str.split('-',expand=True)[1].astype(int)\n",
|
||
"audio_data['emotion']= audio_data['label'].str.split('-',expand=True)[2].astype(int)\n",
|
||
"audio_data['emotional_intensity'] = audio_data['label'].str.split('-',expand=True)[3].astype(int)\n",
|
||
"audio_data['statement']= audio_data['label'].str.split('-',expand=True)[4].astype(int)\n",
|
||
"audio_data['repetition']= audio_data['label'].str.split('-',expand=True)[5].astype(int)\n",
|
||
"audio_data['actor']= audio_data['label'].str.split('-',expand=True)[6].astype(int)"
|
||
]
|
||
},
|
||
{
|
||
"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>audio</th>\n",
|
||
" <th>sample_rate</th>\n",
|
||
" <th>label</th>\n",
|
||
" <th>modality</th>\n",
|
||
" <th>vocal_channel</th>\n",
|
||
" <th>emotion</th>\n",
|
||
" <th>emotional_intensity</th>\n",
|
||
" <th>statement</th>\n",
|
||
" <th>repetition</th>\n",
|
||
" <th>actor</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>03-01-01-01-01-01-01</td>\n",
|
||
" <td>3</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",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>[0.0, 0.0, -3.0517578e-05, 0.0, 0.0, 0.0, 0.0,...</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>03-01-01-01-01-02-01</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>[3.0517578e-05, 3.0517578e-05, 0.0, 3.0517578e...</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>03-01-01-01-02-01-01</td>\n",
|
||
" <td>3</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",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>[3.0517578e-05, 3.0517578e-05, 3.0517578e-05, ...</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>03-01-01-01-02-02-01</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>[3.0517578e-05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>03-01-02-01-01-01-01</td>\n",
|
||
" <td>3</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",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" audio sample_rate \\\n",
|
||
"0 [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... 48000 \n",
|
||
"1 [0.0, 0.0, -3.0517578e-05, 0.0, 0.0, 0.0, 0.0,... 48000 \n",
|
||
"2 [3.0517578e-05, 3.0517578e-05, 0.0, 3.0517578e... 48000 \n",
|
||
"3 [3.0517578e-05, 3.0517578e-05, 3.0517578e-05, ... 48000 \n",
|
||
"4 [3.0517578e-05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... 48000 \n",
|
||
"\n",
|
||
" label modality vocal_channel emotion \\\n",
|
||
"0 03-01-01-01-01-01-01 3 1 1 \n",
|
||
"1 03-01-01-01-01-02-01 3 1 1 \n",
|
||
"2 03-01-01-01-02-01-01 3 1 1 \n",
|
||
"3 03-01-01-01-02-02-01 3 1 1 \n",
|
||
"4 03-01-02-01-01-01-01 3 1 2 \n",
|
||
"\n",
|
||
" emotional_intensity statement repetition actor \n",
|
||
"0 1 1 1 1 \n",
|
||
"1 1 1 2 1 \n",
|
||
"2 1 2 1 1 \n",
|
||
"3 1 2 2 1 \n",
|
||
"4 1 1 1 1 "
|
||
]
|
||
},
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"audio_data.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"audio_data.drop(columns=['label'],inplace=True)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"Index(['audio', 'sample_rate', 'modality', 'vocal_channel', 'emotion',\n",
|
||
" 'emotional_intensity', 'statement', 'repetition', 'actor'],\n",
|
||
" dtype='object')"
|
||
]
|
||
},
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"audio_data.columns"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"<class 'pandas.core.frame.DataFrame'>\n",
|
||
"RangeIndex: 1440 entries, 0 to 1439\n",
|
||
"Data columns (total 9 columns):\n",
|
||
" # Column Non-Null Count Dtype \n",
|
||
"--- ------ -------------- ----- \n",
|
||
" 0 audio 1440 non-null object\n",
|
||
" 1 sample_rate 1440 non-null int64 \n",
|
||
" 2 modality 1440 non-null int32 \n",
|
||
" 3 vocal_channel 1440 non-null int32 \n",
|
||
" 4 emotion 1440 non-null int32 \n",
|
||
" 5 emotional_intensity 1440 non-null int32 \n",
|
||
" 6 statement 1440 non-null int32 \n",
|
||
" 7 repetition 1440 non-null int32 \n",
|
||
" 8 actor 1440 non-null int32 \n",
|
||
"dtypes: int32(7), int64(1), object(1)\n",
|
||
"memory usage: 62.0+ KB\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"audio_data.info()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def pad_audio(audio, desired_length):\n",
|
||
" audio_length = len(audio)\n",
|
||
" if audio_length < desired_length:\n",
|
||
" silence = np.zeros(desired_length - audio_length)\n",
|
||
" padded_audio = np.concatenate((audio, silence))\n",
|
||
" else:\n",
|
||
" padded_audio = audio[:desired_length]\n",
|
||
" return padded_audio\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"audio_data['audio'] = audio_data['audio'].apply(lambda x: pad_audio(x, 192000)).tolist()\n",
|
||
"audio_data['audio'] = audio_data['audio'].apply(lambda x: np.array(x).astype(float))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"audio_data['audio'] = audio_data['audio'].apply(lambda x: np.concatenate(np.atleast_1d(x)) if np.ndim(x) == 0 else x).tolist()\n",
|
||
"audio_data['audio'] = audio_data['audio'].apply(lambda x: np.array(x).astype(float))"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"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>audio</th>\n",
|
||
" <th>sample_rate</th>\n",
|
||
" <th>modality</th>\n",
|
||
" <th>vocal_channel</th>\n",
|
||
" <th>emotion</th>\n",
|
||
" <th>emotional_intensity</th>\n",
|
||
" <th>statement</th>\n",
|
||
" <th>repetition</th>\n",
|
||
" <th>actor</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ...</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>3</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",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>[0.0, 0.0, -3.0517578125e-05, 0.0, 0.0, 0.0, 0...</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>[3.0517578125e-05, 3.0517578125e-05, 0.0, 3.05...</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>3</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",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>[3.0517578125e-05, 3.0517578125e-05, 3.0517578...</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>[3.0517578125e-05, 0.0, 0.0, 0.0, 0.0, 0.0, 0....</td>\n",
|
||
" <td>48000</td>\n",
|
||
" <td>3</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",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" audio sample_rate modality \\\n",
|
||
"0 [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, ... 48000 3 \n",
|
||
"1 [0.0, 0.0, -3.0517578125e-05, 0.0, 0.0, 0.0, 0... 48000 3 \n",
|
||
"2 [3.0517578125e-05, 3.0517578125e-05, 0.0, 3.05... 48000 3 \n",
|
||
"3 [3.0517578125e-05, 3.0517578125e-05, 3.0517578... 48000 3 \n",
|
||
"4 [3.0517578125e-05, 0.0, 0.0, 0.0, 0.0, 0.0, 0.... 48000 3 \n",
|
||
"\n",
|
||
" vocal_channel emotion emotional_intensity statement repetition actor \n",
|
||
"0 1 1 1 1 1 1 \n",
|
||
"1 1 1 1 1 2 1 \n",
|
||
"2 1 1 1 2 1 1 \n",
|
||
"3 1 1 1 2 2 1 \n",
|
||
"4 1 2 1 1 1 1 "
|
||
]
|
||
},
|
||
"execution_count": 15,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"audio_data.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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7opDu3btcoO533333VamTJm45kcDzms0tkKFCuXZewQAAEDe0djbGu+6cePGyd+yq4G9FTAVeDXQed26dd3g4N9++60LuDfeeKMbAHzq1KluQPl+/fq5ABzQQPO6utLjjz9uzz33nHtc7969454fBV3fhx7W+9uzZ4/37/NwUKPoqE901Cc2ahQd9YmO+kSXDvUJ5SKvJfSiEt9995279OfkyZPD12XX7GiarjK0efNmdznLV155JfwYtfqqNXjcuHHucppt2rSxp59+2l3dRtasWWPt27d3VzDKSdrPavHixe53gwYNzFc7duxwddWORfHixRM9O0mJGkVHfaKjPrFRo+ioT3TUJ7p0qM/iXOS1hLbsli5d2saMGZNpRtUkrZ9t27a5a8sH150P6Brkn332mQvF+h1MC+ha7BUqVLAFCxbk4zsBAABAMkpon91SpUqFW2QD7777rmvxHTBggLvGfMWKFTPdrmu579y507Zu3epadhWYixQpctB91q9fH/d8KUhrr8hXql/kbxyMGkVHfaKjPrFRo+ioT3TUJ7p0qE8oFHKNoylxglqkzz//3Pr37++6Mah7gk44K1y4cKb7BP+rL4o+xKy3i8KvTlw7nE7Pav733dq1axM9C0mPGkVHfaKjPrFRo+ioT3TUJ73rUzibDJjUYXfmzJl2++23W5MmTWz48OHh0KpQGyn4v1ixYla0aNGDbhcFXd0eL43EUKNGDfOVdhK0AlSpUuWw6uQzahQd9YmO+sRGjaKjPtFRn+jSoT6rV6/O8X2TIuxOmjTJBg0a5E4se/DBB8NJXUONbdy4MdN99b86W5csWdJ1cdDJagq8kele91G/3XipWdzXDt2RtAKkw/s8HNQoOuoTHfWJjRpFR32ioz7pW5+MHHZhSIqhxzQSwwMPPGCdOnVyw49FhlaNtTt//vxM9//0009d62+BAgXcCA4HDhwIn6gWjMagvrzNmzfP1/cBAACA5JPQsKtgOnjwYDv77LPdeLq//PKLbdq0yf38/vvv1qVLF1u0aJHr1qAxd8ePH+8uHnH99de7x6v1VheYGDhwoM2bN8/dV+P2tmjRwk466aREvjUAAAAkgYR2Y9DICzoZ7L333nM/kTp06OCujDZq1Ch3BTVdMKJy5cru78jhyNQqrMDcs2dP93/r1q1d+AUAAAASGna7d+/ufqJReNXPoagvyr///W/3AwAAACRVn10AAADgSCHsAgAAwFuEXQAAAHiLsAsAAABvEXYBAADgLcIuAAAAvEXYBQAAgLcIuwAAAPAWYRcAAADeIuwCAADAW4RdIBsZGRlWrFgx9xsHoz7RUZ/YqFF01Cc66hMd9cksIxQKhbJMS2uLFy92vxs0aGC+2rFjhy1btszq1q1rxYsXt1QQOnDAMgr4v28W7/s8EApZgTTYqMX7Pll+YkuHZehw3iPLUHTpsPwI26DkeZ+5yWsF82F+gMOmlWfH1Km2f9Mm89VR5ctb8Ysvjuux2vhOX/u7bd61z3xVtmhBu6BKybgey/ITm+/L0OEsP8IylN7Lj7ANOrLboCOJsIuUoY3EgfXrEz0bSUtfMht27k/0bCQtlp/YWIaiYxmKjuUnOpafxPG/TR0AAABpi7ALAAAAbxF2AQAA4C3CLgAAALxF2AUAAIC3CLsAAADwFmEXAAAA3iLsAgAAwFuEXQAAAHiLsAsAAABvEXYBAADgLcIuAAAAvEXYBQAAgLcIuwAAAPAWYRcAAADeIuwCAADAW4RdAAAAeIuwCwAAAG8RdgEAAOAtwi4AAAC8RdgFAACAtwi7AAAA8BZhFwAAAN4i7AIAAMBbhF0AAAB4i7ALAAAAbxF2AQAA4C3CLgAAALxF2AUAAIC3CLsAAADwFmEXAAAA3ipoSWT06NE2d+5cmzhxovu/S5cuNn/+/Gzv++CDD9pFF11k+/fvt8aNG9vu3bsz3d6zZ0/r1atXvsw3AAAAklPShN0XXnjBRowYYc2aNQtPe/zxx23v3r3h/0OhkPXt29d+++03O/vss920tWvXuqA7bdo0K1u2bPi+xYsXz+d3AAAAgGST8LC7YcMG+9e//mXz5s2zKlWqZLrt2GOPzfT/pEmTbNGiRS7YHn300W7aihUrrESJElanTp18nW8AAAAkv4T32V2yZIkVKlTIpk+fbo0aNTrk/bZs2eJafnv06GHVqlULT1fYrV69ej7NLQAAAFJJwlt227Zt635iGTt2rBUtWtSuu+66TNNXrlxp+/btc9OXL19uFSpUsKuvvtouvPDCuOdJ3SV27Nhhvtq5c2em38kuIyPDihUrZulCn4uWwZyiPtFRn9jSqUbUJzbWseioT96vY/HQa6i2KRF2c2L79u328ssvu5POihQpkum2VatW2YEDB6x3795WsWJF++CDD6x///6ur+8ll1wS1+vpscuWLTPfqb9zKtBGol69epYu1qxZk6sdEeoTHfWJLZ1qRH1iYx2Ljvrk/ToWr8KFC/sTdmfOnGl79uyxjh07HnTbW2+95UZkCPrwqu/uTz/9ZOPGjYs77KpbRY0aNcxXWggVdNVHOhX2NnO65+aLqlWr5rrVIJ1Qn7ytT7rViPrExjoWHfXJ+3UsHqtXr87xfVMm7J5++ulWqlSpg25T14asatWq5foAx0sLZjqM5qCgmw7vM9Wkwg5IIlGf6KhPdNQnNmoUHfVJjvrkZici4Seo5cTChQutZcuWB03ftm2btWjRwqZOnZpp+uLFi61mzZr5OIcAAABIRknfsvvzzz/b1q1bsx1aTC29p5xyij366KNujN2//OUvNmPGDNeqqwtUAAAAIL0lfdjdtGlTtmPuBgYPHuwuPqGxejdv3uyGIRs5cqS1atUqn+cUAAAAySapwu7QoUMPmtawYUM3lu6h6IISGn1BPwAAAEDK9dkFAAAA4kHYBQAAgLcIuwAAAPAWYRcAAADeIuwCAADAW4RdAAAAeIuwCwAAAG8RdgEAAOAtwi4AAAC8RdgFAACAtwi7AAAA8BZhFwAAAN4i7AIAAMBbhF0AAAB4i7ALAAAAbxF2AQAA4C3CLgAAALxF2AUAAIC3CLsAAADwFmEXAAAA3iLsAgAAwFuEXQAAAHiLsAsAAABvEXYBAADgLcIuAAAAvEXYBQAAgLcIuwAAAPAWYRcAAADeIuwCAADAW4RdAAAAeIuwCwAAAG8RdgEAAOAtwi4AAAC8RdgFAACAtwi7AAAA8BZhFwAAAN4i7AIAAMBbhF0AAAB4i7ALAAAAbxF2AQAA4C3CLgAAALxF2AUAAIC3CLsAAADwFmEXAAAA3iLsAgAAwFtJFXZHjx5tXbp0yTRt4MCBVrt27Uw/bdu2Dd9+4MABGzlypLVq1cpOOukk69atm61bty4Bcw8AAIBkkzRh94UXXrARI0YcNH3FihXWvXt3mzt3bvjn1VdfDd8+atQomzx5sj3wwAM2ZcoUF36vv/5627NnTz6/AwAAACSbhIfdDRs2uDA7fPhwq1KlSqbbQqGQrV692urXr2/ly5cP/5QpU8bdrkA7fvx46927t7Vp08bq1Kljjz76qK1fv95mzJiRoHcEAACAZJHwsLtkyRIrVKiQTZ8+3Ro1apTptu+//9527Nhh1apVy/axy5cvtz/++MNatmwZnlaqVCmrV6+eLViw4IjPOwAAAJJbwUTPgPrfRvbBjbRy5Ur3e+LEiTZnzhwrUKCAtW7d2vr27WslS5Z0LbhSqVKlTI877rjjwrcBAAAgfSU87EajsKuAq/D69NNPu5beYcOG2apVq+y5556znTt3uvsVLlw40+OKFCliv/32W9yvq+4TalH2VVC34Heyy8jIsGLFilm60OeiZTCnqE901Ce2dKoR9YmNdSw66pP361g89BqqbcqH3R49etiVV15ppUuXdv/XqlXL9dm99NJLbfHixVa0aNFw393gb9m9e/dhLVh79+61ZcuWme/Wrl1rqUCfpbqmpIs1a9bkakeE+kRHfWJLpxpRn9hYx6KjPnm/jsUra2NnSoZdteoGQTdQs2ZN91vdFILuCxs3brQTTjghfB/9ryHK4qU+xDVq1DBfaSFU0NUJgamwt5nTPTdfVK1aNdetBumE+uRtfdKtRtQnNtax6KhP3q9j8dAABjmV1GG3X79+LrhOmDAhPE0tuqIwevzxx1uJEiVs3rx54bC7bds2W7p0qXXu3Dnu19WCWbx4cfOdgm46vM9Ukwo7IIlEfaKjPtFRn9ioUXTUJznqk5udiISPxhDNOeecY5988ok98cQTrr/uBx98YAMGDLDzzjvPqlev7pqvFWo1bNmsWbPc6Aw6ea1ixYrWrl27RM8+AAAAEiypW3bPPPNMd6GJMWPG2NixY90IDOeff7716dMnfB+Nsbtv3z53pbVdu3ZZ8+bNbdy4ca4rAgAAANJbUoXdoUOHHjTtb3/7m/s5lKOOOsruuOMO9wMAAACkTDcGAAAA4HAQdgEAAOAtwi4AAAC8RdgFAACAtwi7AAAA8BZhFwAAAN4i7AIAAMBbhF0AAAB4i7ALAAAAbxF2AQAA4C3CLgAAALxF2AUAAIC3CLsAAADwFmEXAAAA3iLsAgAAwFuEXQAAAHiLsAsAAABvEXYBAADgLcIuAAAAvEXYBQAAgLcIuwAAAPAWYRcAAADeIuwCAADAW4RdAAAAeIuwCwAAAG8RdgEAAOAtwi4AAAC8RdgFAACAtwi7AAAA8BZhFwAAAN4i7AIAAMBbhF0AAAB4i7ALAAAAbxF2AQAA4C3CLgAAALxF2AUAAIC3CLsAAADwFmEXAAAA3iLsAgAAwFuEXQAAAHiLsAsAAABvEXYBAADgLcIuAAAAvEXYBQAAgLcIuwAAAPBWUoXd0aNHW5cuXTJNmz17tnXs2NEaN25sbdu2tQcffNB27doVvv2zzz6z2rVrH/Qzb968BLwDAAAAJJOCliReeOEFGzFihDVr1iw8beHChdazZ0/r3bu3tW/f3r777ju755577Ndff7UhQ4a4+6xYscJOOOEEmzx5cqbnO+aYY/L9PQAAACC5JLxld8OGDda9e3cbPny4ValSJdNtU6ZMsZNPPtndrttOP/1069u3r7355pu2Z88ed5+VK1dajRo1rHz58pl+ChcunKB3BAAAgGSR8LC7ZMkSK1SokE2fPt0aNWqU6bZrr73W7rzzzkzTChQoYHv37rXt27eHW3arV6+er/MMAACA1JDwbgzqh6uf7NSrVy/T/wq5EyZMsPr161uZMmXctFWrVlnp0qXt4osvdq3EtWrVcq2/DRs2zJf5BwAAQPJKeNjNqX379lm/fv1cuFX/Xvn555/t999/tx07dtjAgQPtqKOOskmTJlnnzp1t6tSprntDPEKhkHtOX+3cuTPT72SXkZFhxYoVs3Shz0XLYE5Rn+ioT2zpVCPqExvrWHTUJ+/XsXjoNVRbb8Kuuiz06dPH5s+fb0888US41bZSpUq2YMECtxCpK4Q0aNDAli5dahMnTrT77rsvrtdTC/KyZcvMd2vXrrVUoM83ayu/z9asWZOrHRHqEx31iS2dakR9YmMdi4765P06Fq+cnp+V9GF348aN1q1bN/vxxx9t3Lhx1rx580y3lypV6qA+verDqy4N8VJwjrdVOBVoIVTQ1Ul/qbC3mdM9N19UrVo1160G6YT65G190q1G1Cc21rHoqE/er2PxWL16dY7vm9Rh97fffrOrr77ateyq64LGz400Z84cu+WWW9zJbccff3y4u8Py5cutXbt2cb+uFszixYub7xR00+F9pppU2AFJJOoTHfWJjvrERo2ioz7JUZ/c7EQkddjVWLrr1q2zZ555xp2QtmnTpvBt+r9Jkybu5DSN2DBgwADXIjtmzBg3Dm/Xrl0TOu8AAABIvKQNu/v377d33nnH9Z9V625Ws2bNssqVK7vRGTRG73XXXWe7d++2pk2bupPUypUrl5D5BgAAQPJIqrA7dOjQ8N8aWWHRokUxH6Orp40cOfIIzxkAAABSUcIvKgEAAAAcKYRdAAAAeIuwCwAAAG8RdgEAAOAtwi4AAAC8RdgFAACAtwi7AAAA8BZhFwAAAN4i7AIAAMBbhF0AAAB4i7ALAAAAbxF2AQAA4C3CLgAAALxF2AUAAIC3CLsAAADwFmEXAAAA3iLsAgAAwFuEXQAAAHiLsAsAAABvEXYBAADgLcIuAAAAvEXYBQAAgLcIuwAAAPAWYRcAAADeIuwCAADAW4RdAAAAeIuwCwAAAG8RdgEAAOAtwi4AAAC8dUTC7vr164/E0wIAAABHPuzWrVvXFi1alO1tCxcutL/97W/xPC0AAACQpwrm9I7jx4+3HTt2uL9DoZC98sorNmfOnIPu98UXX1jhwoXzdi4BAACAIxl2d+/ebU888YT7OyMjw4XdrAoUKGAlS5a0Hj16xDMvAAAAQGLCrgJsEGLr1KljL7/8sjVs2DBv5wYAAABIRNiNtHz58ryfEwAAACAZwq589NFH9r///c927txpBw4cyHSbujkMHjw4L+YPAAAAyN+wq5PVhg0bZkWKFLEyZcq4cBsp6/8AAABAyoTdSZMm2fnnn2+DBg1i5AUAAAD4Nc7uL7/8YpdccglBFwAAAP6F3Xr16tmqVavyfm4AAACARHdjGDBggPXp08eKFy9ujRo1smLFih10nz/96U95MX8AAABA/obdK664wo3AoNB7qJPRli1bFv9cAQAAAIkKuw888AAjLgAAAMDPsHvxxRfn/ZwAAAAAyRB2FyxYEPM+zZs3j+epAQAAgMSG3S5durhuDKFQKDwta7cG+uwCAAAgJcPu888/f9C0HTt22MKFC23atGn2+OOPxzUzo0ePtrlz59rEiRMzhWZdvOLrr792V2vr2rWrXXXVVeHbdaLcE088Ya+88or9/vvvrkX5nnvuseOPPz6ueQAAAECah90WLVpkO71NmzZuOLKnnnrKBdfceOGFF2zEiBHWrFmz8LStW7faNddcY23btrX77rvPvvzyS/f76KOPto4dO7r7jBo1yiZPnmxDhw61ihUr2kMPPWTXX3+9vfnmm1z0AgAAIM3FdVGJaBRW58+fn+P7b9iwwbp3727Dhw+3KlWqZLrt5ZdftkKFCtn9999v1atXdwFXLbtjxoxxt+/Zs8fGjx9vvXv3dkG7Tp069uijj9r69ettxowZef3WAAAAkO5hd/bs2a7lNaeWLFniAu306dPdBSoiqVuEWpELFvz/DdCnnHKKrV271l2yePny5fbHH39Yy5Ytw7eXKlXKXeEtJyfRAQAAwG9xdWOI7DMb2XdWLao//vijdevWLcfPpS4K+smOnq9WrVqZph133HHu988//+xul0qVKh10n+C2eOjEO/VB9tXOnTsz/U52Ovkxu6v0+UqfS+TJn7FQn+ioT2zpVCPqExvrWHTUJ+/XsXjoNXJ6zYe4wm52b6JAgQIumN54443h/rSHa9euXQf1uy1SpIj7vXv37nBYy+4+v/32W9yvu3fv3rQYTUIt5KlAGwm11qeLNWvW5GpHhPpER31iS6caUZ/YWMeioz55v47FK6fnZsUVdiNHSziSihYt6vrlRlLIFZ0Ip9tF9wn+Du5zOHtR6lZRo0YN85UWQgVd9ZFOhb3NdLtaX9WqVXPdapBOqE/e1ifdakR9YmMdi4765P06Fo/Vq1fn+L5xhd3AnDlz3Mlo27Ztc8OCNW3a1Fq1amV5RaMrbNy4MdO04P8KFSrYvn37wtNOOOGETPepXbt23K+rBVNh2ncKuunwPlNNKuyAJBL1iY76REd9YqNG0VGf5KhPbnYi4gq7akm96aab3Ji4Rx11lJUuXdoNE6bhxnQCmX7nxbBfGjN3ypQptn//fvc68umnn7q9hrJly1rJkiWtRIkSNm/evHDYVfBeunSpde7c+bBfHwAAAGk4GoMuGvHZZ5/ZsGHDbNGiRS70fvXVVzZkyBA3Fq7G2c0L6vu7fft2u/vuu11z9dSpU23ChAmuX7AoUCvUatiyWbNmudEZ+vbt61qE27VrlyfzAAAAgNQVV8vuW2+9ZT179rQLLrjg/z9RwYJ20UUX2ebNm+3FF1+0W2655bBnTq23zzzzjLuCWocOHax8+fLWr18/93dAY+yqO8PAgQPdCW1qDR43bpzrdwsAAID0FlfY3bJlyyHPLNR0XSgiHroKWlYNGza0l1566ZCPUfeGO+64w/0AAAAAh92NQf1j1Y0hO7qYQ9ZxbwEAAICUadm9/PLLXSushvs699xzrVy5cu6KZureMHbsWNfFAckrGOA63YZDAQAA6SeusHvFFVe4EQ90YtjDDz8cnq5x1dSf9oYbbsjLeUwLB0IhK5BP4TNRA1zn53sEAAA4rKHHdNLYtdde68bZ1dXK1Ep41llnWfXq1alsHBQCp6/93Tbv+r+xg31TtmhBu6BKyUTPBgAASDO5CrsrVqywAQMGuFDbo0cPF2z1o7FtNb7uO++8YyNGjHDj4CL3FHQ37Nyf6NkAAABIvxPUfvjhB7vqqqtc39ysYVbDfGlIsF9//dWuvPLKuEdjAAAAABISdseMGWPHHnusvf7669a+ffuD+oB27drVXn31VStSpIi7ghoAAACQMmH3k08+seuvv97KlClzyPvoog/qx/vRRx/l1fwBAAAARz7sbty40apUqRLzfrVq1bL169fHP0cAAABAfoddtegq8MaydetWO+aYYw53vgAAAID8C7vNmze3qVOnxrzfG2+8kZAxXAEAAIC4w26XLl1s3rx57sppu3fvznbs3WHDhtmcOXOsU6dOOX1aAAAAIPHj7DZo0MD69+9vgwcPtmnTplnLli2tcuXKtn//fvvpp59cEFYXhltuucVatWp15OYYAAAAOBIXlVCLbZ06dWzcuHE2a9ascAvv0UcfbaeddpobiaFRo0a5eUoAAAAgeS4X3LRpU/cjW7ZssYIFC1qpUqWOxLwBAAAA+Rt2I0UbcxcAAABImRPUAAAAgFRD2AUAAIC3CLsAAADwFmEXAAAA3iLsAgAAwFuEXQAAAHiLsAsAAABvEXYBAADgLcIuAAAAvEXYBQAAgLcIuwAAAPAWYRcAAADeIuwCAADAW4RdAAAAeIuwCwAAAG8RdgEAAOAtwi4AAAC8RdgFAACAtwi7AAAA8BZhFwAAAN4i7AIAAMBbhF0AAAB4i7ALAAAAbxF2AQAA4C3CLgAAALxF2AUAAIC3CLsAAADwFmEXAAAA3iLsAgAAwFsFLcnNmzfPrrrqqmxvq1y5ss2aNcueeuopGzFixEG3r1ixIh/mEAAAAMkq6cNu48aNbe7cuZmmffnll9arVy+76aabwqH2wgsvtDvuuCNBcwkAAIBklPRht3Dhwla+fPnw/zt27LAhQ4ZYhw4drGPHjm7aypUr7dJLL810PwAAACDl+uw+/fTTtnPnTrvzzjvd/3v27LG1a9datWrVEj1rAAAASDJJ37IbacuWLTZhwgS77bbb7Nhjj3XTVq9ebfv377d3333XBg0aZLt377bmzZu7Lg3HHXdcXK8TCoVcC3J+ycjIsGLFilk60I6K6psb6VSfeGpEfaKjPrGlU42oT2ysY9FRn7xfx+Kh11BtvQu7kydPtpIlS9pll10WnqYuDKIF6bHHHrPNmzfbI4884k5qe+ONN6xo0aK5fp29e/fasmXLLL9o3uvVq2fpYM2aNW5FyI10qk88NaI+0VGf2NKpRtQnNtax6KhP3q9jh9PV1buwq/B60UUXZQqw+r9169ZWpkyZ8LSaNWu6abNnz7a///3vuX6dQoUKWY0aNSy/5HTPxAdVq1aNq1UlneS2RtQnOuoTWzrViPrExjoWHfXJ+3UsHjqyn1MpE3aXL19u69ats/PPP/+g2yKDrqj7gro5rF+/Pq7X0oJZvHjxuOcVh5ZOh3LiRY2ioz7RUZ/oqE9s1Cg66pMc9cnNTkTKnKC2cOFCK1u2rNWpUyfT9EcffdTOOeecTHsRP/zwg23dujVfW2cBAACQfFIm7C5dutRq16590PSzzz7bfvzxR7v33ntdP5EFCxa4MXibNGlirVq1Ssi8AgAAIDmkTNjdtGlTeASGSPXr17exY8e6C0tcfPHF1rNnT6tbt64boizd+skAAAAgRfvsKtAeSsuWLd0PAAAAkJItuwAAAEBuEXYBAADgLcIuAAAAvEXYBQAAgLcIuwAAAPAWYRcAAADeIuwCAADAW4RdAAAAeIuwCwAAAG8RdgEAAOAtwi4AAAC8RdgFAACAtwi7AAAA8BZhFwAAAN4i7AIAAMBbhF0AAAB4i7ALAAAAbxF2AQAA4C3CLgAAALxF2AUAAIC3CLsAAADwFmEXAAAA3iLsAgAAwFuEXQAAAHiLsAsAAABvEXYBAADgLcIuAAAAvEXYBQAAgLcIuwAAAPAWYRcAAADeIuwCAADAW4RdAAAAeIuwCwAAAG8RdgEAAOAtwi4AAAC8RdgFAACAtwi7AAAA8BZhFwAAAN4i7AIAAMBbhF0AAAB4i7ALAAAAbxF2AQAA4C3CLgAAALxF2AUAAIC3CLsAAADwVkqE3Q0bNljt2rUP+pk6daq7fdmyZda5c2c76aSTrG3btvb8888nepYBAACQBApaCli+fLkVKVLEZs6caRkZGeHpJUuWtK1bt9o111zjQu59991nX375pft99NFHW8eOHRM63wAAAEislAi7K1eutCpVqthxxx130G3PPfecFSpUyO6//34rWLCgVa9e3b777jsbM2YMYRcAACDNpUQ3hhUrVrgQm52FCxdaixYtXNANnHLKKbZ27Vr75Zdf8nEuAQAAkGwKpErL7pYtW6xTp0526qmn2hVXXGFz5sxxt61fv94qVqyY6f5BC/DPP/+ckPkFAABAckj6bgz79u2zb7/91mrUqGF33XWXlShRwt5++2274YYb7Nlnn7Vdu3ZZ4cKFMz1G/Xtl9+7dcb1mKBSyHTt2WH5RP+RixYpZOti5c6erb26kU33iqRH1iY76xJZONaI+sbGORUd98n4di4deI/I8rpQOu+qeMG/ePDvqqKOsaNGiblr9+vVt1apVNm7cODdtz549mR4ThNzixYvH9Zp79+51IzzkF60E9erVs3SwZs0atyLkRjrVJ54aUZ/oqE9s6VQj6hMb61h01Cfv17F4ZW3sTNmwKxpZIauaNWva3LlzXReGjRs3Zrot+L9ChQpxvZ5OeFNLcn7J6Z6JD6pWrRpXq0o6yW2NqE901Ce2dKoR9YmNdSw66pP361g8Vq9eneP7Jn3YVQvuZZddZk899ZSdfPLJ4elff/21C6R169a1KVOm2P79+13rr3z66aeu2GXLlo3rNbVgxtsqjOjS6VBOvKhRdNQnOuoTHfWJjRpFR32Soz652YlI+hPUNApDtWrV3NBiGnnhm2++sSFDhrjxdHv06OGGF9u+fbvdfffdLuXrQhMTJkywG2+8MdGzDgAAgARL+pbdAgUK2NNPP20PP/yw9enTx7Zt2+b6vujktFq1arn7PPPMMzZo0CDr0KGDlS9f3vr16+f+BgAAQHpL+rAr5cqVc625h9KwYUN76aWX8nWeAAAAkPySvhsDAAAAEC/CLgAAALxF2AUAAIC3CLsAAADwFmEXAAAA3iLsAgAAwFuEXQAAAHiLsAsAAABvEXYBAADgLcIuAAAAvEXYBQAAgLcIuwAAAPAWYRcAAADeIuwCAADAW4RdAAAAeIuwCwAAAG8RdgEAAOAtwi4AAAC8RdgFAACAtwi7AAAA8BZhFwAAAN4i7AIAAMBbhF0AAAB4i7ALAAAAbxF2AQAA4C3CLgAAALxF2AUAAIC3CLsAAADwFmEXAAAA3iLsAgAAwFuEXQAAAHiLsAsAAABvEXYBAADgLcIuAAAAvEXYBQAAgLcIuwAAAPAWYRcAAADeIuwCAADAW4RdAAAAeIuwCwAAAG8RdgEAAOAtwi4AAAC8RdgFAACAtwi7AAAA8BZhFwAAAN4i7AIAAMBbBS0F/Prrr/bII4/Y+++/b9u3b7fatWvbbbfdZs2aNXO3X3PNNfbxxx9nekyLFi1s4sSJCZpjAAAAJIOUCLu33nqrbdq0yQXesmXLuhB73XXX2euvv27VqlWzFStW2L333mtnnXVW+DGFChVK6DwDAAAg8ZI+7H733Xf20Ucf2eTJk61p06Zu2j//+U/78MMP7c0337TOnTvb5s2brVGjRla+fPlEzy4AAACSSNL32S1durSNGTPGGjRoEJ6WkZHhfrZt2+ZadfV31apVEzqfAAAASD5J37JbqlQpO/300zNNe/fdd12L74ABA2zlypVWsmRJu//++10LcPHixa19+/Z20003WeHCheN6zVAoZDt27LD8orBerFgxSwc7d+509c2NdKpPPDWiPtFRn9jSqUbUJzbWseioT96vY/HQa6i2XoTdrD7//HPr37+/tWvXztq0aeMC7+7du61hw4buRLVly5bZsGHD7KeffnK/47F37173PPlFK0G9evUsHaxZs8atCLmRTvWJp0bUJzrqE1s61Yj6xMY6Fh31yft1LF45bdRMqbA7c+ZMu/32261JkyY2fPhwN00tunfeeacdc8wx7v9atWq5k9P69u1r/fr1s3LlyuX6dfT4GjVqWH7J6Z6JD9TdJJ5WlXSS2xpRn+ioT2zpVCPqExvrWHTUJ+/XsXisXr06x/dNmbA7adIkGzRokOui8OCDD4bTfMGCBcNBN1CzZk33e/369XGFXS2Y6g6BvJdOh3LiRY2ioz7RUZ/oqE9s1Cg66pMc9cnNTkTSn6AmGonhgQcesE6dOrnhxyKbrbt06eK6NURavHixa52tUqVKAuYWAAAAyaJgKvT9GDx4sJ199tl244032i+//BK+rWjRonbOOee429Vn97TTTnNBV311NQ5viRIlEjrvAAAASKykD7saeUEnjL333nvuJ1KHDh1s6NChrilbF5pQ6NVYu127drUbbrghYfMMAACA5JD0Ybd79+7uJxp1b9APAAAAkHJ9dgEAAIB4EHYBAADgLcIuAAAAvEXYBQAAgLcIuwAAAPAWYRcAAADeIuwCAADAW4RdAAAAeIuwCwAAAG8RdgEAAOAtwi4AAAC8RdgFAACAtwi7AAAA8BZhFwAAAN4i7AIAAMBbhF0AAAB4i7ALAAAAbxF2AQAA4C3CLgAAALxF2AUAAIC3CLsAAADwFmEXAAAA3iLsAgAAwFuEXQAAAHiLsAsAAABvEXYBAADgLcIuAAAAvEXYBQAAgLcIuwAAAPAWYRcAAADeIuwCAADAW4RdAAAAeIuwCwAAAG8RdgEAAOAtwi4AAAC8RdgFAACAtwi7AAAA8BZhFwAAAN4i7AIAAMBbhF0AAAB4i7ALAAAAbxF2AQAA4C3CLgAAALxF2AUAAIC3CLsAAADwlhdh98CBAzZy5Ehr1aqVnXTSSdatWzdbt25domcLAAAACeZF2B01apRNnjzZHnjgAZsyZYoLv9dff73t2bMn0bMGAACABEr5sKtAO378eOvdu7e1adPG6tSpY48++qitX7/eZsyYkejZAwAAQAKlfNhdvny5/fHHH9ayZcvwtFKlSlm9evVswYIFCZ03AAAAJFZGKBQKWQpT622vXr3sq6++sqJFi4an33LLLbZr1y4bPXp0rp7v888/N5WkUKFClp8yMjJsx76Q7U/tj+OQjsrIsOIFM1xt461P6I8/1EHbvFWggGUcfXRcNfJ9+TncZYjlJzbflyG2QTnANigqtkFHdhuUW3v37nV1bdKkScz7FrQUt3PnTve7cOHCmaYXKVLEfvvtt1w/nwoX+Ts/aSUyy//XzU+HU1etROkg3hqlw/JzOPVh+YktHZYhtkGxsQ2Kjm1QdPmVn/Q6OX2tlA+7QWuu+u5Gtuzu3r3bihUrluvna9y4cZ7OHwAAABIn5fvsVqpUyf3euHFjpun6v0KFCgmaKwAAACSDlA+7Gn2hRIkSNm/evPC0bdu22dKlS6158+YJnTcAAAAkVsp3Y1Bf3c6dO9vw4cOtTJky9uc//9keeughq1ixorVr1y7RswcAAIAESvmwKxpjd9++fTZw4EA3AoNadMeNG5fvIyoAAAAguaT80GMAAACAt312AQAAgEMh7AIAAMBbhF0AAAB4i7ALAAAAbxF2AQAA4C3CLgAAALxF2AUAAIC3CLspTBfSeO655+ziiy+2xo0b2ymnnGLXXnutffrppzl+jscff9zatm1rqUjzrZ/t27cfdNtdd91lXbp0ybPX+umnn+ztt98+rOfQJa1r165tP/zww2E9j55j6tSplmjJMh+JpGVMyxqQE4sXL7a//e1vVr9+fXvwwQfNd9o+azsR/Oh9t2nTxv71r3/Zli1bknZbsmrVKnv//ffNd7WTrO5HkhdXUEtHu3fvtmuuucZ+/vlndwU5hV1dPe61115z04cNG2bnn3+++e7HH3907/X+++8/oq9z5513uktRn3vuuUf0dVLJ3LlzrWTJkomeDSBljB492l3Z85133kmbdUcNMPoRfUetXLnSHnroIevcubO99NJLrg7Jti258cYbrUOHDi6Y+2xuktX9SCLspqjHHnvMVqxYYW+99ZZVqlQpPP3uu+92LZ3//ve/3V710UcfbT47/vjj3Qazffv2duqppyZ6dtJK+fLlEz0LQEr57bffrG7dunbCCSdYuihevHimbYW22aqBGg6eeeYZ69u3L9uSBCmfRnWnG0MK2rt3r2vBVfeFyKAb6NOnj40dO9aKFi3q9qK1l9q8eXN3COnMM8+08ePHRz2sofB45ZVXWoMGDdwht88//9xN015ukyZN3PNrDz0ZXHDBBdayZctwyM/O77//bv/85z9dN4+mTZvaVVdd5Q4nRuvKETlNh6rnz59vr7/+eniafusw5N///nc7+eST3e36Ihs4cKC1atXKTjzxRDdf+n/nzp15/r7XrFljXbt2dZ+RXk8tRoEDBw64/8855xz3meszu/766+3777/P9Dm/8MILdumll7rn0FGAWbNmZXr/V1xxhT355JPu/TVr1sz69++fqcaRh8B0KF8/qoned6NGjdxyt2HDhvD99be+2PRces7u3bvb2rVrw7dv3rzZHaXQbQ0bNrTLL7/c1TWwaNEit1zqKIaW5169ernuJbnxwQcfuPVG86f51Dzrc5OZM2faP/7xDzvppJNcTXS/Dz/8MPzYPXv22ODBg93jtBypdUq1juymUq9ePfca5513nqu9dsL0vAFdnV3rptZDzcOFF15o06dPzzSP48aNs7POOss9XsuZPoPgqu5alrSs//Wvf3XzeNFFF9mMGTMsP0Xbpmi50XI5ZswYa926tZtHteB988034cfr8HXkcjB8+HC3Tuqxgf/973+u/loOzj77bBsxYoSrf+SyN3LkSDvjjDPstNNOy7QcJSt9llqe33jjDTf/69ati7ksxFomtW3Stk33UT2zPj5Z/elPf3Kfa9A1LHJbEms7oHVA3SB0u7ZtWh9uu+22cHciPY+eL1LWadG2JfqcdMTwiSeeyNOucDnZDmXX1S3rtOw+cz3+1ltvdUc4VRM959ChQ8PrzA8//OCeQ98L2nZomdO2PDd113Npm6fvG9VN3x1qGU4ZIaScb775JlSrVq3Q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",
|
||
"text/plain": [
|
||
"<Figure size 800x600 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"emotion_labels = {\n",
|
||
" 1: 'Calm',\n",
|
||
" 2: 'Neutral',\n",
|
||
" 3: 'happiness',\n",
|
||
" 4: 'sadness',\n",
|
||
" 5: 'anger',\n",
|
||
" 6: 'fear',\n",
|
||
" 7: 'Disgust',\n",
|
||
" 8: 'surprise'\n",
|
||
"}\n",
|
||
"\n",
|
||
"sns.set(style='whitegrid')\n",
|
||
"plt.figure(figsize=(8, 6))\n",
|
||
"emotion_counts = audio_data['emotion'].value_counts().sort_index()\n",
|
||
"emotion_labels = [emotion_labels[label] for label in emotion_counts.index]\n",
|
||
"bars = plt.bar(emotion_labels, emotion_counts, color=['skyblue', 'lightcoral'])\n",
|
||
"\n",
|
||
"plt.title('Distribution of Emotions')\n",
|
||
"plt.xlabel('Emotion')\n",
|
||
"plt.ylabel('Count')\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"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>emotion</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>2</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1435</th>\n",
|
||
" <td>8</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1436</th>\n",
|
||
" <td>8</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1437</th>\n",
|
||
" <td>8</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1438</th>\n",
|
||
" <td>8</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1439</th>\n",
|
||
" <td>8</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>1440 rows × 1 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" emotion\n",
|
||
"0 1\n",
|
||
"1 1\n",
|
||
"2 1\n",
|
||
"3 1\n",
|
||
"4 2\n",
|
||
"... ...\n",
|
||
"1435 8\n",
|
||
"1436 8\n",
|
||
"1437 8\n",
|
||
"1438 8\n",
|
||
"1439 8\n",
|
||
"\n",
|
||
"[1440 rows x 1 columns]"
|
||
]
|
||
},
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"pd.DataFrame(audio_data['emotion'])\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 18,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Treino: 864 amostras (60.00%)\n",
|
||
"Validação: 288 amostras (20.00%)\n",
|
||
"Teste: 288 amostras (20.00%)\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"X = np.array(audio_data['audio'])\n",
|
||
"Y = np.array(audio_data['emotion'])\n",
|
||
"X_normalized = []\n",
|
||
"for audio in X:\n",
|
||
" audio_normalized = audio / np.max(np.abs(audio))\n",
|
||
" X_normalized.append(audio_normalized)\n",
|
||
"X = np.array(X_normalized)\n",
|
||
"X_train_val, X_test, y_train_val, y_test = train_test_split(X, Y, test_size=0.2, random_state=42)\n",
|
||
"X_train, X_val, y_train, y_val = train_test_split(X_train_val, y_train_val, test_size=0.25, random_state=42) \n",
|
||
"print(f\"Treino: {len(X_train)} amostras ({len(X_train)/len(X):.2%})\")\n",
|
||
"print(f\"Validação: {len(X_val)} amostras ({len(X_val)/len(X):.2%})\")\n",
|
||
"print(f\"Teste: {len(X_test)} amostras ({len(X_test)/len(X):.2%})\")"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 19,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Valores únicos nos rótulos de treino: [1 2 3 4 5 6 7 8]\n",
|
||
"Valores únicos nos rótulos de validação: [1 2 3 4 5 6 7 8]\n",
|
||
"Valores únicos nos rótulos de teste: [1 2 3 4 5 6 7 8]\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"print(f\"Valores únicos nos rótulos de treino: {np.unique(y_train)}\")\n",
|
||
"print(f\"Valores únicos nos rótulos de validação: {np.unique(y_val)}\")\n",
|
||
"print(f\"Valores únicos nos rótulos de teste: {np.unique(y_test)}\")\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 29,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"8"
|
||
]
|
||
},
|
||
"execution_count": 29,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"len(audio_data['emotion'].value_counts())"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 30,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"def audio_to_spectrogram(audio, sr=16000, n_mels=400, n_fft=2048, hop_length=512):\n",
|
||
" mel_spec = librosa.feature.melspectrogram(y=audio, sr=sr, n_mels=n_mels, n_fft=n_fft, hop_length=hop_length)\n",
|
||
" mel_spec_db = librosa.power_to_db(mel_spec, ref=np.max)\n",
|
||
" mel_spec_db = librosa.util.fix_length(mel_spec_db, size=480, axis=1)\n",
|
||
" return mel_spec_db"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 38,
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"X_train_spec = np.array([audio_to_spectrogram(x) for x in X_train])\n",
|
||
"X_val_spec = np.array([audio_to_spectrogram(x) for x in X_val])\n",
|
||
"X_test_spec = np.array([audio_to_spectrogram(x) for x in X_test])\n",
|
||
"X_train_spec = np.array([(x - np.min(x)) / (np.max(x) - np.min(x) + 1e-6) for x in X_train_spec])\n",
|
||
"X_val_spec = np.array([(x - np.min(x)) / (np.max(x) - np.min(x) + 1e-6) for x in X_val_spec])\n",
|
||
"X_test_spec = np.array([(x - np.min(x)) / (np.max(x) - np.min(x) + 1e-6) for x in X_test_spec])\n",
|
||
"X_train_spec = X_train_spec[..., np.newaxis]\n",
|
||
"X_val_spec = X_val_spec[..., np.newaxis]\n",
|
||
"X_test_spec = X_test_spec[..., np.newaxis]\n",
|
||
"\n",
|
||
"model = models.Sequential([\n",
|
||
" layers.Conv2D(32, (3, 3), activation='relu', input_shape=(400, 480, 1)),\n",
|
||
" layers.BatchNormalization(), \n",
|
||
" layers.MaxPooling2D((2, 2)), \n",
|
||
" layers.Conv2D(64, (3, 3), activation='relu'),\n",
|
||
" layers.BatchNormalization(),\n",
|
||
" layers.MaxPooling2D((2, 2)),\n",
|
||
" layers.Conv2D(128, (3, 3), activation='relu'),\n",
|
||
" layers.BatchNormalization(),\n",
|
||
" layers.MaxPooling2D((2, 2)),\n",
|
||
" layers.Conv2D(256, (3, 3), activation='relu'),\n",
|
||
" layers.BatchNormalization(),\n",
|
||
" layers.MaxPooling2D((2, 2)),\n",
|
||
" layers.Flatten(),\n",
|
||
" layers.Dense(256, activation='relu', kernel_regularizer=regularizers.l2(0.001)),\n",
|
||
" layers.Dropout(0.4), \n",
|
||
" layers.Reshape((16, 16)),\n",
|
||
" layers.Bidirectional(layers.LSTM(64, return_sequences=True, dropout=0.3, recurrent_dropout=0.2)),\n",
|
||
" layers.Bidirectional(layers.LSTM(32, dropout=0.3, recurrent_dropout=0.2)),\n",
|
||
" layers.Dense(64, activation='relu'),\n",
|
||
" layers.Dense(9, activation='softmax')\n",
|
||
"])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 39,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"Epoch 1/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m135s\u001b[0m 2s/step - accuracy: 0.1223 - loss: 2.9732 - val_accuracy: 0.1215 - val_loss: 2.6830 - learning_rate: 0.0010\n",
|
||
"Epoch 2/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m119s\u001b[0m 2s/step - accuracy: 0.1171 - loss: 2.6005 - val_accuracy: 0.0938 - val_loss: 2.5034 - learning_rate: 0.0010\n",
|
||
"Epoch 3/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m116s\u001b[0m 2s/step - accuracy: 0.1240 - loss: 2.4394 - val_accuracy: 0.1354 - val_loss: 2.2894 - learning_rate: 0.0010\n",
|
||
"Epoch 4/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m117s\u001b[0m 2s/step - accuracy: 0.1158 - loss: 2.2760 - val_accuracy: 0.1354 - val_loss: 2.2216 - learning_rate: 0.0010\n",
|
||
"Epoch 5/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m117s\u001b[0m 2s/step - accuracy: 0.1461 - loss: 2.1990 - val_accuracy: 0.1389 - val_loss: 2.2154 - learning_rate: 0.0010\n",
|
||
"Epoch 6/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m119s\u001b[0m 2s/step - accuracy: 0.1224 - loss: 2.1806 - val_accuracy: 0.1597 - val_loss: 2.1650 - learning_rate: 0.0010\n",
|
||
"Epoch 7/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m118s\u001b[0m 2s/step - accuracy: 0.1345 - loss: 2.1594 - val_accuracy: 0.1215 - val_loss: 2.1643 - learning_rate: 0.0010\n",
|
||
"Epoch 8/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m117s\u001b[0m 2s/step - accuracy: 0.1308 - loss: 2.1291 - val_accuracy: 0.1389 - val_loss: 2.1482 - learning_rate: 0.0010\n",
|
||
"Epoch 9/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m120s\u001b[0m 2s/step - accuracy: 0.1350 - loss: 2.1427 - val_accuracy: 0.1076 - val_loss: 2.1440 - learning_rate: 0.0010\n",
|
||
"Epoch 10/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m120s\u001b[0m 2s/step - accuracy: 0.1304 - loss: 2.1162 - val_accuracy: 0.1215 - val_loss: 2.1535 - learning_rate: 0.0010\n",
|
||
"Epoch 11/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m120s\u001b[0m 2s/step - accuracy: 0.1197 - loss: 2.1208 - val_accuracy: 0.1215 - val_loss: 2.1095 - learning_rate: 0.0010\n",
|
||
"Epoch 12/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m119s\u001b[0m 2s/step - accuracy: 0.1111 - loss: 2.0991 - val_accuracy: 0.1215 - val_loss: 2.1343 - learning_rate: 0.0010\n",
|
||
"Epoch 13/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m118s\u001b[0m 2s/step - accuracy: 0.1385 - loss: 2.1327 - val_accuracy: 0.1215 - val_loss: 2.1699 - learning_rate: 0.0010\n",
|
||
"Epoch 14/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m119s\u001b[0m 2s/step - accuracy: 0.1311 - loss: 2.1293 - val_accuracy: 0.1215 - val_loss: 2.1023 - learning_rate: 0.0010\n",
|
||
"Epoch 15/40\n",
|
||
"\u001b[1m54/54\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m118s\u001b[0m 2s/step - accuracy: 0.0944 - loss: 2.0896 - val_accuracy: 0.1111 - val_loss: 2.1034 - learning_rate: 0.0010\n",
|
||
"Epoch 16/40\n",
|
||
"\u001b[1m29/54\u001b[0m \u001b[32m━━━━━━━━━━\u001b[0m\u001b[37m━━━━━━━━━━\u001b[0m \u001b[1m54s\u001b[0m 2s/step - accuracy: 0.1553 - loss: 2.0787"
|
||
]
|
||
},
|
||
{
|
||
"ename": "KeyboardInterrupt",
|
||
"evalue": "",
|
||
"output_type": "error",
|
||
"traceback": [
|
||
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
|
||
"\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
|
||
"Cell \u001b[1;32mIn[39], line 5\u001b[0m\n\u001b[0;32m 2\u001b[0m reduce_lr \u001b[38;5;241m=\u001b[39m ReduceLROnPlateau(monitor\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mval_loss\u001b[39m\u001b[38;5;124m'\u001b[39m, factor\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m0.3\u001b[39m, patience\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m3\u001b[39m, verbose\u001b[38;5;241m=\u001b[39m\u001b[38;5;241m1\u001b[39m)\n\u001b[0;32m 3\u001b[0m model\u001b[38;5;241m.\u001b[39mcompile(optimizer\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124madam\u001b[39m\u001b[38;5;124m'\u001b[39m, loss\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124msparse_categorical_crossentropy\u001b[39m\u001b[38;5;124m'\u001b[39m, metrics\u001b[38;5;241m=\u001b[39m[\u001b[38;5;124m'\u001b[39m\u001b[38;5;124maccuracy\u001b[39m\u001b[38;5;124m'\u001b[39m])\n\u001b[1;32m----> 5\u001b[0m history \u001b[38;5;241m=\u001b[39m \u001b[43mmodel\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfit\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 6\u001b[0m \u001b[43m \u001b[49m\u001b[43mX_train_spec\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my_train\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[0;32m 7\u001b[0m \u001b[43m \u001b[49m\u001b[43mepochs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m40\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[0;32m 8\u001b[0m \u001b[43m \u001b[49m\u001b[43mbatch_size\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;241;43m16\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\n\u001b[0;32m 9\u001b[0m \u001b[43m \u001b[49m\u001b[43mvalidation_data\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mX_val_spec\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43my_val\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 10\u001b[0m \u001b[43m \u001b[49m\u001b[43mcallbacks\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43m[\u001b[49m\u001b[43mearly_stop\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mreduce_lr\u001b[49m\u001b[43m]\u001b[49m\u001b[43m \u001b[49m\n\u001b[0;32m 11\u001b[0m \u001b[43m)\u001b[49m\n",
|
||
"File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python312\\site-packages\\keras\\src\\utils\\traceback_utils.py:117\u001b[0m, in \u001b[0;36mfilter_traceback.<locals>.error_handler\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 115\u001b[0m filtered_tb \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 116\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 117\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 118\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m 119\u001b[0m filtered_tb \u001b[38;5;241m=\u001b[39m _process_traceback_frames(e\u001b[38;5;241m.\u001b[39m__traceback__)\n",
|
||
"File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python312\\site-packages\\keras\\src\\backend\\tensorflow\\trainer.py:320\u001b[0m, in \u001b[0;36mTensorFlowTrainer.fit\u001b[1;34m(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_batch_size, validation_freq)\u001b[0m\n\u001b[0;32m 318\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m step, iterator \u001b[38;5;129;01min\u001b[39;00m epoch_iterator\u001b[38;5;241m.\u001b[39menumerate_epoch():\n\u001b[0;32m 319\u001b[0m callbacks\u001b[38;5;241m.\u001b[39mon_train_batch_begin(step)\n\u001b[1;32m--> 320\u001b[0m logs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mtrain_function\u001b[49m\u001b[43m(\u001b[49m\u001b[43miterator\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 321\u001b[0m callbacks\u001b[38;5;241m.\u001b[39mon_train_batch_end(step, logs)\n\u001b[0;32m 322\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mstop_training:\n",
|
||
"File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python312\\site-packages\\tensorflow\\python\\util\\traceback_utils.py:150\u001b[0m, in \u001b[0;36mfilter_traceback.<locals>.error_handler\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 148\u001b[0m filtered_tb \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m 149\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m--> 150\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfn\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwargs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 151\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mException\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m 152\u001b[0m filtered_tb \u001b[38;5;241m=\u001b[39m _process_traceback_frames(e\u001b[38;5;241m.\u001b[39m__traceback__)\n",
|
||
"File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python312\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\polymorphic_function.py:833\u001b[0m, in \u001b[0;36mFunction.__call__\u001b[1;34m(self, *args, **kwds)\u001b[0m\n\u001b[0;32m 830\u001b[0m compiler \u001b[38;5;241m=\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mxla\u001b[39m\u001b[38;5;124m\"\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_jit_compile \u001b[38;5;28;01melse\u001b[39;00m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mnonXla\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 832\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m OptionalXlaContext(\u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_jit_compile):\n\u001b[1;32m--> 833\u001b[0m result \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43mkwds\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 835\u001b[0m new_tracing_count \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mexperimental_get_tracing_count()\n\u001b[0;32m 836\u001b[0m without_tracing \u001b[38;5;241m=\u001b[39m (tracing_count \u001b[38;5;241m==\u001b[39m new_tracing_count)\n",
|
||
"File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python312\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\polymorphic_function.py:878\u001b[0m, in \u001b[0;36mFunction._call\u001b[1;34m(self, *args, **kwds)\u001b[0m\n\u001b[0;32m 875\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_lock\u001b[38;5;241m.\u001b[39mrelease()\n\u001b[0;32m 876\u001b[0m \u001b[38;5;66;03m# In this case we have not created variables on the first call. So we can\u001b[39;00m\n\u001b[0;32m 877\u001b[0m \u001b[38;5;66;03m# run the first trace but we should fail if variables are created.\u001b[39;00m\n\u001b[1;32m--> 878\u001b[0m results \u001b[38;5;241m=\u001b[39m \u001b[43mtracing_compilation\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcall_function\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 879\u001b[0m \u001b[43m \u001b[49m\u001b[43margs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mkwds\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_variable_creation_config\u001b[49m\n\u001b[0;32m 880\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 881\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_created_variables:\n\u001b[0;32m 882\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mValueError\u001b[39;00m(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mCreating variables on a non-first call to a function\u001b[39m\u001b[38;5;124m\"\u001b[39m\n\u001b[0;32m 883\u001b[0m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m decorated with tf.function.\u001b[39m\u001b[38;5;124m\"\u001b[39m)\n",
|
||
"File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python312\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\tracing_compilation.py:139\u001b[0m, in \u001b[0;36mcall_function\u001b[1;34m(args, kwargs, tracing_options)\u001b[0m\n\u001b[0;32m 137\u001b[0m bound_args \u001b[38;5;241m=\u001b[39m function\u001b[38;5;241m.\u001b[39mfunction_type\u001b[38;5;241m.\u001b[39mbind(\u001b[38;5;241m*\u001b[39margs, \u001b[38;5;241m*\u001b[39m\u001b[38;5;241m*\u001b[39mkwargs)\n\u001b[0;32m 138\u001b[0m flat_inputs \u001b[38;5;241m=\u001b[39m function\u001b[38;5;241m.\u001b[39mfunction_type\u001b[38;5;241m.\u001b[39munpack_inputs(bound_args)\n\u001b[1;32m--> 139\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mfunction\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_call_flat\u001b[49m\u001b[43m(\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# pylint: disable=protected-access\u001b[39;49;00m\n\u001b[0;32m 140\u001b[0m \u001b[43m \u001b[49m\u001b[43mflat_inputs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcaptured_inputs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mfunction\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcaptured_inputs\u001b[49m\n\u001b[0;32m 141\u001b[0m \u001b[43m\u001b[49m\u001b[43m)\u001b[49m\n",
|
||
"File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python312\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\concrete_function.py:1322\u001b[0m, in \u001b[0;36mConcreteFunction._call_flat\u001b[1;34m(self, tensor_inputs, captured_inputs)\u001b[0m\n\u001b[0;32m 1318\u001b[0m possible_gradient_type \u001b[38;5;241m=\u001b[39m gradients_util\u001b[38;5;241m.\u001b[39mPossibleTapeGradientTypes(args)\n\u001b[0;32m 1319\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m (possible_gradient_type \u001b[38;5;241m==\u001b[39m gradients_util\u001b[38;5;241m.\u001b[39mPOSSIBLE_GRADIENT_TYPES_NONE\n\u001b[0;32m 1320\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m executing_eagerly):\n\u001b[0;32m 1321\u001b[0m \u001b[38;5;66;03m# No tape is watching; skip to running the function.\u001b[39;00m\n\u001b[1;32m-> 1322\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_inference_function\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcall_preflattened\u001b[49m\u001b[43m(\u001b[49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1323\u001b[0m forward_backward \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_select_forward_and_backward_functions(\n\u001b[0;32m 1324\u001b[0m args,\n\u001b[0;32m 1325\u001b[0m possible_gradient_type,\n\u001b[0;32m 1326\u001b[0m executing_eagerly)\n\u001b[0;32m 1327\u001b[0m forward_function, args_with_tangents \u001b[38;5;241m=\u001b[39m forward_backward\u001b[38;5;241m.\u001b[39mforward()\n",
|
||
"File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python312\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\atomic_function.py:216\u001b[0m, in \u001b[0;36mAtomicFunction.call_preflattened\u001b[1;34m(self, args)\u001b[0m\n\u001b[0;32m 214\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[38;5;21mcall_preflattened\u001b[39m(\u001b[38;5;28mself\u001b[39m, args: Sequence[core\u001b[38;5;241m.\u001b[39mTensor]) \u001b[38;5;241m-\u001b[39m\u001b[38;5;241m>\u001b[39m Any:\n\u001b[0;32m 215\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m\"\"\"Calls with flattened tensor inputs and returns the structured output.\"\"\"\u001b[39;00m\n\u001b[1;32m--> 216\u001b[0m flat_outputs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcall_flat\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m*\u001b[39;49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 217\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfunction_type\u001b[38;5;241m.\u001b[39mpack_output(flat_outputs)\n",
|
||
"File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python312\\site-packages\\tensorflow\\python\\eager\\polymorphic_function\\atomic_function.py:251\u001b[0m, in \u001b[0;36mAtomicFunction.call_flat\u001b[1;34m(self, *args)\u001b[0m\n\u001b[0;32m 249\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m record\u001b[38;5;241m.\u001b[39mstop_recording():\n\u001b[0;32m 250\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_bound_context\u001b[38;5;241m.\u001b[39mexecuting_eagerly():\n\u001b[1;32m--> 251\u001b[0m outputs \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_bound_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcall_function\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 252\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mname\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 253\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mlist\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43margs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 254\u001b[0m \u001b[43m \u001b[49m\u001b[38;5;28;43mlen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mfunction_type\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mflat_outputs\u001b[49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 255\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 256\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 257\u001b[0m outputs \u001b[38;5;241m=\u001b[39m make_call_op_in_graph(\n\u001b[0;32m 258\u001b[0m \u001b[38;5;28mself\u001b[39m,\n\u001b[0;32m 259\u001b[0m \u001b[38;5;28mlist\u001b[39m(args),\n\u001b[0;32m 260\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_bound_context\u001b[38;5;241m.\u001b[39mfunction_call_options\u001b[38;5;241m.\u001b[39mas_attrs(),\n\u001b[0;32m 261\u001b[0m )\n",
|
||
"File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python312\\site-packages\\tensorflow\\python\\eager\\context.py:1683\u001b[0m, in \u001b[0;36mContext.call_function\u001b[1;34m(self, name, tensor_inputs, num_outputs)\u001b[0m\n\u001b[0;32m 1681\u001b[0m cancellation_context \u001b[38;5;241m=\u001b[39m cancellation\u001b[38;5;241m.\u001b[39mcontext()\n\u001b[0;32m 1682\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m cancellation_context \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m-> 1683\u001b[0m outputs \u001b[38;5;241m=\u001b[39m \u001b[43mexecute\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mexecute\u001b[49m\u001b[43m(\u001b[49m\n\u001b[0;32m 1684\u001b[0m \u001b[43m \u001b[49m\u001b[43mname\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdecode\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mutf-8\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1685\u001b[0m \u001b[43m \u001b[49m\u001b[43mnum_outputs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mnum_outputs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1686\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mtensor_inputs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1687\u001b[0m \u001b[43m \u001b[49m\u001b[43mattrs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43mattrs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1688\u001b[0m \u001b[43m \u001b[49m\u001b[43mctx\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\n\u001b[0;32m 1689\u001b[0m \u001b[43m \u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 1690\u001b[0m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[0;32m 1691\u001b[0m outputs \u001b[38;5;241m=\u001b[39m execute\u001b[38;5;241m.\u001b[39mexecute_with_cancellation(\n\u001b[0;32m 1692\u001b[0m name\u001b[38;5;241m.\u001b[39mdecode(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mutf-8\u001b[39m\u001b[38;5;124m\"\u001b[39m),\n\u001b[0;32m 1693\u001b[0m num_outputs\u001b[38;5;241m=\u001b[39mnum_outputs,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 1697\u001b[0m cancellation_manager\u001b[38;5;241m=\u001b[39mcancellation_context,\n\u001b[0;32m 1698\u001b[0m )\n",
|
||
"File \u001b[1;32m~\\AppData\\Roaming\\Python\\Python312\\site-packages\\tensorflow\\python\\eager\\execute.py:53\u001b[0m, in \u001b[0;36mquick_execute\u001b[1;34m(op_name, num_outputs, inputs, attrs, ctx, name)\u001b[0m\n\u001b[0;32m 51\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m 52\u001b[0m ctx\u001b[38;5;241m.\u001b[39mensure_initialized()\n\u001b[1;32m---> 53\u001b[0m tensors \u001b[38;5;241m=\u001b[39m \u001b[43mpywrap_tfe\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mTFE_Py_Execute\u001b[49m\u001b[43m(\u001b[49m\u001b[43mctx\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_handle\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mdevice_name\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mop_name\u001b[49m\u001b[43m,\u001b[49m\n\u001b[0;32m 54\u001b[0m \u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mattrs\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mnum_outputs\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m 55\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m core\u001b[38;5;241m.\u001b[39m_NotOkStatusException \u001b[38;5;28;01mas\u001b[39;00m e:\n\u001b[0;32m 56\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m name \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n",
|
||
"\u001b[1;31mKeyboardInterrupt\u001b[0m: "
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"early_stop = EarlyStopping(monitor='val_loss', patience=5, restore_best_weights=True, verbose=1)\n",
|
||
"reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.3, patience=3, verbose=1)\n",
|
||
"model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])\n",
|
||
"\n",
|
||
"history = model.fit(\n",
|
||
" X_train_spec, y_train, \n",
|
||
" epochs=40, \n",
|
||
" batch_size=16, \n",
|
||
" validation_data=(X_val_spec, y_val),\n",
|
||
" callbacks=[early_stop, reduce_lr] \n",
|
||
")\n"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 36,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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3PS8BoMBWq0WQUFBCFR4HSR4HSR4HdrgtZDgdZDgdXBsLfR6vbht4sSJcAaNU49iOuDODZWe2x3iTGnwOkjwOkjwOrTBayHB6yDB6+DYWtB9+vIbzpEohmEYhmEYJ+CaKIZhGIZhGCdgEcUwDMMwDOMELKIYhmEYhmGcgEUUwzAMwzCME7CIYhiGYRiGcQIWUQzDMAzDME7AIophGIZhGMYJWEQxDMMwDMM4AYsohmEYhmEYJ2ARxTAMwzAM4wQsohiGYRiGYZyARRTDMAzDMIwTsIjyMmazGS+//DJmz56N8ePH4/rrr0d+fn6396+ursaf//xnTJkyBVOnTsVjjz2G5uZmKJ2amho88sgjmDNnDiZOnIhLLrkEW7du7fb+r7/+OrKzs7uclE5paanNz/X1118H1PawadMmm+tAp5NPPtnmY7Zt22bz/vRcSuXNN9/E5Zdf3uG6AwcO4LLLLhP7iwULFuCDDz7o9Xl++uknnHHGGRg7diwWL16MDRs2QOnrsGrVKpx//vmYMGGCWIenn34aOp2u2+cwmUzi83fePl555RUoeR0efvjhLp+J1iOQtofLL7+82/3F0qVLu32eq6++usv9O69vr1gYr/LKK69Ypk2bZvn1118tBw4csFxzzTWWRYsWWVpaWmze/7LLLrOcf/75lr1791rWr19vmT9/vuXee++1KJ2rr77actZZZ1m2bNliOXbsmOWxxx6zjB071nL06FGb9//jH/9oueeeeyxlZWUdTkrnt99+s4wZM8ZSWlra4XM1NzcH1PZA23/nv+3y5cst2dnZli+//NLmY/773/9aTjnllC6P6+675Ot89NFHluHDh4u/sUxVVZXYXzzwwAOWnJwcsRa0vXS3JsSGDRsso0aNsrz//vviMU899ZRl9OjR4rJS14H2EyNGjLC8/vrrluPHj4vvzZw5cyz3339/t89Dn3fYsGFiP9t++2hoaLAodR2ICy64wPL88893+EyVlZUBtT1UV1d3+Py0/7z00kstZ555Zo9/3xkzZlg+/vjjDo+l53IEFlFehHbuEyZMEDt/mdraWiEevvvuuy733759u9gJtN/Y165dK35YSkpKLEolNzdXfK6tW7darzObzeIH8cUXX7T5mNNPP93y7rvvWvyNt956y3L22WfbdV9/3R5s0djYKARiTz+Sf/3rXy033XSTRenQ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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
},
|
||
{
|
||
"data": {
|
||
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAkkAAAHJCAYAAACR2K1xAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABxnElEQVR4nO3dB3iTVfsG8Lt7t7Slkw1lFCh7yhYZKojgBAUFVBBxAQ5QUD8ERRFR/Bz491MBEZWlKIogU/beG1pG6d67TfO/nhNS2pJCR9qM3r/rekmavAlvTtP07jnnfY6NVqvVgoiIiIiKsC36JREREREJhiQiIiIiAxiSiIiIiAxgSCIiIiIygCGJiIiIyACGJCIiIiIDGJKIiIiIDGBIIiIiIjKAIYmIiIjIAIYkIqoSI0eORNOmTfHoo4+WuM/LL7+s9nn99dcr/P/t3r1bPZdcGvMxcv+CBQsqfHxEZP4Ykoioytja2uLQoUOIioq66b6MjAxs2rTJJMdFRGQIQxIRVZnmzZvDyckJf/311033SUBycXFBQECASY6NiKg4hiQiqjKurq7o1auXwZC0du1aDBgwAPb29kVuz87Oxn//+18MHDgQYWFh6N+/PxYuXIj8/Pwi+y1btkw9vlWrVnj88ccRGRl50/8ht02aNAmdOnVC69at8cQTT+DEiRMVek0xMTGYOnWqel3yfz/44IP4559/iuyzfft2PPzww2jbti06duyIZ599FufPny+4/9KlSxg/fjw6d+6sjuuRRx7Bli1bKnRcRFRxDElEVKXuueeem4bc0tLSsHXrVgwaNKjIvlqtVoWH//u//8NDDz2EL7/8UoWl+fPn46233irYb8mSJeprCSqff/65ChrTp08v8lwJCQlqPtTx48fVfR999JEKWo899liRwFIWcXFxKhTt27dPzaeSuUq1atXCc889h99++03tc/nyZUyYMAEtW7bEF198gVmzZuHixYt45pln1P8v27hx45CZmYkPPvhAHX+NGjVUkIqIiCjXcRGRcRT9k42IqJL17t1bDatJb9KTTz6pblu/fj18fX3Rvn37IvtKcNqxYwfmzZuHe++9V93WrVs3ODs745NPPsGoUaMQEhKigoWEr2nTpql9unfvroKX9C7pff/990hKSsKPP/6ogozo2bOnepw816efflrm1/Ltt9+q8LVu3bqC55Sg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",
|
||
"text/plain": [
|
||
"<Figure size 640x480 with 1 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"plt.plot(history.history['accuracy'])\n",
|
||
"plt.plot(history.history['val_accuracy'])\n",
|
||
"plt.title('Model accuracy')\n",
|
||
"plt.ylabel('Accuracy')\n",
|
||
"plt.xlabel('Epoch')\n",
|
||
"plt.legend(['Train', 'Test'], loc='upper left')\n",
|
||
"plt.show()\n",
|
||
"\n",
|
||
"\n",
|
||
"plt.plot(history.history['loss'])\n",
|
||
"plt.plot(history.history['val_loss'])\n",
|
||
"plt.title('Model loss')\n",
|
||
"plt.ylabel('Loss')\n",
|
||
"plt.xlabel('Epoch')\n",
|
||
"plt.legend(['Train', 'Test'], loc='upper left')\n",
|
||
"plt.show()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"\u001b[1m27/27\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 162ms/step\n",
|
||
" precision recall f1-score support\n",
|
||
"\n",
|
||
" 1 0.91 0.61 0.73 67\n",
|
||
" 2 0.77 0.79 0.78 107\n",
|
||
" 3 0.86 0.69 0.77 123\n",
|
||
" 4 0.66 0.82 0.73 99\n",
|
||
" 5 0.79 0.85 0.82 107\n",
|
||
" 6 0.80 0.80 0.80 118\n",
|
||
" 7 0.83 0.82 0.83 122\n",
|
||
" 8 0.71 0.79 0.75 121\n",
|
||
"\n",
|
||
" accuracy 0.78 864\n",
|
||
" macro avg 0.79 0.77 0.77 864\n",
|
||
"weighted avg 0.79 0.78 0.78 864\n",
|
||
"\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"y_test_encoded = tf.keras.utils.to_categorical(y_test, num_classes=9)\n",
|
||
"y_pred = model.predict(X_test_reshaped)\n",
|
||
"y_pred_classes = np.argmax(y_pred, axis=1)\n",
|
||
"\n",
|
||
"y_true_classes = np.argmax(y_test_encoded, axis=1)\n",
|
||
"\n",
|
||
"report = classification_report(y_true_classes, y_pred_classes)\n",
|
||
"print(report)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"\u001b[1m27/27\u001b[0m \u001b[32m━━━━━━━━━━━━━━━━━━━━\u001b[0m\u001b[37m\u001b[0m \u001b[1m5s\u001b[0m 182ms/step - accuracy: 0.7781 - loss: 1.1730\n",
|
||
"Test Loss: 1.289555311203003\n",
|
||
"Test Accuracy: 0.7777777910232544\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"evaluation_result = model.evaluate(X_test_reshaped, y_test)\n",
|
||
"\n",
|
||
"print(\"Test Loss:\", evaluation_result[0])\n",
|
||
"print(\"Test Accuracy:\", evaluation_result[1])"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stderr",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"WARNING:absl:You are saving your model as an HDF5 file via `model.save()` or `keras.saving.save_model(model)`. This file format is considered legacy. We recommend using instead the native Keras format, e.g. `model.save('my_model.keras')` or `keras.saving.save_model(model, 'my_model.keras')`. \n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"model.save('model.h5')"
|
||
]
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "base",
|
||
"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.12.3"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 2
|
||
}
|