Skip to content

Instantly share code, notes, and snippets.

@artificialsoph
Last active May 1, 2019 14:50
Show Gist options
  • Save artificialsoph/da5ee455aed6f80e44710babe656c963 to your computer and use it in GitHub Desktop.
Save artificialsoph/da5ee455aed6f80e44710babe656c963 to your computer and use it in GitHub Desktop.
Audio Recognition in Keras
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Brief intro\n",
"\n",
"Tensorflow has a [fantastic tutorial](https://www.tensorflow.org/versions/master/tutorials/audio_recognition) that illustrates how audio recognition works in modern deep learning models. I won't reiterate the details in that post, so I recommend you read it. \n",
"\n",
"Here, I want to demo:\n",
"- How to prep audio data according to the Tensorflow examle using python (the tutorial uses tensorflow-specific code).\n",
"- How to reimplement several of the included models using Keras.\n",
"\n",
"\n",
"## Further reading\n",
"\n",
"- [mfcc intro with good features](http://haythamfayek.com/2016/04/21/speech-processing-for-machine-learning.html)\n",
"- [mfcc explanation with math](http://www.practicalcryptography.com/miscellaneous/machine-learning/guide-mel-frequency-cepstral-coefficients-mfccs/)\n",
"- [tensorlfow tutorial](https://www.tensorflow.org/versions/master/tutorials/audio_recognition) \n",
"- [Python Speech Features](http://python-speech-features.readthedocs.io/en/latest/) the library we'll use today.\n",
"- [Librosa](https://librosa.github.io/librosa/index.html) popular alternative\n",
"- [Kapre](https://github.com/keunwoochoi/kapre) library for computing audio features *within* Keras. great if you want to do this on GPU.\n",
"\n",
"\n",
"## Prep\n",
"\n",
"The data I'll use comes from this kaggle competition. Download the train files, unzip them, and set the directory below. The following blocks grabs all the training files and build a dataframe that organizes them along with their respective labels."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T19:56:27.119884Z",
"start_time": "2018-03-05T19:56:25.840989Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"%pylab inline\n",
"\n",
"import pandas\n",
"import glob\n",
"import scipy"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:02:21.177017Z",
"start_time": "2018-03-05T20:02:21.173313Z"
}
},
"outputs": [],
"source": [
"src_path = \"/home/soph/kaggle/tensorflow-src\" #set the path to your data files"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:03:23.114711Z",
"start_time": "2018-03-05T20:03:22.874218Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"found 64727 files\n"
]
}
],
"source": [
"filenames = glob.glob(src_path + \"/train/**/*.wav\", recursive=True)\n",
"print(f\"found {len(filenames)} files\")"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:03:26.352185Z",
"start_time": "2018-03-05T20:03:26.337642Z"
}
},
"outputs": [],
"source": [
"ex_df = pandas.DataFrame({\"filename\":filenames})"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:03:32.741795Z",
"start_time": "2018-03-05T20:03:32.637013Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>14591</th>\n",
" <th>1274</th>\n",
" <th>24990</th>\n",
" <th>38870</th>\n",
" <th>49206</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>filename</th>\n",
" <td>/home/soph/kaggle/tensorflow-src/train/audio/t...</td>\n",
" <td>/home/soph/kaggle/tensorflow-src/train/audio/s...</td>\n",
" <td>/home/soph/kaggle/tensorflow-src/train/audio/f...</td>\n",
" <td>/home/soph/kaggle/tensorflow-src/train/audio/s...</td>\n",
" <td>/home/soph/kaggle/tensorflow-src/train/audio/l...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>label</th>\n",
" <td>two</td>\n",
" <td>seven</td>\n",
" <td>five</td>\n",
" <td>stop</td>\n",
" <td>left</td>\n",
" </tr>\n",
" <tr>\n",
" <th>label_i</th>\n",
" <td>7</td>\n",
" <td>0</td>\n",
" <td>12</td>\n",
" <td>18</td>\n",
" <td>23</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 14591 \\\n",
"filename /home/soph/kaggle/tensorflow-src/train/audio/t... \n",
"label two \n",
"label_i 7 \n",
"\n",
" 1274 \\\n",
"filename /home/soph/kaggle/tensorflow-src/train/audio/s... \n",
"label seven \n",
"label_i 0 \n",
"\n",
" 24990 \\\n",
"filename /home/soph/kaggle/tensorflow-src/train/audio/f... \n",
"label five \n",
"label_i 12 \n",
"\n",
" 38870 \\\n",
"filename /home/soph/kaggle/tensorflow-src/train/audio/s... \n",
"label stop \n",
"label_i 18 \n",
"\n",
" 49206 \n",
"filename /home/soph/kaggle/tensorflow-src/train/audio/l... \n",
"label left \n",
"label_i 23 "
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#build labels\n",
"def get_label(fn):\n",
" return fn.split(\"/\")[-2]\n",
"ex_df[\"label\"] = ex_df.filename.map(get_label)\n",
"\n",
"# build indices\n",
"unique_labels = ex_df.label.unique()\n",
"label_dict = dict(zip(unique_labels, range(len(unique_labels))))\n",
"ex_df[\"label_i\"] = ex_df.label.map(label_dict)\n",
"\n",
"# remove background noise category\n",
"ex_df.label.where(ex_df.label != \"_background_noise_\", inplace=True)\n",
"\n",
"ex_df.sample(5).T"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:03:42.609146Z",
"start_time": "2018-03-05T20:03:42.603995Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"array(['_background_noise_', 'bed', 'bird', 'cat', 'dog', 'down', 'eight',\n",
" 'five', 'four', 'go', 'happy', 'house', 'left', 'marvin', 'nine',\n",
" 'no', 'off', 'on', 'one', 'right', 'seven', 'sheila', 'six',\n",
" 'stop', 'three', 'tree', 'two', 'up', 'wow', 'yes', 'zero'],\n",
" dtype=object)"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"sort(unique_labels)"
]
},
{
"cell_type": "markdown",
"metadata": {
"ExecuteTime": {
"end_time": "2017-11-18T16:08:50.498638Z",
"start_time": "2017-11-18T16:08:50.483423Z"
}
},
"source": [
"# Initial analysis on limited samples\n",
"\n",
"**Important** You will likely want to reduce `num_ex` if you are on a laptop."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:06:07.370345Z",
"start_time": "2018-03-05T20:06:07.328397Z"
}
},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style>\n",
" .dataframe thead tr:only-child th {\n",
" text-align: right;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: left;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>25610</th>\n",
" <th>50262</th>\n",
" <th>41729</th>\n",
" <th>62226</th>\n",
" <th>38065</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>filename</th>\n",
" <td>/home/soph/kaggle/tensorflow-src/train/audio/f...</td>\n",
" <td>/home/soph/kaggle/tensorflow-src/train/audio/o...</td>\n",
" <td>/home/soph/kaggle/tensorflow-src/train/audio/t...</td>\n",
" <td>/home/soph/kaggle/tensorflow-src/train/audio/t...</td>\n",
" <td>/home/soph/kaggle/tensorflow-src/train/audio/s...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>label</th>\n",
" <td>five</td>\n",
" <td>one</td>\n",
" <td>three</td>\n",
" <td>tree</td>\n",
" <td>stop</td>\n",
" </tr>\n",
" <tr>\n",
" <th>label_i</th>\n",
" <td>6</td>\n",
" <td>17</td>\n",
" <td>23</td>\n",
" <td>24</td>\n",
" <td>22</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 25610 \\\n",
"filename /home/soph/kaggle/tensorflow-src/train/audio/f... \n",
"label five \n",
"label_i 6 \n",
"\n",
" 50262 \\\n",
"filename /home/soph/kaggle/tensorflow-src/train/audio/o... \n",
"label one \n",
"label_i 17 \n",
"\n",
" 41729 \\\n",
"filename /home/soph/kaggle/tensorflow-src/train/audio/t... \n",
"label three \n",
"label_i 23 \n",
"\n",
" 62226 \\\n",
"filename /home/soph/kaggle/tensorflow-src/train/audio/t... \n",
"label tree \n",
"label_i 24 \n",
"\n",
" 38065 \n",
"filename /home/soph/kaggle/tensorflow-src/train/audio/s... \n",
"label stop \n",
"label_i 22 "
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# grab a fixed number of examples\n",
"num_ex = 30000\n",
"include_labels = ['bed', 'bird', 'cat', 'dog', 'down', 'eight',\n",
" 'five', 'four', 'go', 'happy', 'house', 'left', 'marvin', 'nine',\n",
" 'no', 'off', 'on', 'one', 'right', 'seven', 'sheila', 'six',\n",
" 'stop', 'three', 'tree', 'two', 'up', 'wow', 'yes', 'zero']\n",
"small_bool = ex_df.label.isin(include_labels)\n",
"num_ex = min(num_ex, sum(small_bool))\n",
"small_data = ex_df[ex_df.label.isin(include_labels)].sample(num_ex)\n",
"\n",
"label_dict = dict(zip(include_labels, range(len(include_labels))))\n",
"small_data[\"label_i\"] = small_data.label.map(label_dict)\n",
"y = small_data.label_i.as_matrix()\n",
"small_data.head().T"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:06:11.569410Z",
"start_time": "2018-03-05T20:06:11.564106Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"30000"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"len(small_data)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## MFCC\n",
"\n",
"We'll use Mel-Frequency Cepstrum Coefficients to transform audio files into a format a neural network can understand. "
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:06:58.593306Z",
"start_time": "2018-03-05T20:06:58.437349Z"
}
},
"outputs": [],
"source": [
"import scipy.io.wavfile\n",
"from python_speech_features import mfcc"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:07:04.384381Z",
"start_time": "2018-03-05T20:07:04.333192Z"
}
},
"outputs": [],
"source": [
"figsize(8,4)\n",
"rate, wave = scipy.io.wavfile.read(ex_df.filename[0])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, plot the amplitude of the wav file just to get an idea of what it looks like"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:07:05.611964Z",
"start_time": "2018-03-05T20:07:05.458078Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fa97e6c55c0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.plot(wave)\n",
"plt.xlabel(\"Sample num → (16kHz)\")\n",
"plt.ylabel(\"Amplitude\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, let's plot the MFCC features that we'll be using"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:13:21.658987Z",
"start_time": "2018-03-05T20:13:21.448792Z"
}
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fa96e998668>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mfcc_feat = mfcc(wave, rate, numcep=40, winlen=100/16000, winstep=100/16000, nfilt=40)\n",
"plt.imshow(mfcc_feat.T, cmap=\"binary\", aspect='auto')\n",
"plt.xlabel(\"Time → (each step is 100 samples)\")\n",
"plt.ylabel(\"Cepstrum #\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next, let's pre-calculate the MFCCs for each audio file so we don't have to repeat this. It might take a minute or so on a fast computer. Longer on a laptop."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:16:34.098961Z",
"start_time": "2018-03-05T20:15:02.856911Z"
}
},
"outputs": [],
"source": [
"maxlen = 16000\n",
"num_windows = 160\n",
"num_cep = 40\n",
"\n",
"mfcc_dict = dict(\n",
" numcep=num_cep,\n",
" winlen=1 / num_windows,\n",
" winstep=1 / num_windows,\n",
" nfilt=num_cep)\n",
"num_ex = len(small_data)\n",
"x_mfcc = numpy.zeros((num_ex, num_windows, num_cep, 1))\n",
"for i, fn in enumerate(small_data.filename):\n",
" rate, wave = scipy.io.wavfile.read(fn)\n",
" wave = wave[:maxlen]\n",
" wave = np.pad(wave, (0, maxlen - wave.shape[0]), 'minimum')\n",
" mfcc_feat = mfcc(wave, rate, **mfcc_dict)\n",
" x_mfcc[i, :, :, 0] = mfcc_feat"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {
"ExecuteTime": {
"end_time": "2017-11-20T21:18:14.939494Z",
"start_time": "2017-11-20T21:18:14.215119Z"
}
},
"outputs": [],
"source": [
"# x_shift = x_mfcc - (numpy.mean(x_mfcc, axis=1, keepdims=True) + 1e-8)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:17:30.014828Z",
"start_time": "2018-03-05T20:17:29.878672Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Shape: (30000, 160, 40, 1), (num_ex, num_windows, num_cep, num_chanel)\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fa912fc4b00>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"figsize(8,4)\n",
"plt.imshow(x_mfcc[0,:,:,0].T, aspect=\"equal\", cmap=\"binary\")\n",
"print(\"Shape: {}, (num_ex, num_windows, num_cep, num_chanel)\".format(x_mfcc.shape))\n",
"plt.xlabel(\"Time → (each step is 100 samples)\")\n",
"plt.ylabel(\"Cepstrum #\");"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:17:50.887407Z",
"start_time": "2018-03-05T20:17:48.364953Z"
}
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/soph/miniconda3/lib/python3.6/site-packages/h5py/__init__.py:34: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n",
" from ._conv import register_converters as _register_converters\n",
"Using TensorFlow backend.\n"
]
}
],
"source": [
"from keras.utils.np_utils import to_categorical\n",
"y_sparse = small_data.label_i.as_matrix()\n",
"num_labels = max(y_sparse)+1"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:18:09.207639Z",
"start_time": "2018-03-05T20:18:09.204023Z"
}
},
"outputs": [],
"source": [
"import keras\n",
"import keras.backend as K"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:18:09.959384Z",
"start_time": "2018-03-05T20:18:09.938647Z"
}
},
"outputs": [],
"source": [
"def plot_history(history):\n",
"\n",
" measures = np.unique([m.replace('val_', '') for m in history.history.keys()])\n",
" num_meas = len(measures)\n",
" x = arange(len(history.history[measures[0]]))\n",
" fix, axes = subplots(nrows=num_meas,ncols=1,squeeze=True, sharex=True,figsize=(6,2*num_meas), tight_layout=True)\n",
" if num_meas == 1:\n",
" axes = [axes]\n",
" for i,meas in enumerate(measures):\n",
" axes[i].plot(x, history.history[meas], label=meas)\n",
" if \"val_\"+meas in history.history.keys():\n",
" axes[i].plot(x, history.history[\"val_\"+meas], label=\"val_\"+meas)\n",
" axes[i].legend()\n",
" if meas in [\"acc\", \"top_3\"]:\n",
" axes[i].set_ylim((-0.01,1.01))\n",
" axes[-1].set_xlabel(\"epoch\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Model 1: Feedforward\n",
"\n",
"This is a very simple model with one hidden layer. I recommend running a model like this on your data as an initial step for almost any task."
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:27:44.319621Z",
"start_time": "2018-03-05T20:27:44.297002Z"
}
},
"outputs": [],
"source": [
"# default values from tensorflow tutorial\n",
"\n",
"dropout_prob = .2\n",
"\n",
"init_stddev = 0.01\n",
"\n",
"x = x_mfcc\n",
"y = y_sparse\n",
"\n",
"\n",
"def top_3(y_true, y_pred):\n",
" return keras.metrics.sparse_top_k_categorical_accuracy(y_true, y_pred, k=3)\n",
"\n",
"\n",
"def my_fit(model_layers):\n",
"\n",
" model = keras.Sequential(model_layers)\n",
"\n",
" model.summary()\n",
"\n",
" model.compile(\n",
" loss='sparse_categorical_crossentropy',\n",
" optimizer='nadam',\n",
" metrics=['accuracy', top_3])\n",
"\n",
" history = model.fit(\n",
" x,\n",
" y,\n",
" epochs=100,\n",
" verbose=1,\n",
" validation_split=.25,\n",
" callbacks=[\n",
" keras.callbacks.EarlyStopping(verbose=1, patience=5),\n",
" keras.callbacks.ReduceLROnPlateau(\n",
" factor=.5, patience=1, cooldown=1, verbose=1)\n",
" ])\n",
"\n",
" plot_history(history)\n",
"\n",
" return model, history"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:27:46.257558Z",
"start_time": "2018-03-05T20:27:46.248184Z"
}
},
"outputs": [],
"source": [
"model_layers1 = [\n",
" keras.layers.InputLayer(input_shape=x[0].shape),\n",
" keras.layers.Flatten(),\n",
" keras.layers.BatchNormalization(),\n",
" keras.layers.Dropout(.5),\n",
" keras.layers.Dense(128, activation=\"elu\"),\n",
" keras.layers.BatchNormalization(),\n",
" keras.layers.Dropout(.5),\n",
" # Classification\n",
" keras.layers.Dense(\n",
" num_labels,\n",
" activation=\"softmax\"),\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:30:55.795631Z",
"start_time": "2018-03-05T20:27:47.207694Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input_7 (InputLayer) (None, 160, 40, 1) 0 \n",
"_________________________________________________________________\n",
"flatten_7 (Flatten) (None, 6400) 0 \n",
"_________________________________________________________________\n",
"batch_normalization_8 (Batch (None, 6400) 25600 \n",
"_________________________________________________________________\n",
"dropout_9 (Dropout) (None, 6400) 0 \n",
"_________________________________________________________________\n",
"dense_9 (Dense) (None, 128) 819328 \n",
"_________________________________________________________________\n",
"batch_normalization_9 (Batch (None, 128) 512 \n",
"_________________________________________________________________\n",
"dropout_10 (Dropout) (None, 128) 0 \n",
"_________________________________________________________________\n",
"dense_10 (Dense) (None, 30) 3870 \n",
"=================================================================\n",
"Total params: 849,310\n",
"Trainable params: 836,254\n",
"Non-trainable params: 13,056\n",
"_________________________________________________________________\n",
"Train on 22500 samples, validate on 7500 samples\n",
"Epoch 1/100\n",
"22500/22500 [==============================] - 6s 286us/step - loss: 2.7086 - acc: 0.2562 - top_3: 0.4809 - val_loss: 1.9437 - val_acc: 0.4495 - val_top_3: 0.6892\n",
"Epoch 2/100\n",
"22500/22500 [==============================] - 6s 260us/step - loss: 2.0300 - acc: 0.4052 - top_3: 0.6604 - val_loss: 1.7610 - val_acc: 0.4940 - val_top_3: 0.7324\n",
"Epoch 3/100\n",
"22500/22500 [==============================] - 6s 259us/step - loss: 1.8258 - acc: 0.4573 - top_3: 0.7116 - val_loss: 1.6269 - val_acc: 0.5327 - val_top_3: 0.7593\n",
"Epoch 4/100\n",
"22500/22500 [==============================] - 6s 259us/step - loss: 1.7082 - acc: 0.4869 - top_3: 0.7414 - val_loss: 1.5519 - val_acc: 0.5560 - val_top_3: 0.7776\n",
"Epoch 5/100\n",
"22500/22500 [==============================] - 6s 261us/step - loss: 1.6037 - acc: 0.5163 - top_3: 0.7652 - val_loss: 1.5119 - val_acc: 0.5680 - val_top_3: 0.7903\n",
"Epoch 6/100\n",
"22500/22500 [==============================] - 6s 261us/step - loss: 1.5339 - acc: 0.5347 - top_3: 0.7821 - val_loss: 1.4679 - val_acc: 0.5745 - val_top_3: 0.7963\n",
"Epoch 7/100\n",
"22500/22500 [==============================] - 6s 258us/step - loss: 1.4880 - acc: 0.5480 - top_3: 0.7891 - val_loss: 1.4532 - val_acc: 0.5781 - val_top_3: 0.7976\n",
"Epoch 8/100\n",
"22500/22500 [==============================] - 6s 259us/step - loss: 1.4309 - acc: 0.5635 - top_3: 0.8041 - val_loss: 1.4284 - val_acc: 0.5855 - val_top_3: 0.8017\n",
"Epoch 9/100\n",
"22500/22500 [==============================] - 6s 259us/step - loss: 1.3802 - acc: 0.5798 - top_3: 0.8172 - val_loss: 1.4037 - val_acc: 0.5868 - val_top_3: 0.8061\n",
"Epoch 10/100\n",
"22500/22500 [==============================] - 6s 259us/step - loss: 1.3521 - acc: 0.5851 - top_3: 0.8199 - val_loss: 1.3990 - val_acc: 0.5960 - val_top_3: 0.8064\n",
"Epoch 11/100\n",
"22500/22500 [==============================] - 6s 261us/step - loss: 1.3054 - acc: 0.6000 - top_3: 0.8296 - val_loss: 1.3865 - val_acc: 0.5971 - val_top_3: 0.8084\n",
"Epoch 12/100\n",
"22500/22500 [==============================] - 6s 256us/step - loss: 1.2818 - acc: 0.6052 - top_3: 0.8359 - val_loss: 1.3761 - val_acc: 0.6004 - val_top_3: 0.8105\n",
"Epoch 13/100\n",
"22500/22500 [==============================] - 6s 259us/step - loss: 1.2588 - acc: 0.6095 - top_3: 0.8419 - val_loss: 1.3716 - val_acc: 0.6005 - val_top_3: 0.8097\n",
"Epoch 14/100\n",
"22500/22500 [==============================] - 6s 256us/step - loss: 1.2324 - acc: 0.6143 - top_3: 0.8458 - val_loss: 1.3675 - val_acc: 0.5997 - val_top_3: 0.8121\n",
"Epoch 15/100\n",
"22500/22500 [==============================] - 6s 260us/step - loss: 1.2066 - acc: 0.6262 - top_3: 0.8502 - val_loss: 1.3654 - val_acc: 0.5983 - val_top_3: 0.8107\n",
"Epoch 16/100\n",
"22500/22500 [==============================] - 6s 259us/step - loss: 1.1980 - acc: 0.6294 - top_3: 0.8534 - val_loss: 1.3421 - val_acc: 0.6101 - val_top_3: 0.8141\n",
"Epoch 17/100\n",
"22500/22500 [==============================] - 6s 259us/step - loss: 1.1620 - acc: 0.6354 - top_3: 0.8576 - val_loss: 1.3569 - val_acc: 0.6072 - val_top_3: 0.8141\n",
"Epoch 18/100\n",
"22464/22500 [============================>.] - ETA: 0s - loss: 1.1571 - acc: 0.6415 - top_3: 0.8627\n",
"Epoch 00018: ReduceLROnPlateau reducing learning rate to 0.0010000000474974513.\n",
"22500/22500 [==============================] - 6s 266us/step - loss: 1.1566 - acc: 0.6416 - top_3: 0.8628 - val_loss: 1.3435 - val_acc: 0.6095 - val_top_3: 0.8192\n",
"Epoch 19/100\n",
"22500/22500 [==============================] - 6s 256us/step - loss: 1.0797 - acc: 0.6588 - top_3: 0.8779 - val_loss: 1.3310 - val_acc: 0.6088 - val_top_3: 0.8181\n",
"Epoch 20/100\n",
"22500/22500 [==============================] - 6s 262us/step - loss: 1.0493 - acc: 0.6690 - top_3: 0.8817 - val_loss: 1.3163 - val_acc: 0.6157 - val_top_3: 0.8219\n",
"Epoch 21/100\n",
"22500/22500 [==============================] - 6s 258us/step - loss: 1.0302 - acc: 0.6776 - top_3: 0.8872 - val_loss: 1.3103 - val_acc: 0.6145 - val_top_3: 0.8245\n",
"Epoch 22/100\n",
"22500/22500 [==============================] - 6s 260us/step - loss: 1.0242 - acc: 0.6767 - top_3: 0.8881 - val_loss: 1.3138 - val_acc: 0.6119 - val_top_3: 0.8231\n",
"Epoch 23/100\n",
"22336/22500 [============================>.] - ETA: 0s - loss: 0.9895 - acc: 0.6868 - top_3: 0.8926\n",
"Epoch 00023: ReduceLROnPlateau reducing learning rate to 0.0005000000237487257.\n",
"22500/22500 [==============================] - 6s 259us/step - loss: 0.9901 - acc: 0.6867 - top_3: 0.8925 - val_loss: 1.3121 - val_acc: 0.6148 - val_top_3: 0.8231\n",
"Epoch 24/100\n",
"22500/22500 [==============================] - 6s 260us/step - loss: 0.9677 - acc: 0.6902 - top_3: 0.8973 - val_loss: 1.3065 - val_acc: 0.6208 - val_top_3: 0.8251\n",
"Epoch 25/100\n",
"22500/22500 [==============================] - 6s 260us/step - loss: 0.9478 - acc: 0.6977 - top_3: 0.9011 - val_loss: 1.3055 - val_acc: 0.6184 - val_top_3: 0.8264\n",
"Epoch 26/100\n",
"22500/22500 [==============================] - 6s 260us/step - loss: 0.9322 - acc: 0.7050 - top_3: 0.9025 - val_loss: 1.3082 - val_acc: 0.6188 - val_top_3: 0.8247\n",
"Epoch 27/100\n",
"22500/22500 [==============================] - 6s 258us/step - loss: 0.9216 - acc: 0.7065 - top_3: 0.9048 - val_loss: 1.3018 - val_acc: 0.6204 - val_top_3: 0.8252\n",
"Epoch 28/100\n",
"22500/22500 [==============================] - 6s 262us/step - loss: 0.9067 - acc: 0.7121 - top_3: 0.9066 - val_loss: 1.3080 - val_acc: 0.6168 - val_top_3: 0.8236\n",
"Epoch 29/100\n",
"22336/22500 [============================>.] - ETA: 0s - loss: 0.9238 - acc: 0.7072 - top_3: 0.9045\n",
"Epoch 00029: ReduceLROnPlateau reducing learning rate to 0.0002500000118743628.\n",
"22500/22500 [==============================] - 6s 258us/step - loss: 0.9241 - acc: 0.7071 - top_3: 0.9045 - val_loss: 1.3050 - val_acc: 0.6175 - val_top_3: 0.8252\n",
"Epoch 30/100\n",
"22500/22500 [==============================] - 6s 262us/step - loss: 0.8991 - acc: 0.7168 - top_3: 0.9080 - val_loss: 1.3086 - val_acc: 0.6181 - val_top_3: 0.8232\n",
"Epoch 31/100\n",
"22496/22500 [============================>.] - ETA: 0s - loss: 0.8972 - acc: 0.7159 - top_3: 0.9071\n",
"Epoch 00031: ReduceLROnPlateau reducing learning rate to 0.0001250000059371814.\n",
"22500/22500 [==============================] - 6s 261us/step - loss: 0.8976 - acc: 0.7159 - top_3: 0.9071 - val_loss: 1.3078 - val_acc: 0.6192 - val_top_3: 0.8240\n",
"Epoch 32/100\n",
"22500/22500 [==============================] - 6s 262us/step - loss: 0.8873 - acc: 0.7188 - top_3: 0.9096 - val_loss: 1.3053 - val_acc: 0.6193 - val_top_3: 0.8235\n",
"Epoch 00032: early stopping\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/soph/miniconda3/lib/python3.6/site-packages/matplotlib/figure.py:2022: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n",
" warnings.warn(\"This figure includes Axes that are not compatible \"\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fa86534e828>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model1, history1 = my_fit(model_layers1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Simple feedforward: ~60% val accuracy"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Convolutional networks\n",
"\n",
"Convolutional networks are the go-to tool for image processing. Here, we'll treat our MFCC features as images. \n",
"\n",
"This network includes 3 convolution layers of the same size. Max pooling serves to step down the dimension size after the first two. Finally, global pooling is used to pool the final convolutional layers across the entire remaining image, giving a summary value for each feature. "
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:36:47.041174Z",
"start_time": "2018-03-05T20:36:47.017720Z"
}
},
"outputs": [],
"source": [
"DROP = .25\n",
"\n",
"model_layers3 = [\n",
" keras.layers.InputLayer(input_shape=x[0].shape),\n",
" keras.layers.BatchNormalization(),\n",
"\n",
" # conv layer 1\n",
" keras.layers.Conv2D(64, 3, padding=\"same\", activation=\"relu\"),\n",
" keras.layers.MaxPool2D(3, 2, padding=\"same\"),\n",
" keras.layers.BatchNormalization(),\n",
" keras.layers.Dropout(DROP),\n",
"\n",
" # Conv layer 2\n",
" keras.layers.Conv2D(128, 3, padding=\"same\", activation=\"relu\"),\n",
" keras.layers.MaxPool2D(3, 2, padding=\"same\"),\n",
" keras.layers.BatchNormalization(),\n",
" keras.layers.Dropout(DROP),\n",
" \n",
" # Conv layer 3\n",
" keras.layers.Conv2D(256, 3, padding=\"same\", activation=\"relu\"),\n",
" keras.layers.GlobalAveragePooling2D(),\n",
" keras.layers.BatchNormalization(),\n",
" keras.layers.Dropout(DROP),\n",
"\n",
" # Hidden Layer\n",
" keras.layers.Dense(128, activation=\"relu\"),\n",
" keras.layers.BatchNormalization(),\n",
" keras.layers.Dropout(DROP),\n",
"\n",
" # Classification\n",
" keras.layers.Dense(num_labels, activation=\"softmax\"),\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {
"ExecuteTime": {
"end_time": "2018-03-05T20:51:35.307893Z",
"start_time": "2018-03-05T20:36:47.981633Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"_________________________________________________________________\n",
"Layer (type) Output Shape Param # \n",
"=================================================================\n",
"input_11 (InputLayer) (None, 160, 40, 1) 0 \n",
"_________________________________________________________________\n",
"batch_normalization_22 (Batc (None, 160, 40, 1) 4 \n",
"_________________________________________________________________\n",
"conv2d_8 (Conv2D) (None, 160, 40, 64) 640 \n",
"_________________________________________________________________\n",
"max_pooling2d_6 (MaxPooling2 (None, 80, 20, 64) 0 \n",
"_________________________________________________________________\n",
"batch_normalization_23 (Batc (None, 80, 20, 64) 256 \n",
"_________________________________________________________________\n",
"dropout_19 (Dropout) (None, 80, 20, 64) 0 \n",
"_________________________________________________________________\n",
"conv2d_9 (Conv2D) (None, 80, 20, 128) 73856 \n",
"_________________________________________________________________\n",
"max_pooling2d_7 (MaxPooling2 (None, 40, 10, 128) 0 \n",
"_________________________________________________________________\n",
"batch_normalization_24 (Batc (None, 40, 10, 128) 512 \n",
"_________________________________________________________________\n",
"dropout_20 (Dropout) (None, 40, 10, 128) 0 \n",
"_________________________________________________________________\n",
"conv2d_10 (Conv2D) (None, 40, 10, 256) 295168 \n",
"_________________________________________________________________\n",
"global_average_pooling2d_3 ( (None, 256) 0 \n",
"_________________________________________________________________\n",
"batch_normalization_25 (Batc (None, 256) 1024 \n",
"_________________________________________________________________\n",
"dropout_21 (Dropout) (None, 256) 0 \n",
"_________________________________________________________________\n",
"dense_15 (Dense) (None, 128) 32896 \n",
"_________________________________________________________________\n",
"batch_normalization_26 (Batc (None, 128) 512 \n",
"_________________________________________________________________\n",
"dropout_22 (Dropout) (None, 128) 0 \n",
"_________________________________________________________________\n",
"dense_16 (Dense) (None, 30) 3870 \n",
"=================================================================\n",
"Total params: 408,738\n",
"Trainable params: 407,584\n",
"Non-trainable params: 1,154\n",
"_________________________________________________________________\n",
"Train on 22500 samples, validate on 7500 samples\n",
"Epoch 1/100\n",
"22500/22500 [==============================] - 43s 2ms/step - loss: 2.4186 - acc: 0.3131 - top_3: 0.5460 - val_loss: 4.3830 - val_acc: 0.2092 - val_top_3: 0.3935\n",
"Epoch 2/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 1.1826 - acc: 0.6499 - top_3: 0.8535 - val_loss: 1.3374 - val_acc: 0.6595 - val_top_3: 0.8416\n",
"Epoch 3/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.8081 - acc: 0.7630 - top_3: 0.9136 - val_loss: 0.7689 - val_acc: 0.7760 - val_top_3: 0.9201\n",
"Epoch 4/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.6664 - acc: 0.8027 - top_3: 0.9336 - val_loss: 0.7322 - val_acc: 0.7996 - val_top_3: 0.9263\n",
"Epoch 5/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.5925 - acc: 0.8234 - top_3: 0.9440 - val_loss: 0.6394 - val_acc: 0.8213 - val_top_3: 0.9333\n",
"Epoch 6/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.5462 - acc: 0.8379 - top_3: 0.9482 - val_loss: 1.0433 - val_acc: 0.7455 - val_top_3: 0.8921\n",
"Epoch 7/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.5056 - acc: 0.8505 - top_3: 0.9508 - val_loss: 0.5928 - val_acc: 0.8261 - val_top_3: 0.9368\n",
"Epoch 8/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.4688 - acc: 0.8590 - top_3: 0.9571 - val_loss: 0.4811 - val_acc: 0.8651 - val_top_3: 0.9509\n",
"Epoch 9/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.4480 - acc: 0.8682 - top_3: 0.9580 - val_loss: 0.8812 - val_acc: 0.7653 - val_top_3: 0.9111\n",
"Epoch 10/100\n",
"22496/22500 [============================>.] - ETA: 0s - loss: 0.4324 - acc: 0.8731 - top_3: 0.9593\n",
"Epoch 00010: ReduceLROnPlateau reducing learning rate to 0.0010000000474974513.\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.4325 - acc: 0.8731 - top_3: 0.9593 - val_loss: 0.4995 - val_acc: 0.8544 - val_top_3: 0.9513\n",
"Epoch 11/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.3631 - acc: 0.8924 - top_3: 0.9675 - val_loss: 0.3059 - val_acc: 0.9143 - val_top_3: 0.9696\n",
"Epoch 12/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.3275 - acc: 0.9005 - top_3: 0.9704 - val_loss: 0.3163 - val_acc: 0.9116 - val_top_3: 0.9679\n",
"Epoch 13/100\n",
"22496/22500 [============================>.] - ETA: 0s - loss: 0.3201 - acc: 0.9038 - top_3: 0.9706\n",
"Epoch 00013: ReduceLROnPlateau reducing learning rate to 0.0005000000237487257.\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.3203 - acc: 0.9038 - top_3: 0.9706 - val_loss: 0.3600 - val_acc: 0.8968 - val_top_3: 0.9661\n",
"Epoch 14/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.2807 - acc: 0.9180 - top_3: 0.9752 - val_loss: 0.3217 - val_acc: 0.9085 - val_top_3: 0.9671\n",
"Epoch 15/100\n",
"22496/22500 [============================>.] - ETA: 0s - loss: 0.2668 - acc: 0.9195 - top_3: 0.9772\n",
"Epoch 00015: ReduceLROnPlateau reducing learning rate to 0.0002500000118743628.\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.2671 - acc: 0.9194 - top_3: 0.9771 - val_loss: 0.3234 - val_acc: 0.9081 - val_top_3: 0.9679\n",
"Epoch 16/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.2509 - acc: 0.9233 - top_3: 0.9784 - val_loss: 0.2813 - val_acc: 0.9228 - val_top_3: 0.9713\n",
"Epoch 17/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.2408 - acc: 0.9266 - top_3: 0.9798 - val_loss: 0.2854 - val_acc: 0.9213 - val_top_3: 0.9709\n",
"Epoch 18/100\n",
"22496/22500 [============================>.] - ETA: 0s - loss: 0.2286 - acc: 0.9295 - top_3: 0.9808\n",
"Epoch 00018: ReduceLROnPlateau reducing learning rate to 0.0001250000059371814.\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.2290 - acc: 0.9294 - top_3: 0.9808 - val_loss: 0.3008 - val_acc: 0.9173 - val_top_3: 0.9695\n",
"Epoch 19/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.2226 - acc: 0.9329 - top_3: 0.9818 - val_loss: 0.2832 - val_acc: 0.9225 - val_top_3: 0.9712\n",
"Epoch 20/100\n",
"22496/22500 [============================>.] - ETA: 0s - loss: 0.2189 - acc: 0.9351 - top_3: 0.9822\n",
"Epoch 00020: ReduceLROnPlateau reducing learning rate to 6.25000029685907e-05.\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.2189 - acc: 0.9351 - top_3: 0.9822 - val_loss: 0.2852 - val_acc: 0.9217 - val_top_3: 0.9712\n",
"Epoch 21/100\n",
"22500/22500 [==============================] - 42s 2ms/step - loss: 0.2131 - acc: 0.9358 - top_3: 0.9822 - val_loss: 0.2819 - val_acc: 0.9229 - val_top_3: 0.9713\n",
"Epoch 00021: early stopping\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"/home/soph/miniconda3/lib/python3.6/site-packages/matplotlib/figure.py:2022: UserWarning: This figure includes Axes that are not compatible with tight_layout, so results might be incorrect.\n",
" warnings.warn(\"This figure includes Axes that are not compatible \"\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAI4CAYAAAA/PH0eAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xl8VPW9//HXZ5bMZCcrSwIkyI5hDYi4obigVtG2FKu2ruW2tbV7S1tbW6uttt7etr969dJbbrVakeKGe1FQtG4EREF2WSRhy0b2yWzf3x9nCJMQINtkZpLP8/E4j7Of+SS1efP9nu+cI8YYlFJKqVhji3YBSimlVHs0oJRSSsUkDSillFIxSQNKKaVUTNKAUkopFZM0oJRSSsUkDSillFIxKSIBJSJLROSwiGw6wX4RkT+JyE4R+UhEpobtu0FEdoSmGyJRn1JKqdgXqRbU34C5J9l/KTAqNC0EHgQQkUzgTuAMYAZwp4hkRKhGpZRSMcwRiYsaY9aISMFJDpkHPGKsx1i8KyIDRGQwMBtYaYypAhCRlVhB9/jJPi87O9sUFJzs45RSSsWKdevWVRhjck51XEQCqgPygH1h66WhbSfafhwRWYjV+mLYsGGUlJREplKllFI9SkT2duS4uB0kYYxZbIwpNsYU5+ScMoiVUkrFmWgFVBkwNGw9P7TtRNuVUkr1M9EKqBXAl0Oj+WYCNcaYA8ArwMUikhEaHHFxaJtSSql+JiL3oETkcawBD9kiUoo1Ms8JYIx5CHgRuAzYCTQCN4X2VYnIr4C1oUvddXTAhFJKqf4lUqP4vniK/Qa47QT7lgBLIlGXUkqp+BGtUXxKKaXaMMbgCxh8gSC+QBBvIGit+4OhbYZA0OAPBkNzQzA0D7TMgwSCtDom0GYyoc8CCBqDMWDClo/WEjSE9oWOMda5XygeytDMpIj/PjSglFJ9jjEGbyCI12/9Ufd6GvD7A/iC4A3a8AU5NgWO/fE/6bI/iC9o8AeC+IPWNn/ACoujwdF2W8u85Zyw6/qDeFt9jnXsSX4q7AQxiBUwCCCR+O0hGGwtUzA0hdYlyKzCNA0opfq1piNggmCzg80JdifYHCCR+KPUM+qb/Ryu9VBe18zh0FTT6LX+pW+sf6EHg4ZA6F/qgaCxthkIhpaP32f9YfeGWhFev9Wy8PoCOAP1pPkqSA9UMSBQRWagkixTTTZV5MoRcjjCQKkmU5rbrTdohAA2gkjoz/DR9WPLBhuB0NRsnPhw4BcnPpz4xIFfEvCJE784CYgTvyQQsDkJSAIBWwJBm5OgLYGg3UmCBHA7fLgdXlwuLy68uEwzCXhxmmYSgtbcaZpxBENToBl7sBl7wBOKptYMAmIDBCO2Y/99tCzLsWWxgTGICQLBUPMoCMGANTfBdj/jOI7ngcFd/c+kwzSglIolAR9sfQFKlsDuN9o/RuxWUB0NrJZlpxVm4dsTUiB1UNg0GFIGWvPUQeBKPWXgBYOGygZvKHQ8HK5rpjw0Ha47FkYVdU3YvXVkSR0Z1JEpdWRKLWnSiA0BEUTAgeAQGwjYWv6AChKa4Ogy1rrYSKOBHI6QZarJMpVkBKsZEKjEZdoEjw28tkQaErJpdOXgcQ1jjzsXrzsLu82OwxbEDtglgF3AQRCbWC0Te2huI4hdwHl0+WjrwfiRgBcJeMHfDAGvNfmbIdAYmjeD33ts7m2GoP/4X6rdBU43OBLbmae3s90NzkSwJ1jnm2PhIpg2y6F9LduPLlsBZIWVrXVotUz2E++3he3LLOzcf9ddpAGlVCyo3gvrH4YPHoX6Q5A+DM77ESRmWn/ggj4I+FuWA34fPq8Xn8+a/H4vAZ8Xv99H8Ojk8+Goryf50FpSfRW4gk3HfaxHXFTbsqiyZVIpmVRIBofJoNxkcNAM4GAgHW9zIwNMbavQyaSOUfZ6ch0NZEkd6aaWFFstNnegcz+3aTM/mYRUSA2Fa8q4Y6GbMqhVCCe4UkkAYuYhnsGgFVgBr/WPCIcbbHH7jIRepQGlVLQEA7DjX1CyBLNjJYhwJO98No27kxLHFErLfdR6fNR7/NQ3W1Odx0+dx0ezP3jKy4tAotNOgsOG0yakOzwMstcwUKrJoZpcrHlmsIosU8WYwCecEajEZTytL+RsvWrEBomZSFIWJGVBcqE1T8qCpOxjy8mhuSvtWCst/F/2LRcMS6mj+9se60oFV0oXfskxwGYDW6LVAlKdogGlVC+pafKxr6qRw2W7Sd38OKPKnmKA7zAVksHSwNX8wzeb/TuzYSfYZDcD09ykJzpJdTvITkmgIDuZVLeDVJeDFJeDFLc1T3U7SHE526w7SEqwh7rMOsEYaK6DuoNQfxDqD1v/4k/KgmQrfMSdbnX3KBVhGlBKnYIvEKTZH6TZF8BzdO4L0uwP0OwP4vFZ81bLvgDldc18WtXIvupG9lXWM8n7AdfaV3GhbR0OCfI2k3gj9Vb2DzyfvKw0bstMZFhmEkMzkhgyIJEERxS6gUTAnWZNOaN7//OVCqMBpfoOnwf2vQulJXDa+ZghU2nwBqhtsrrKapv8Ycs+aj3+1vs8x5brm/0tYRMIduQGyfESHDaK0pv5snMNFya8RCb78SZkcGTcQlwzb2bW4DHM6uFfgVJ9iQaUikmBoAndc/FR5/G3Wq71+K37Mk0eUqs3k1/9PiPq1jLS8zEJeK3zV93NQ/4r+aP/s3jb3kQJk5xgJy3RSZrbSVqig4GpbkblOklxOXA7bbgc9pa5y2nDHZq7HDZcTjsuhw13aB5+bNLh9SSt/wuyZQU0+GD42VD8KxLGXUG2w9Vbv0al4poGlOoVvkCQqgYvFfXNVNZ7qWyw5hX1Xirrm6lssOYV9V6ONHpp8LY3GswwQg4wy/YxZ9s2caZtM+nSAMAuewH/Sr6cT1KmUZ06hiur/sZtVc9yTfpmSqbcQ3DgxFZBlOa27u047D3cjVZ/GFb+HD58HNzpMP1WKL4Jcsb07Oco1Q9oQKku8wWCx76QWXvs+zFHw6ey3ktFaLmmydfuNRLsNrJSEshKSSAz2cVpOSkMSEqwBgO4HeRSzfCatQyqeo+MQ++Q0HAAgGD6UGTEZ2HEbCg8jxEpOYxodeWLYdvLZD13O5e8fS2c+wM453vWd4QiIRiAtX+FVXeDrxHO/g6c8/34HXmmVAzQgFLH8fgCHK499qXMo+FzuK6ZQ2FPCahq8B53rghkJCWQlWyFzrjBaWQnJ5CV4rKCKNlFdsqx9VSXo/VIM28j7Hrdmra/AeVbre2JmVB4rhVII87DllF46icqjJkLQ9+Fl34Ir/8Gtr0IVz0EA8f30G8qZN/78ML34OBHUHgeXHa/DjBQqgeIMV27ARxLiouLjb7yveMCQcOBmiY+La+honQHTQe3IxU7cdfvZbM3l//zzKaZhFbnOGxCTqqL3FQXOaluctOs5dxUtzVPs5azUxK61m0W8MMHf7eCpP4QOJNg2JktgcTAou59uXHzCnj+O9BcC7N/DLNuB3s3/33WUAGv3ml9uTZ1MFzya5hwdUw/ikipWCAi64wxxac8TgOqb/IFgpRVN7Gnoo7y/XtoOrANqdxJYt0espr3MZwDDJVynHLsXk+TJJFoGmlIyGbbqIXUn34dOQPSyE11kZGUgM0WgT+8xsC2l6w/9BXbYehMOO+HUHA29PRggoYKK6S2rIC8Yrj6Icge1fnrBAPWUx9e/SV462Hm16ynPrhSe7ZepfooDah+pLyumfc37+TAzg8xYSFUwAEK5BCJcqwrrlncHEkcSnNaIbbskaQMGUNa3jhs2SMhKRP2/htW3QOfvg1p+VZYTL42MvduSkvgXz+zPitrJFz4Sxh7eWRbIMbApifhxe+Drwnm/BzO+FrHW2dl66zuvP0fWCPzLr8fcsdFrl6l+iANqL7IGKgppfngFvZt30Dtvk04q3Yy2L+PbKltOcyPg9rEPDyhEEoaPIbUIWOQ7FFWV9SpAsAY2LXaCqqyEsgosLrFiub3zBMEKj+B1+6Czc9Aci7MXgRTvxy5AQztqTsIz30Ltr8Mw2bBVQ9A5ogTH99YZdW87m+QkgsX3wNFn9fuPKW6QAMqngV8ULXL6vIq30awfBueA1twVu3EGfbAz2qTwiHXcAKZo8gYfjoDR0zEnjPKetBod++vgBVU21+B1XfDwY2QPdoKk/FXd+1+UEMFvPFbKPmr9TTnWd+0pmiNdDMGNvwDXl5kddtd9EsovqX1zxYMwoZHYeWd4KmBM/7DCmt3WnRqVqoP0ICKJwEfvPcQfPquFUpVu1o9ov8AWewIDGGnyaM+dQQDhp/OaeOmMnXsKBJdvTAQMxiErc/B6l9bo+oGng7n/wTGXNaxFoS3Ed79b3jrD9YQ7Gk3wHmLrCdTx4KaUljxTfhklTUKb94DMGAo7N9gdQWWrrUGbFx2Pww6PdrVKhX3ohpQIjIX+CNgB/7XGHNvm/3/BZwfWk0Cco0xA0L7AsDG0L5PjTFXnurz4jqg6g7BP2+ET9+mPrWQTyWf9U25rGvIZafJoy6lgGmjhnHOqGxmjcwiN9UdvVqDAdj0lDXSruoTGDIFzr8DRs5pP6iCAauFsvoeqDsAYz8Dc+6MzSHYxsC6/4NX7rDedzPqIqsLMikLLvoVTLpGu/OU6iFRCygRsQPbgYuAUmAt8EVjzOYTHP9NYIox5ubQer0xplN9PnEbUPveh2VfJtBYzY/9C1nWPJPkBDszR2Rx9qhszh6ZzcjclM4/kTrSAn74aCm8cR8c+RSGngEX3GF9TwmsP/Y7/mV1i5Vvgfzp1h/54WdGt+6OqN4Dz37DGiwy/VY4/6eQOCDaVSnVp3Q0oCLRPzQD2GmM2RUqZCkwD2g3oIAvAndGoI7YZYz1DqCXfkS1I4drG39B4tCJPDF3LFOGZUTnKdadYXfAlOuh6AvWd5fW3A8PXwEF58C0G62BBHvetAYdfOERGHdl/LQ+Mgrgyyugqdp6n5FSKmoiEVB5wL6w9VLgjPYOFJHhQCGwKmyzW0RKAD9wrzHmmROcuxBYCDBs2LAeKLuX+DzWMOUNj7I+oZibahfy+bOKWHTp2NgPprYcCTD9Fph8ndU99ubv4clbrJfWXXa/FVa9OTKvp9hsGk5KxYBoP+roGmC5MSb8yaDDjTFlIjICWCUiG40xn7Q90RizGFgMVhdf75TbTUc+hSe+BAc2sJjP8efm+dx73WQuKxoc7cq6x+m2vqw69cuw598wbKaOclNKdVskAqoMGBq2nh/a1p5rgNvCNxhjykLzXSLyOjAFOC6g4s4nqzHLb8brbeY23/cozZnNM9dNZUROH3qYaEIyjL442lUopfqISPQprQVGiUihiCRghdCKtgeJyFggA3gnbFuGiLhCy9nAWZz43lV8MAbe+gPm0c9S5ktlbuNdpE26kqe/flbfCiellOphPd6CMsb4ReQbwCtYw8yXGGM+FpG7gBJjzNGwugZYaloPIxwH/I+IBLHC894Tjf6LC8118MzXYcsKXrPN4vuehSy6ehoLpg+NvZF5SikVY/SLupFSsQOz9DpMxQ7u83+Rl1I/z39fP43T89KjXZlSSkVVNIeZqy3PY57+D+r9dhZ6f0zK2At4bv4k0hPjcESbUkpFiQZUTwoGrMcBvXk/22wjudXzLb489yy+cs4I7dJTSqlO0oDqKY1V8OSt8MlrLA/O5g+O/+D3X5nJjMLMaFemlFJxSQOqJxzeSvAfXyBYU8bPfLewZ9h8nr52KjmpPfzCPaWU6kc0oHpA0ws/xltTzY2en3HW7Eu5+6LR2CPx9lmllOpHNKC6q+kIzr1rWMql3H7DtZw/NjfaFSmlVJ8QZw9/iz0H1j6NAz+pUz+n4aSUUj1IW1DdVL12OcZkMeeCy6JdilJK9SnaguqGqsoKTqt9j105c8hI0QERSinVkzSguuH9fz2OS3wUnPPFaJeilFJ9jgZUF3n9QRK2P0e1PZP8otnRLkcppfocDaguevmDHcwKrqfxtMutF9wppZTqUfqXtQuMMXz8xlO4xceQMxdEuxyllOqTNKC6YO2eaopqXqcpIRMZPiva5SilVJ+kAdUFf1+zhQvsH+CcMA9s9miXo5RSfZIGVCftq2rEt30lSTTjKLoq2uUopVSfpQHVSQ+/vYdLbe8TdGfC8LOjXY5SSvVZGlCdUN/s5+m1n3CJ8wNs4z8Ddn0Qh1JKRYr+he2Ef5bsY7LvA9zSCOPmRbscpZTq0yLSghKRuSKyTUR2isiidvbfKCLlIrIhNN0atu8GEdkRmm6IRH1dEQga/vb2Hq5P2wDudCg8N9olKaVUn9bjLSgRsQMPABcBpcBaEVlhjNnc5tAnjDHfaHNuJnAnUAwYYF3o3OqerrOzVm09zP7KWs5OfR/GXwGOhGiXpJRSfVokWlAzgJ3GmF3GGC+wFOhof9glwEpjTFUolFYCcyNQY6cteWs3V6Rsx+mrg/HavaeUUpEWiYDKA/aFrZeGtrX1ORH5SESWi8jQTp6LiCwUkRIRKSkvL++Juk9o8/5a3tlVycKcjZCQCqedH9HPU0opFb1RfM8BBcaYiVitpIc7ewFjzGJjTLExpjgnJ6fHCwy35N+7SXUaRlevgTGXgkNfraGUUpEWiYAqA4aGreeHtrUwxlQaY5pDq/8LTOvoub2tvK6ZFRv2893R5dg81dq9p5RSvSQSAbUWGCUihSKSAFwDrAg/QEQGh61eCWwJLb8CXCwiGSKSAVwc2hY1j723F28gyGfdJeBMhpFzolmOUkr1Gz0+is8Y4xeRb2AFix1YYoz5WETuAkqMMSuA20XkSsAPVAE3hs6tEpFfYYUcwF3GmKqerrGjmv0BHn13L3PGZJG++2UYfQk4E6NVjlJK9SsR+aKuMeZF4MU2234etvxj4McnOHcJsCQSdXXWcx8eoKLey7dHVcDeCu3eU0qpXqSPOjoBYwx/fWs3owemcHrN6+BIhFEXRbsspZTqNzSgTuDdXVVsOVDLzbOGI1tWWOGUkBztspRSqt/QgDqBJf/eTWZyAlfnlEH9Ie3eU0qpXqYB1Y69lQ28uuUQ150xDNe258DusgZIKKWU6jUaUO3429t7cNiE688YCltWwMgLwZUa7bKUUqpf0YBqo9bjY9nafXxm4hAG1n4MtWXavaeUUlGgAdXGsrX7aPAGuPmsQtj8DNicMCYmnlerlFL9igZUmKPvfJpekEFRXhpsXgGnXWC9/0kppVSv0oAKs3LzIUqrm7jl7ELY/wHUfKrde0opFSUaUGGW/Hs3+RmJXDR+EGx+FmwO6+nlSimlep0GVMimshre313FjbMKsAtWQBWeC0mZ0S5NKaX6JQ2okCVv7SY5wc4Xpg+Fgxuherd27ymlVBRpQAGHaz0899F+5hcPJc3ttFpPYoOxn4l2aUop1W9F5Gnm8ebRd/fiDxpunFUAxlgBVXA2JGdHuzSlVAzz+XyUlpbi8XiiXUpMcrvd5Ofn43Q6u3R+vw8ojy/Ao+99ypyxAynITobDW6ByB8z8arRLU0rFuNLSUlJTUykoKEBEol1OTDHGUFlZSWlpKYWFhV26Rr/v4ttYVkN9s5+bzy6wNmx+FhAYe0U0y1JKxQGPx0NWVpaGUztEhKysrG61Lvt9C2p6QSbv/XgOA5JCTdDNz8LwWZA6MLqFKaXigobTiXX3d9PvW1AAGckJ1i+yfDsc3qyj95RSKgZoQIXb8qw1H6fde0opFW0RCSgRmSsi20Rkp4gsamf/d0Vks4h8JCKvicjwsH0BEdkQmlZEor4T2vwsDD0D0ob06scqpVR3XHXVVUybNo0JEyawePFiAF5++WWmTp3KpEmTmDNnDgD19fXcdNNNFBUVMXHiRJ588sloln1KPX4PSkTswAPARUApsFZEVhhjNocd9gFQbIxpFJGvAb8FFoT2NRljJvd0XadU+Yn1Bd1Lft3rH62Uin+/fO5jNu+v7dFrjh+Sxp1XTDjlcUuWLCEzM5OmpiamT5/OvHnz+MpXvsKaNWsoLCykqqoKgF/96lekp6ezceNGAKqrq3u03p4WiUESM4CdxphdACKyFJgHtASUMWZ12PHvAtdHoI7O2RJqrI27Mrp1KKVUJ/3pT3/i6aefBmDfvn0sXryYc889t2V4d2am9ci2V199laVLl7acl5GR0fvFdkIkAioP2Be2XgqccZLjbwFeClt3i0gJ4AfuNcY8095JIrIQWAgwbNiwbhUMWN17edNgwNDuX0sp1e90pKUTCa+//jqvvvoq77zzDklJScyePZvJkyezdevWqNTTk6I6SEJErgeKgd+FbR5ujCkGrgX+ICKntXeuMWaxMabYGFOck5PTvUKq91qv19DRe0qpOFNTU0NGRgZJSUls3bqVd999F4/Hw5o1a9i9ezdASxffRRddxAMPPNBybqx38UUioMqA8GZIfmhbKyJyIfBT4EpjTPPR7caYstB8F/A6MCUCNbam3XtKqTg1d+5c/H4/48aNY9GiRcycOZOcnBwWL17MZz/7WSZNmsSCBdYt/jvuuIPq6mpOP/10Jk2axOrVq09x9eiKRBffWmCUiBRiBdM1WK2hFiIyBfgfYK4x5nDY9gyg0RjTLCLZwFlYAygia/OzMHgSZHbtcRxKKRUtLpeLl156qd19l17a+n12KSkpPPzww71RVo/o8RaUMcYPfAN4BdgCLDPGfCwid4nI0SbK74AU4J9thpOPA0pE5ENgNdY9qM1EUk0plK7V7j2llIoxEXnUkTHmReDFNtt+HrZ84QnOexsoikRNJ+RtgNGXwjgNKKWUiiX9/ll85IyBa5ee+jillFK9Sh91pJRSKiZpQCmllIpJGlBKKaVikgaUUkqpmKQBpZRS/URKSkq0S+gUDSillFIxSYeZK6VUT3hpkfXKnp40qAguvfeEuxctWsTQoUO57bbbAPjFL36Bw+Fg9erVVFdX4/P5uPvuu5k379Tf86yvr2fevHntnvfII49w//33IyJMnDiRv//97xw6dIivfvWr7Nq1C4AHH3yQWbNm9cAPfYwGlFJKxakFCxbw7W9/uyWgli1bxiuvvMLtt99OWloaFRUVzJw5kyuvvBIROem13G43Tz/99HHnbd68mbvvvpu3336b7OzslgfP3n777Zx33nk8/fTTBAIB6uvre/zn04BSSqmecJKWTqRMmTKFw4cPs3//fsrLy8nIyGDQoEF85zvfYc2aNdhsNsrKyjh06BCDBg066bWMMfzkJz857rxVq1Yxf/58srOzgWPvllq1ahWPPPIIAHa7nfT09B7/+TSglFIqjs2fP5/ly5dz8OBBFixYwGOPPUZ5eTnr1q3D6XRSUFCAx+M55XW6el4k6SAJpZSKYwsWLGDp0qUsX76c+fPnU1NTQ25uLk6nk9WrV7N3794OXedE511wwQX885//pLKyEjj2bqk5c+bw4IMPAhAIBKipqenxn00DSiml4tiECROoq6sjLy+PwYMHc91111FSUkJRURGPPPIIY8eO7dB1TnTehAkT+OlPf8p5553HpEmT+O53vwvAH//4R1avXk1RURHTpk1j8+aef/GEGGN6/KK9rbi42JSUlES7DKVU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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fa85f2079b0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"model3, history3 = my_fit(model_layers3)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"3 layer CNN: >90% validation accuracy!"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.3"
},
"toc": {
"nav_menu": {},
"number_sections": true,
"sideBar": true,
"skip_h1_title": false,
"toc_cell": false,
"toc_position": {},
"toc_section_display": "block",
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment