Commit f2408d41 authored by David Maxence's avatar David Maxence
Browse files

ajout data augmentation

parent ea890dc4
{
"cells": [
{
"cell_type": "code",
"execution_count": 8,
"id": "iraqi-stand",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np \n",
"import os\n",
"import pandas as pd \n",
"from scipy.io import wavfile\n",
"\n",
"import librosa\n",
"from tqdm import tqdm\n",
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"\n",
"import matplotlib.pyplot as plt\n",
"from tensorflow.keras import regularizers, activations\n",
"from tensorflow.keras.models import Sequential\n",
"from tensorflow.keras.layers import Dense, Dropout, Flatten, Activation, Conv2D, MaxPooling2D, GlobalAveragePooling2D\n",
"from tensorflow.keras.utils import to_categorical\n",
"from sklearn.model_selection import train_test_split\n",
"from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
"\n",
"from tensorflow.keras.preprocessing.image import ImageDataGenerator\n",
"\n",
"from datetime import datetime \n",
"\n",
"from matplotlib import pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "religious-compression",
"metadata": {},
"outputs": [],
"source": [
"us8k_df = pd.read_pickle(\"us8k_df.pkl\")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "nasty-northeast",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[-61.70703 , -74.49714 , -65.133354, ..., -80. , -80. ,\n",
" -80. ],\n",
" [-58.9729 , -65.05351 , -65.055664, ..., -80. , -80. ,\n",
" -80. ],\n",
" [-58.314186, -59.996964, -61.480446, ..., -80. , -80. ,\n",
" -80. ],\n",
" ...,\n",
" [-80. , -80. , -67.451935, ..., -80. , -80. ,\n",
" -80. ],\n",
" [-80. , -80. , -74.46571 , ..., -80. , -80. ,\n",
" -80. ],\n",
" [-80. , -80. , -80. , ..., -80. , -80. ,\n",
" -80. ]], dtype=float32)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = us8k_df.drop(['fold'],axis=1)\n",
"df['melspectrogram'][0]"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "armed-hughes",
"metadata": {},
"outputs": [],
"source": [
"X = np.stack(df.melspectrogram.to_numpy())\n",
"\n",
"X_dim = (128,128,1)\n",
"X = X.reshape(X.shape[0], *X_dim)\n",
"Y = np.array(df['label'])\n",
"Y = to_categorical(Y)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "blond-debut",
"metadata": {},
"outputs": [],
"source": [
"def init_data_aug():\n",
" train_datagen = ImageDataGenerator(\n",
" featurewise_center=True,\n",
" featurewise_std_normalization=True,\n",
" fill_mode = 'constant',\n",
" cval=-80.0,\n",
" width_shift_range=0.1,\n",
" height_shift_range=0.0)\n",
"\n",
" val_datagen = ImageDataGenerator(\n",
" featurewise_center=True,\n",
" featurewise_std_normalization=True,\n",
" fill_mode = 'constant',\n",
" cval=-80.0)\n",
" \n",
" \n",
" return train_datagen, val_datagen"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "acting-testing",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1310"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"X_train, X_test, Y_train, Y_test = train_test_split(X,Y,test_size=0.3,shuffle=True,stratify = Y)\n",
"len(X_train),len(X_test),len(Y_test)\n",
"X_val, X_test, Y_val,Y_test = train_test_split(X_test,Y_test,test_size=0.5,shuffle=True,stratify = Y_test)\n",
"len(X_test)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "radical-lesson",
"metadata": {},
"outputs": [],
"source": [
"def init_model():\n",
" model1 = Sequential()\n",
" \n",
" #layer-1\n",
" model1.add(Conv2D(filters=24, kernel_size=5, input_shape=(128, 128, 1),\n",
" kernel_regularizer=regularizers.l2(1e-3)))\n",
" model1.add(MaxPooling2D(pool_size=(3,3), strides=3))\n",
" model1.add(Activation(activations.relu))\n",
" \n",
" #layer-2\n",
" model1.add(Conv2D(filters=36, kernel_size=4, padding='valid', kernel_regularizer=regularizers.l2(1e-3)))\n",
" model1.add(MaxPooling2D(pool_size=(2,2), strides=2))\n",
" model1.add(Activation(activations.relu))\n",
" \n",
" #layer-3\n",
" model1.add(Conv2D(filters=48, kernel_size=3, padding='valid'))\n",
" model1.add(Activation(activations.relu))\n",
" \n",
" model1.add(GlobalAveragePooling2D())\n",
" \n",
" #layer-4 (1st dense layer)\n",
" model1.add(Dense(60, activation='relu'))\n",
" model1.add(Dropout(0.5))\n",
" \n",
" #layer-5 (2nd dense layer)\n",
" model1.add(Dense(10, activation='softmax'))\n",
"\n",
" \n",
" # compile\n",
" model1.compile(loss='categorical_crossentropy', metrics=['accuracy'], optimizer='adam')\n",
" \n",
" return model1"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "powered-shopping",
"metadata": {},
"outputs": [],
"source": [
"def process(model,X_train,X_val,Y_train,Y_val, epochs=100, num_batch_size=32):\n",
" \n",
" # init model\n",
" model = init_model()\n",
" \n",
" train_datagen, val_datagen = init_data_aug()\n",
" # fit augmentation\n",
" train_datagen.fit(X_train)\n",
" val_datagen.fit(X_train)\n",
"\n",
"\n",
" # pre-training accuracy\n",
" score = model.evaluate(val_datagen.flow(X_val, Y_val, batch_size=num_batch_size), verbose=0)\n",
" print(\"Pre-training accuracy: %.4f%%\\n\" % (100 * score[1]))\n",
" \n",
" # train the model\n",
" start = datetime.now()\n",
" history = model.fit(train_datagen.flow(X_train,Y_train, batch_size=num_batch_size), \n",
" steps_per_epoch=len(X_train) / num_batch_size,\n",
" epochs=epochs,\n",
" validation_data=val_datagen.flow(X_val,Y_val,batch_size=num_batch_size))\n",
" end = datetime.now()\n",
" print(\"Training completed in time: \", end - start, '\\n')\n",
" \n",
" return history"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "revolutionary-safety",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Pre-training accuracy: 4.5038%\n",
"\n"
]
}
],
"source": [
"epochs = 100\n",
"num_batch_size = 32\n",
"\n",
"model = init_model()\n",
" \n",
"train_datagen, val_datagen = init_data_aug()\n",
"# fit augmentation\n",
"train_datagen.fit(X_train)\n",
"val_datagen.fit(X_train)\n",
"\n",
"\n",
"# pre-training accuracy\n",
"score = model.evaluate(val_datagen.flow(X_val, Y_val, batch_size=num_batch_size), verbose=0)\n",
"print(\"Pre-training accuracy: %.4f%%\\n\" % (100 * score[1]))\n",
" \n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "occasional-differential",
"metadata": {},
"outputs": [],
"source": [
"log_dir = \"logs/fit/\" + datetime.now().strftime(\"%Y%m%d-%H%M%S\")\n",
"tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir = log_dir, histogram_freq = 1)\n",
"save_best = tf.keras.callbacks.ModelCheckpoint(filepath = \"logs/checkpoints/\", save_weights_only = True,\n",
" monitor = \"val_accuracy\", mode = \"max\", save_best_only = True)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "perfect-shelter",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/100\n",
"191/191 [==============================] - 19s 96ms/step - loss: 2.0945 - accuracy: 0.2114 - val_loss: 1.8490 - val_accuracy: 0.3031\n",
"Epoch 2/100\n",
"191/191 [==============================] - 18s 95ms/step - loss: 1.8834 - accuracy: 0.2795 - val_loss: 1.7011 - val_accuracy: 0.3534\n",
"Epoch 3/100\n",
"191/191 [==============================] - 18s 95ms/step - loss: 1.7282 - accuracy: 0.3514 - val_loss: 1.4976 - val_accuracy: 0.4344\n",
"Epoch 4/100\n",
"191/191 [==============================] - 18s 94ms/step - loss: 1.6228 - accuracy: 0.3923 - val_loss: 1.4068 - val_accuracy: 0.4534\n",
"Epoch 5/100\n",
"191/191 [==============================] - 19s 97ms/step - loss: 1.5227 - accuracy: 0.4308 - val_loss: 1.3409 - val_accuracy: 0.5008\n",
"Epoch 6/100\n",
"191/191 [==============================] - 19s 98ms/step - loss: 1.4431 - accuracy: 0.4714 - val_loss: 1.2222 - val_accuracy: 0.5298\n",
"Epoch 7/100\n",
"191/191 [==============================] - 19s 98ms/step - loss: 1.3780 - accuracy: 0.5049 - val_loss: 1.2548 - val_accuracy: 0.5450\n",
"Epoch 8/100\n",
"191/191 [==============================] - 20s 105ms/step - loss: 1.3491 - accuracy: 0.5129 - val_loss: 1.1174 - val_accuracy: 0.5756\n",
"Epoch 9/100\n",
"191/191 [==============================] - 19s 98ms/step - loss: 1.3033 - accuracy: 0.5291 - val_loss: 1.1123 - val_accuracy: 0.5794\n",
"Epoch 10/100\n",
"191/191 [==============================] - 19s 99ms/step - loss: 1.2746 - accuracy: 0.5455 - val_loss: 1.3181 - val_accuracy: 0.4931\n",
"Epoch 11/100\n",
"191/191 [==============================] - 19s 98ms/step - loss: 1.2487 - accuracy: 0.5530 - val_loss: 1.0598 - val_accuracy: 0.6229\n",
"Epoch 12/100\n",
"191/191 [==============================] - 18s 97ms/step - loss: 1.2192 - accuracy: 0.5666 - val_loss: 1.1343 - val_accuracy: 0.5763\n",
"Epoch 13/100\n",
"191/191 [==============================] - 19s 100ms/step - loss: 1.2002 - accuracy: 0.5754 - val_loss: 1.0215 - val_accuracy: 0.6458\n",
"Epoch 14/100\n",
"191/191 [==============================] - 19s 98ms/step - loss: 1.1816 - accuracy: 0.5879 - val_loss: 1.0313 - val_accuracy: 0.6313\n",
"Epoch 15/100\n",
"191/191 [==============================] - 19s 101ms/step - loss: 1.1693 - accuracy: 0.5897 - val_loss: 0.9418 - val_accuracy: 0.6779\n",
"Epoch 16/100\n",
"191/191 [==============================] - 18s 94ms/step - loss: 1.1462 - accuracy: 0.6027 - val_loss: 1.0548 - val_accuracy: 0.6389\n",
"Epoch 17/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 1.1181 - accuracy: 0.6132 - val_loss: 0.8945 - val_accuracy: 0.7008\n",
"Epoch 18/100\n",
"191/191 [==============================] - 18s 92ms/step - loss: 1.1121 - accuracy: 0.6080 - val_loss: 0.9332 - val_accuracy: 0.6786\n",
"Epoch 19/100\n",
"191/191 [==============================] - 18s 96ms/step - loss: 1.0823 - accuracy: 0.6288 - val_loss: 0.8861 - val_accuracy: 0.7000\n",
"Epoch 20/100\n",
"191/191 [==============================] - 18s 97ms/step - loss: 1.0697 - accuracy: 0.6347 - val_loss: 1.0260 - val_accuracy: 0.6435\n",
"Epoch 21/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 1.0453 - accuracy: 0.6391 - val_loss: 0.8356 - val_accuracy: 0.7160\n",
"Epoch 22/100\n",
"191/191 [==============================] - 18s 95ms/step - loss: 1.0142 - accuracy: 0.6510 - val_loss: 0.8706 - val_accuracy: 0.7061\n",
"Epoch 23/100\n",
"191/191 [==============================] - 18s 94ms/step - loss: 1.0186 - accuracy: 0.6589 - val_loss: 0.8134 - val_accuracy: 0.7275\n",
"Epoch 24/100\n",
"191/191 [==============================] - 17s 91ms/step - loss: 0.9861 - accuracy: 0.6661 - val_loss: 0.8789 - val_accuracy: 0.7038\n",
"Epoch 25/100\n",
"191/191 [==============================] - 17s 91ms/step - loss: 1.0025 - accuracy: 0.6638 - val_loss: 0.8043 - val_accuracy: 0.7405\n",
"Epoch 26/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 0.9809 - accuracy: 0.6734 - val_loss: 0.8340 - val_accuracy: 0.7229\n",
"Epoch 27/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 0.9513 - accuracy: 0.6769 - val_loss: 0.7818 - val_accuracy: 0.7260\n",
"Epoch 28/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 0.9325 - accuracy: 0.6865 - val_loss: 0.7605 - val_accuracy: 0.7519\n",
"Epoch 29/100\n",
"191/191 [==============================] - 18s 94ms/step - loss: 0.9311 - accuracy: 0.6895 - val_loss: 0.7800 - val_accuracy: 0.7382\n",
"Epoch 30/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 0.9177 - accuracy: 0.6978 - val_loss: 0.7539 - val_accuracy: 0.7542\n",
"Epoch 31/100\n",
"191/191 [==============================] - 17s 91ms/step - loss: 0.9136 - accuracy: 0.6981 - val_loss: 0.7795 - val_accuracy: 0.7504\n",
"Epoch 32/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 0.8793 - accuracy: 0.7120 - val_loss: 0.8220 - val_accuracy: 0.7244\n",
"Epoch 33/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 0.8962 - accuracy: 0.7083 - val_loss: 0.7127 - val_accuracy: 0.7511\n",
"Epoch 34/100\n",
"191/191 [==============================] - 18s 95ms/step - loss: 0.8719 - accuracy: 0.7204 - val_loss: 0.6723 - val_accuracy: 0.7794\n",
"Epoch 35/100\n",
"191/191 [==============================] - 19s 97ms/step - loss: 0.8405 - accuracy: 0.7266 - val_loss: 0.6750 - val_accuracy: 0.7969\n",
"Epoch 36/100\n",
"191/191 [==============================] - 18s 95ms/step - loss: 0.8545 - accuracy: 0.7181 - val_loss: 0.7742 - val_accuracy: 0.7351\n",
"Epoch 37/100\n",
"191/191 [==============================] - 17s 91ms/step - loss: 0.8232 - accuracy: 0.7331 - val_loss: 0.7182 - val_accuracy: 0.7794\n",
"Epoch 38/100\n",
"191/191 [==============================] - 18s 95ms/step - loss: 0.8531 - accuracy: 0.7245 - val_loss: 0.6721 - val_accuracy: 0.7763\n",
"Epoch 39/100\n",
"191/191 [==============================] - 18s 94ms/step - loss: 0.8330 - accuracy: 0.7264 - val_loss: 0.7177 - val_accuracy: 0.7756\n",
"Epoch 40/100\n",
"191/191 [==============================] - 18s 92ms/step - loss: 0.8113 - accuracy: 0.7394 - val_loss: 0.6658 - val_accuracy: 0.7855\n",
"Epoch 41/100\n",
"191/191 [==============================] - 18s 92ms/step - loss: 0.7995 - accuracy: 0.7425 - val_loss: 0.6734 - val_accuracy: 0.7786\n",
"Epoch 42/100\n",
"191/191 [==============================] - 18s 92ms/step - loss: 0.8041 - accuracy: 0.7376 - val_loss: 0.7795 - val_accuracy: 0.7550\n",
"Epoch 43/100\n",
"191/191 [==============================] - 17s 91ms/step - loss: 0.7846 - accuracy: 0.7435 - val_loss: 0.7751 - val_accuracy: 0.7458\n",
"Epoch 44/100\n",
"191/191 [==============================] - 17s 91ms/step - loss: 0.7801 - accuracy: 0.7485 - val_loss: 0.6504 - val_accuracy: 0.7985\n",
"Epoch 45/100\n",
"191/191 [==============================] - 18s 94ms/step - loss: 0.7675 - accuracy: 0.7570 - val_loss: 0.6163 - val_accuracy: 0.8153\n",
"Epoch 46/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 0.7539 - accuracy: 0.7669 - val_loss: 0.6606 - val_accuracy: 0.7916\n",
"Epoch 47/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 0.7596 - accuracy: 0.7662 - val_loss: 0.6363 - val_accuracy: 0.8107\n",
"Epoch 48/100\n",
"191/191 [==============================] - 18s 94ms/step - loss: 0.7552 - accuracy: 0.7629 - val_loss: 0.6739 - val_accuracy: 0.7824\n",
"Epoch 49/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 0.7560 - accuracy: 0.7619 - val_loss: 0.6599 - val_accuracy: 0.7870\n",
"Epoch 50/100\n",
"191/191 [==============================] - 18s 92ms/step - loss: 0.7209 - accuracy: 0.7801 - val_loss: 0.7099 - val_accuracy: 0.7695\n",
"Epoch 51/100\n",
"191/191 [==============================] - 18s 92ms/step - loss: 0.7401 - accuracy: 0.7660 - val_loss: 0.6601 - val_accuracy: 0.7916\n",
"Epoch 52/100\n",
"191/191 [==============================] - 18s 94ms/step - loss: 0.7316 - accuracy: 0.7714 - val_loss: 0.5968 - val_accuracy: 0.8137\n",
"Epoch 53/100\n",
"191/191 [==============================] - 17s 90ms/step - loss: 0.7234 - accuracy: 0.7701 - val_loss: 0.6100 - val_accuracy: 0.8176\n",
"Epoch 54/100\n",
"191/191 [==============================] - 18s 92ms/step - loss: 0.6988 - accuracy: 0.7829 - val_loss: 0.6202 - val_accuracy: 0.8160\n",
"Epoch 55/100\n",
"191/191 [==============================] - 17s 88ms/step - loss: 0.6878 - accuracy: 0.7873 - val_loss: 0.6186 - val_accuracy: 0.8115\n",
"Epoch 56/100\n",
"191/191 [==============================] - 17s 89ms/step - loss: 0.6956 - accuracy: 0.7983 - val_loss: 0.6064 - val_accuracy: 0.8084\n",
"Epoch 57/100\n",
"191/191 [==============================] - 18s 96ms/step - loss: 0.6939 - accuracy: 0.7955 - val_loss: 0.6268 - val_accuracy: 0.8130\n",
"Epoch 58/100\n",
"191/191 [==============================] - 18s 94ms/step - loss: 0.6853 - accuracy: 0.7955 - val_loss: 0.5867 - val_accuracy: 0.8191\n",
"Epoch 59/100\n",
"191/191 [==============================] - 18s 95ms/step - loss: 0.6641 - accuracy: 0.7992 - val_loss: 0.5567 - val_accuracy: 0.8290\n",
"Epoch 60/100\n",
"191/191 [==============================] - 19s 99ms/step - loss: 0.6757 - accuracy: 0.7943 - val_loss: 0.8017 - val_accuracy: 0.7565\n",
"Epoch 61/100\n",
"191/191 [==============================] - 18s 92ms/step - loss: 0.6757 - accuracy: 0.7917 - val_loss: 0.5525 - val_accuracy: 0.8366\n",
"Epoch 62/100\n",
"191/191 [==============================] - 17s 91ms/step - loss: 0.6584 - accuracy: 0.8009 - val_loss: 0.5519 - val_accuracy: 0.8389\n",
"Epoch 63/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 0.6458 - accuracy: 0.8020 - val_loss: 0.5576 - val_accuracy: 0.8321\n",
"Epoch 64/100\n",
"191/191 [==============================] - 19s 97ms/step - loss: 0.6454 - accuracy: 0.8043 - val_loss: 0.5867 - val_accuracy: 0.8267\n",
"Epoch 65/100\n",
"191/191 [==============================] - 17s 88ms/step - loss: 0.6548 - accuracy: 0.8035 - val_loss: 0.5497 - val_accuracy: 0.8290\n",
"Epoch 66/100\n",
"191/191 [==============================] - 17s 88ms/step - loss: 0.6388 - accuracy: 0.8043 - val_loss: 0.6021 - val_accuracy: 0.8313\n",
"Epoch 67/100\n",
"191/191 [==============================] - 17s 90ms/step - loss: 0.6314 - accuracy: 0.8092 - val_loss: 0.5749 - val_accuracy: 0.8321\n",
"Epoch 68/100\n",
"191/191 [==============================] - 18s 95ms/step - loss: 0.6276 - accuracy: 0.8132 - val_loss: 0.5583 - val_accuracy: 0.8351\n",
"Epoch 69/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 0.6327 - accuracy: 0.8120 - val_loss: 0.5595 - val_accuracy: 0.8450\n",
"Epoch 70/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 0.6307 - accuracy: 0.8154 - val_loss: 0.5094 - val_accuracy: 0.8527\n",
"Epoch 71/100\n",
"191/191 [==============================] - 17s 90ms/step - loss: 0.6233 - accuracy: 0.8135 - val_loss: 0.5790 - val_accuracy: 0.8275\n",
"Epoch 72/100\n",
"191/191 [==============================] - 17s 89ms/step - loss: 0.6094 - accuracy: 0.8172 - val_loss: 0.5280 - val_accuracy: 0.8443\n",
"Epoch 73/100\n",
"191/191 [==============================] - 17s 90ms/step - loss: 0.6162 - accuracy: 0.8205 - val_loss: 0.5526 - val_accuracy: 0.8466\n",
"Epoch 74/100\n",
"191/191 [==============================] - 18s 92ms/step - loss: 0.6078 - accuracy: 0.8172 - val_loss: 0.5229 - val_accuracy: 0.8420\n",
"Epoch 75/100\n",
"191/191 [==============================] - 18s 92ms/step - loss: 0.6026 - accuracy: 0.8249 - val_loss: 0.5499 - val_accuracy: 0.8481\n",
"Epoch 76/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 0.6104 - accuracy: 0.8212 - val_loss: 0.5217 - val_accuracy: 0.8565\n",
"Epoch 77/100\n",
"191/191 [==============================] - 18s 93ms/step - loss: 0.5986 - accuracy: 0.8233 - val_loss: 0.4965 - val_accuracy: 0.8626\n",
"Epoch 78/100\n",
"191/191 [==============================] - 19s 99ms/step - loss: 0.5812 - accuracy: 0.8231 - val_loss: 0.5240 - val_accuracy: 0.8542\n",
"Epoch 79/100\n",
"191/191 [==============================] - 18s 97ms/step - loss: 0.5957 - accuracy: 0.8217 - val_loss: 0.5626 - val_accuracy: 0.8351\n",
"Epoch 80/100\n",
"191/191 [==============================] - 18s 97ms/step - loss: 0.5584 - accuracy: 0.8341 - val_loss: 0.5052 - val_accuracy: 0.8565\n",
"Epoch 81/100\n",
"191/191 [==============================] - 17s 91ms/step - loss: 0.5834 - accuracy: 0.8300 - val_loss: 0.6097 - val_accuracy: 0.8237\n",
"Epoch 82/100\n",
"191/191 [==============================] - 20s 102ms/step - loss: 0.5768 - accuracy: 0.8243 - val_loss: 0.5157 - val_accuracy: 0.8519\n",
"Epoch 83/100\n",
"191/191 [==============================] - 19s 101ms/step - loss: 0.5539 - accuracy: 0.8366 - val_loss: 0.5916 - val_accuracy: 0.8267\n",
"Epoch 84/100\n",
"191/191 [==============================] - 20s 103ms/step - loss: 0.5781 - accuracy: 0.8271 - val_loss: 0.5125 - val_accuracy: 0.8588\n",
"Epoch 85/100\n",
"191/191 [==============================] - 21s 109ms/step - loss: 0.5548 - accuracy: 0.8395 - val_loss: 0.5293 - val_accuracy: 0.8519\n",
"Epoch 86/100\n",
"191/191 [==============================] - 21s 110ms/step - loss: 0.5666 - accuracy: 0.8390 - val_loss: 0.4898 - val_accuracy: 0.8626\n",
"Epoch 87/100\n",
"191/191 [==============================] - 19s 102ms/step - loss: 0.5594 - accuracy: 0.8352 - val_loss: 0.4813 - val_accuracy: 0.8641\n",
"Epoch 88/100\n",
"191/191 [==============================] - 19s 100ms/step - loss: 0.5468 - accuracy: 0.8387 - val_loss: 0.5171 - val_accuracy: 0.8580\n",
"Epoch 89/100\n",
"191/191 [==============================] - 19s 100ms/step - loss: 0.5583 - accuracy: 0.8362 - val_loss: 0.5832 - val_accuracy: 0.8351\n",
"Epoch 90/100\n",
"191/191 [==============================] - 19s 101ms/step - loss: 0.5537 - accuracy: 0.8392 - val_loss: 0.4883 - val_accuracy: 0.8634\n",
"Epoch 91/100\n",
"191/191 [==============================] - 22s 115ms/step - loss: 0.5337 - accuracy: 0.8451 - val_loss: 0.5607 - val_accuracy: 0.8542\n",
"Epoch 92/100\n",
"191/191 [==============================] - 31s 160ms/step - loss: 0.5516 - accuracy: 0.8375 - val_loss: 0.5077 - val_accuracy: 0.8649\n",
"Epoch 93/100\n",
"191/191 [==============================] - 32s 165ms/step - loss: 0.5371 - accuracy: 0.8454 - val_loss: 0.5349 - val_accuracy: 0.8527\n",
"Epoch 94/100\n",
"191/191 [==============================] - 30s 157ms/step - loss: 0.5328 - accuracy: 0.8464 - val_loss: 0.4755 - val_accuracy: 0.8725\n",
"Epoch 95/100\n",
"191/191 [==============================] - 30s 155ms/step - loss: 0.5082 - accuracy: 0.8503 - val_loss: 0.4761 - val_accuracy: 0.8725\n",
"Epoch 96/100\n",
"191/191 [==============================] - 30s 158ms/step - loss: 0.5303 - accuracy: 0.8395 - val_loss: 0.4657 - val_accuracy: 0.8672\n",
"Epoch 97/100\n",
"191/191 [==============================] - 30s 157ms/step - loss: 0.5213 - accuracy: 0.8511 - val_loss: 0.4813 - val_accuracy: 0.8618\n",
"Epoch 98/100\n",
"191/191 [==============================] - 29s 153ms/step - loss: 0.5492 - accuracy: 0.8377 - val_loss: 0.4892 - val_accuracy: 0.8626\n",
"Epoch 99/100\n",
"191/191 [==============================] - 32s 165ms/step - loss: 0.5391 - accuracy: 0.8403 - val_loss: 0.5317 - val_accuracy: 0.8489\n",
"Epoch 100/100\n",
"191/191 [==============================] - 29s 153ms/step - loss: 0.5188 - accuracy: 0.8480 - val_loss: 0.4864 - val_accuracy: 0.8672\n"
]
}
],
"source": [
"history = model.fit(train_datagen.flow(X_train,Y_train, batch_size=num_batch_size), \n",
" steps_per_epoch=len(X_train) / num_batch_size,\n",
" epochs=epochs,\n",
" validation_data=val_datagen.flow(X_val,Y_val,batch_size=num_batch_size))"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "continued-theorem",
"metadata": {},
"outputs": [],
"source": [
"acc = history.history['accuracy']\n",
"val_acc = history.history['val_accuracy']\n",
"loss_ = history.history['loss']\n",
"val_loss_ = history.history['val_loss']"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "middle-animal",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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n3ySUaNG8cMPP7B7925GjhxZ6jHe3t6F37u7u5Obm1utMmWZNWsWKSkp9OrVC4DMzEyaNGlSZpd2WTw8PAoHf+Xn5xcZqOb8uefNm8fs2bNZunQpvr6+jBw5stzpRpGRkbRs2ZK5c+eyfPlyvvzyyyrV61Q0nOUwnejzYqWUOik1NZXwcNs4+eSTT1x+/i5duhAXF8fu3bsB+Oqrr0otN2XKFD744AN2797N7t272bVrF7///juZmZmcffbZvPPOOwDk5eWRmprKWWedxTfffENycjJAYTd1VFQUK1euBGD69Onk5OSUer3U1FSaNWuGr68vW7ZsYdmyZQAMHjyYBQsWsGvXriLnBbjlllu49tpri/Qs1IYGGYxX7UlBBPq0CarrqiilVJ17+OGHeeyxx+jbt2+VWrKV1aRJE95++21Gjx5N//798ff3JzCw6EyWzMxMfv31V8aOHVu4rWnTpgwfPpwZM2bw+uuv88cff9CrVy/69+/Ppk2b6NGjB3//+98ZMWIE0dHRPPDAAwDceuutzJ8/n+joaJYuXVqkNexs9OjR5Obm0q1bNx599FEGDx4MQPPmzZk8eTKXXHIJ0dHRXHnllYXHjBs3joyMjFrtogaQgpFwtS0mJsbExsbWyLknfbyc/SnH+e3+ETVyfqWUKrB582a6detW19WocxkZGfj5+WGM4a677qJTp07cf//9dV2tKouNjeX+++9n4cKFp3yu0n42RGSlMabEfLIG1zLOzzes3ptCvzbN6roqSinVaLz//vv06dOHHj16kJqayu23317XVaqyl156iUsvvZQXX3yx1q9df2ZEV1Jc0jFSj+fQV7uolVKq1tx///31siXs7NFHH+XRRx+tk2s3uJbxqr1HAbRlrJRSqt5ocMF49d4U/H086NDcr66ropRSSlVKAwzGR+kTGaSZmpRSStUbDSoYp2flsDUxXbuolVJK1SsNKhivS0jFGOjXVoOxUqpxGDVqVOGSkgVee+21wqUlSzNy5EgKppZecMEFpKSklCjzzDPP8Morr5R77WnTprFp06bC90899RSzZ8+uQu3L15hSLTaoYLxqjx281UdX3lJKNRITJ05k6tSpRbZNnTq13GQNzmbOnElQUFC1rl08GD/77LOcc8451TpXccVTLdaUmlgEpToaVjDee5SOLfwIbOJZcWGllGoALrvsMn7+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\n",
"text/plain": [
"<Figure size 576x576 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.figure(figsize=(8, 8))\n",
"plt.subplot(2, 1, 1)\n",
"plt.plot(acc, label='Training Accuracy')\n",
"plt.plot(val_acc, label='Validation Accuracy')\n",
"\n",
"plt.legend(loc='lower right')\n",
"plt.title('Training and Validation Accuracy')\n",
"\n",
"plt.subplot(2, 1, 2)\n",
"plt.plot(loss_, label='Training Loss')\n",
"plt.plot(val_loss_, label='Validation Loss')\n",
"\n",
"plt.legend(loc='upper right')\n",
"plt.title('Training and Validation Loss')\n",
"plt.xlabel('epoch')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "offshore-whale",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"41/41 [==============================] - 2s 43ms/step - loss: 0.4801 - accuracy: 0.8786\n",
"191/191 [==============================] - 13s 70ms/step - loss: 0.3784 - accuracy: 0.8935\n",
"Test accuracy : 0.8786259293556213\n",
"Train accuracy : 0.8934882283210754\n"
]
}
],
"source": [
"loss, accuracy = model.evaluate(val_datagen.flow(X_test,Y_test,batch_size=num_batch_size))\n",
"loss, accuracy1 = model.evaluate(train_datagen.flow(X_train,Y_train, batch_size=num_batch_size))\n",
"print('Test accuracy :', accuracy)\n",
"print('Train accuracy :', accuracy1)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "tender-consolidation",
"metadata": {},
"outputs": [],
"source": [
"model.save('logs/soundClass_model_augmentation.h5')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "absolute-union",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.8.2 64-bit",
"language": "python",
"name": "python38264bit553a082d8987410db038174ed8b7851d"
},
"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.8.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
%% Cell type:code id:iraqi-stand tags:
``` python
import numpy as np
import os
import pandas as pd
from scipy.io import wavfile