diff --git a/HERA19.ipynb b/HERA19.ipynb new file mode 100644 index 0000000..9bbfbc1 --- /dev/null +++ b/HERA19.ipynb @@ -0,0 +1,2761 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "from pyuvdata import UVData\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "import copy" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "from matplotlib.colors import LogNorm\n", + "from matplotlib import cm" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "import tensorflow.keras as keras\n", + "from tensorflow.keras import backend as K\n", + "from tensorflow.keras.models import Model, Sequential\n", + "from tensorflow.keras.layers import Activation, BatchNormalization, concatenate, Conv2D\n", + "from tensorflow.keras.layers import Conv2DTranspose, Dropout, Input, LeakyReLU, Dense, Activation\n", + "from tensorflow.keras.layers import MaxPooling2D, Reshape" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "from tensorflow.keras.utils import to_categorical, plot_model" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "from tensorflow.keras.layers import ZeroPadding2D" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "from tensorflow.keras.utils import to_categorical, plot_model" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "import tensorflow.keras.callbacks" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "class haltCallback(tensorflow.keras.callbacks.Callback):\n", + " def on_epoch_end(self, epoch, logs={}):\n", + " if(logs.get('loss') <= 0.15):\n", + " self.model.stop_training = True" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Training" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "import h5py" + ] + }, + { + "cell_type": "code", + "execution_count": 53, + "metadata": {}, + "outputs": [], + "source": [ + "def make_amp_phs_only_model(input_shape, nlayer=3):\n", + " model = Sequential()\n", + " model.add(Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\", input_shape=input_shape))\n", + " model.add(Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\"))\n", + " model.add(Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\"))\n", + " model.add(MaxPooling2D(pool_size=2, strides=2))\n", + " model.add(LeakyReLU())\n", + " \n", + " for layer in range(1,nlayer):\n", + " nfilters = 16*2**layer\n", + " model.add(Conv2D(filters=nfilters,kernel_size=3, strides=1, padding=\"same\"))\n", + " model.add(Conv2D(filters=nfilters, kernel_size=3, strides=1, padding=\"same\"))\n", + " model.add(Conv2D(filters=nfilters, kernel_size=3, strides=1, padding=\"same\"))\n", + " model.add(MaxPooling2D(pool_size=2, strides=2))\n", + " model.add(LeakyReLU())\n", + " \n", + " for layer in range(nlayer):\n", + " model.add(Conv2DTranspose(filters=2, kernel_size=3, strides=2, padding='same'))\n", + "\n", + " model.add(BatchNormalization())\n", + " model.add(Activation(\"softmax\"))\n", + " \n", + " return model" + ] + }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [], + "source": [ + "def make_amp_phs_model(input_shape, nlayer=3):\n", + " amp_input = Input(shape=input_shape, name=\"amp_input\")\n", + " phs_input = Input(shape=input_shape, name=\"phs_input\")\n", + "\n", + " # amplitude branch\n", + " ca1 = Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\")(amp_input)\n", + " ca2 = Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\")(ca1)\n", + " ca3 = Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\")(ca2)\n", + " ma1 = MaxPooling2D(pool_size=2, strides=2)(ca3)\n", + " la1 = LeakyReLU()(ma1)\n", + " \n", + " for layer in range(1,nlayer):\n", + " ca4 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(la1)\n", + " ca5 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(ca4)\n", + " ca6 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(ca5)\n", + " ma2 = MaxPooling2D(pool_size=2, strides=2)(ca6)\n", + " la2 = LeakyReLU()(ma2)\n", + " la1 = la2\n", + "\n", + " # phase branch\n", + " cp1 = Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\")(phs_input)\n", + " cp2 = Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\")(cp1)\n", + " cp3 = Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\")(cp2)\n", + " mp1 = MaxPooling2D(pool_size=2, strides=2)(cp3)\n", + " lp1 = LeakyReLU()(mp1)\n", + " \n", + " for layer in range(1,nlayer):\n", + " cp4 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(lp1)\n", + " cp5 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(cp4)\n", + " cp6 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(cp5)\n", + " mp2 = MaxPooling2D(pool_size=2, strides=2)(cp6)\n", + " lp2 = LeakyReLU()(mp2)\n", + " lp1 = lp2\n", + " \n", + " # concatenate\n", + " concat = concatenate([la1, lp1])\n", + "\n", + " # transpose layers\n", + " for layer in range(nlayer):\n", + " tr1 = Conv2DTranspose(filters=2, kernel_size=3, strides=2, padding='same')(concat)\n", + " concat = tr1\n", + " \n", + " bn1 = BatchNormalization()(tr1)\n", + " act = Activation(\"softmax\")(bn1)\n", + " \n", + " # build the model\n", + " model = Model(inputs=[amp_input, phs_input], outputs=[act])\n", + " \n", + " return model" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "def keras_convert_wf(wf, Nt_min=64, Nf_min=64):\n", + " \"\"\"Convert an input waterfall to the correct type expected by the Keras model.\n", + " Due to the max pooling in the Keras model, we may need to pad the input\n", + " waterfall to be the correct shape. This padding will be done symmetrically\n", + " on both ends of the waterfall.\n", + " Parameters\n", + " ----------\n", + " wf : ndarray\n", + " A 3d ndarray of shape (Nbatch, Ntimes, Nfreq) and complex dtype. Will\n", + " be padded if dimension aare not sufficient for the given input.\n", + " Nt_min : int\n", + " The minimum size of the waterfall along the time dimension.\n", + " Nf_min : int\n", + " The minimum size of the waterfall along the frequency dimension.\n", + " Returns\n", + " -------\n", + " wf_amp : ndarray\n", + " A 4d ndarray of shape (Nbatch, Ntimes', Nfreq', 1) and real dtype.\n", + " Ntimes' and Nfreq' will be padded if they are not sufficiently\n", + " large for the given model. The last axis is log10(amp) of the\n", + " input complex number.\n", + " wf_phs : ndarray\n", + " A 4d ndarray of shape (Nbatch, Ntimes', Nfreq', 1) and real dtype.\n", + " Ntimes' and Nfreq' will be padded if they are not sufficiently\n", + " large for the given model. The last axis is phase (angle) of the\n", + " input complex number.\n", + " \"\"\"\n", + " if len(wf.shape) != 3:\n", + " raise ValueError(\"wf should be a 3-dimensional ndarray\")\n", + " if wf.dtype not in (np.complex, np.complex64, np.complex128):\n", + " raise ValueError(\"wf should have a complex dtype\")\n", + " input_shape = wf.shape\n", + " # convert to amplitude and phase\n", + " wf_amp = np.empty((*input_shape, 1), dtype=np.float)\n", + " wf_phs = np.empty((*input_shape, 1), dtype=np.float)\n", + "\n", + " wf_amp[:, :, :, 0] = np.log10(np.abs(wf))\n", + " wf_phs[:, :, :, 0] = np.angle(wf)\n", + "\n", + " # clean up potential NaNs\n", + " minval = np.amin(wf_amp)\n", + " wf_amp = np.where(np.isnan(wf_amp), minval, wf_amp)\n", + " if np.any(np.isnan(wf_amp)):\n", + " raise AssertionError(\"NaN values present in input waterfall\")\n", + "\n", + " # maybe pad times\n", + " if input_shape[1] < Nt_min:\n", + " # pad it out\n", + " diff = Nt_min - input_shape[1]\n", + " Npad_l = diff // 2\n", + " Npad_r = diff // 2 + diff % 2 # extra 1 in case difference is odd\n", + " wf_amp = np.pad(wf_amp, ((0, 0), (Npad_l, Npad_r), (0, 0), (0, 0)), mode=\"reflect\")\n", + " wf_phs = np.pad(wf_phs, ((0, 0), (Npad_l, Npad_r), (0, 0), (0, 0)), mode=\"reflect\")\n", + "\n", + " # maybe pad freqs\n", + " if input_shape[2] < Nf_min:\n", + " # pad it out\n", + " diff = Nf_min - input_shape[2]\n", + " Npad_l = diff // 2\n", + " Npad_r = diff // 2 + diff % 2 # extra 1 in case difference is odd\n", + " wf_amp = np.pad(wf_amp, ((0, 0), (0, 0), (Npad_l, Npad_r), (0, 0)), mode=\"reflect\")\n", + " wf_phs = np.pad(wf_phs, ((0, 0), (0, 0), (Npad_r, Npad_r), (0, 0)), mode=\"reflect\")\n", + "\n", + " return wf_amp, wf_phs\n", + "\n", + "\n", + "def keras_convert_flags(flags, Nt_min=64, Nf_min=64):\n", + " \"\"\"Convert an input flag array to the correct type expected by the Keras model.\n", + " Due to the max pooling in the Keras model, we may need to pad the input\n", + " flags to be the correct shape. This padding will be done symmetrically\n", + " on both ends of the flag waterfall.\n", + " Parameters\n", + " ----------\n", + " flags : ndarray\n", + " A 3d ndarray of shape (Nbatch, Ntimes, Nfreq) and boolean dtype. Will\n", + " be padded if dimension aare not sufficient for the given input.\n", + " Nt_min : int\n", + " The minimum size of the waterfall along the time dimension.\n", + " Nf_min : int\n", + " The minimum size of the waterfall along the frequency dimension.\n", + " Returns\n", + " -------\n", + " flags_out : ndarray\n", + " A 4d ndarray of shape (Nbatch, Ntimes', Nfreq', 1) and integer dtype.\n", + " Ntimes' and Nfreq' will be padded if they are not sufficiently\n", + " large for the given model.\n", + " \"\"\"\n", + " if len(flags.shape) != 3:\n", + " raise ValueError(\"flags should be a 3-dimensional ndarray\")\n", + " input_shape = flags.shape\n", + " # convert to int\n", + " flags_out = flags.astype(np.int32).reshape((*input_shape, 1))\n", + "\n", + " # maybe pad times\n", + " if input_shape[1] < Nt_min:\n", + " # pad it out\n", + " diff = Nt_min - input_shape[1]\n", + " Npad_l = diff // 2\n", + " Npad_r = diff // 2 + diff % 2 # extra 1 in case difference is odd\n", + " flags_out = np.pad(\n", + " flags_out, ((0, 0), (Npad_l, Npad_r), (0, 0), (0, 0)), mode=\"reflect\"\n", + " )\n", + "\n", + " # maybe pad freqs\n", + " if input_shape[2] < Nf_min:\n", + " # pad it out\n", + " diff = Nf_min - input_shape[2]\n", + " Npad_l = diff // 2\n", + " Npad_r = diff // 2 + diff % 2 # extra 1 in case difference is odd\n", + " flags_out = np.pad(\n", + " flags_out, ((0, 0), (Npad_l, Npad_r), (0, 0), (0, 0)), mode=\"reflect\"\n", + " )\n", + " #flags_out = to_categorical(flags_out)\n", + " return flags_out" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "def keras_recall_metric(y_true, y_pred):\n", + " \"\"\"Define a recall metric to use in Keras.\n", + " Parameters\n", + " ----------\n", + " y_true : ndarray\n", + " The \"true\" values according to Keras.\n", + " y_pred : ndarray\n", + " The \"predicted\" values according to Keras.\n", + " Returns\n", + " -------\n", + " recall : float\n", + " The recall value, defined as the number true positives divided by the\n", + " total number of positives.\n", + " \"\"\"\n", + " y_pred = K.cast_to_floatx(K.argmax(y_pred, axis=-1))\n", + " y_true = K.squeeze(y_true, -1)\n", + " true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))\n", + " possible_positives = K.sum(K.round(K.clip(y_true, 0, 1)))\n", + " recall = true_positives / (possible_positives + K.epsilon())\n", + " return recall\n", + "\n", + "\n", + "def keras_precision_metric(y_true, y_pred):\n", + " \"\"\"Define a precision metric to use in Keras.\n", + " Parameters\n", + " ----------\n", + " y_true : ndarray\n", + " The \"true\" values according to Keras.\n", + " y_pred : ndarray\n", + " The \"predicted\" values according to Keras.\n", + " Returns\n", + " -------\n", + " precision : float\n", + " The precision value, defined as the number of true positives divided\n", + " by the number of predicted positives.\n", + " \"\"\"\n", + " y_pred = K.cast_to_floatx(K.argmax(y_pred, axis=-1))\n", + " y_true = K.squeeze(y_true, -1)\n", + " true_positives = K.sum(K.round(K.clip(y_true * y_pred, 0, 1)))\n", + " predicted_positives = K.sum(K.round(K.clip(y_pred, 0, 1)))\n", + " precision = true_positives / (predicted_positives + K.epsilon())\n", + " return precision\n", + "\n", + "\n", + "def keras_f2_metric(y_true, y_pred):\n", + " \"\"\"Define a F2 metric to use in Keras.\n", + " Parameters\n", + " ----------\n", + " y_true : ndarray\n", + " The \"true\" values according to Keras.\n", + " y_pred : ndarray\n", + " The \"predicted\" values according to Keras.\n", + " Returns\n", + " -------\n", + " f2 : float\n", + " The F2 metric, which is a weighted combination of the precision and\n", + " recall metrics. The F2 score weights recall higher than precision, which\n", + " places a greater emphasis on false negatives.\n", + " \"\"\"\n", + " precision = keras_precision_metric(y_true, y_pred)\n", + " recall = keras_recall_metric(y_true, y_pred)\n", + " f2 = (\n", + " (1 + 2 ** 2)\n", + " * (precision * recall)\n", + " / (2 ** 2 * precision + recall + K.epsilon())\n", + " )\n", + " return f2" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"Load the data and make sure it's the right size.\\nParameters\\n----------\\ndata_fn : str\\n The full path to the data to use for training and testing.\\nn_train : int\\n The number of samples to use as training data.\\nn_test : int\\n The number of samples to use as testing/evaluation data.\\nNt_min : int\\n The minimum number of elements in the time (first) dimension of\\n the waterfall required by the network. This argument will be passed\\n to the keras_convert_wf function and keras_convert_flags function.\\nNf_min : int\\n The minimum number of elements in the frequency (second) dimension of\\n the waterfall required by the network. This argument will be passed\\n to the keras_convert_wf function and keras_convert_flags function.\\nReturns\\n-------\\nNone\\nNotes\\n-----\\nThis method will save the training and testing data on the object.\\nRaises\\n------\\nAssertionError\\n This is raised if the training data and flags are not the same size,\\n or if the testing data and flags are not the same size.\\n\"" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "data_fn, n_train, n_test, Nt_min, Nf_min = '/data4/jkerrigan/ml_rfi/SimVis_3000_v13.h5',2000,200,64,64\n", + "\"\"\"Load the data and make sure it's the right size.\n", + "Parameters\n", + "----------\n", + "data_fn : str\n", + " The full path to the data to use for training and testing.\n", + "n_train : int\n", + " The number of samples to use as training data.\n", + "n_test : int\n", + " The number of samples to use as testing/evaluation data.\n", + "Nt_min : int\n", + " The minimum number of elements in the time (first) dimension of\n", + " the waterfall required by the network. This argument will be passed\n", + " to the keras_convert_wf function and keras_convert_flags function.\n", + "Nf_min : int\n", + " The minimum number of elements in the frequency (second) dimension of\n", + " the waterfall required by the network. This argument will be passed\n", + " to the keras_convert_wf function and keras_convert_flags function.\n", + "Returns\n", + "-------\n", + "None\n", + "Notes\n", + "-----\n", + "This method will save the training and testing data on the object.\n", + "Raises\n", + "------\n", + "AssertionError\n", + " This is raised if the training data and flags are not the same size,\n", + " or if the testing data and flags are not the same size.\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\\n# save attributes\\nwith h5py.File(data_fn, \"r\") as f:\\n train_data = f[\"data\"][: n_train, :, :]\\n train_flag = f[\"flag\"][: n_train, :,:]\\n test_data = f[\"data\"][n_train : n_train + n_test, :, :]\\n test_flag = f[\"flag\"][n_train : n_train + n_test, :,:]\\n'" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "\"\"\"\n", + "# save attributes\n", + "with h5py.File(data_fn, \"r\") as f:\n", + " train_data = f[\"data\"][: n_train, :, :]\n", + " train_flag = f[\"flag\"][: n_train, :,:]\n", + " test_data = f[\"data\"][n_train : n_train + n_test, :, :]\n", + " test_flag = f[\"flag\"][n_train : n_train + n_test, :,:]\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [], + "source": [ + "uvd = UVData()\n", + "uvd.read_uvh5('/data4/jrtan/RFI_sim/HERA19Golden_RFIsim_zen.2457755.71759.HH.uvh5')" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "scrolled": true + }, + "outputs": [ + { + "data": { + "text/plain": [ + "61" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "uvd.Ntimes" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "120" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "uvd.Nbls" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [], + "source": [ + "data_array = uvd.data_array[:, 0, :, 0].reshape(uvd.Ntimes, uvd.Nbls, uvd.Nfreqs).transpose((1,0,2))" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [], + "source": [ + "train_data = data_array[:100,:,:]\n", + "test_data = data_array[100:,:,:]" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": {}, + "outputs": [], + "source": [ + "flag_array = uvd.flag_array[:, 0, :, 0].reshape(uvd.Ntimes, uvd.Nbls, uvd.Nfreqs).transpose((1,0,2))" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": {}, + "outputs": [], + "source": [ + "train_flag = flag_array[:100,:,:]\n", + "test_flag = flag_array[100:,:,:]" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": {}, + "outputs": [], + "source": [ + "# resize data as necessary\n", + "\n", + "train_data_amp, train_data_phs = keras_convert_wf(\n", + " train_data, Nt_min=Nt_min, Nf_min=Nf_min,\n", + ")\n", + "\n", + "test_data_amp, test_data_phs = keras_convert_wf(\n", + " test_data, Nt_min=Nt_min, Nf_min=Nf_min\n", + ")\n", + "\n", + "train_flag = keras_convert_flags(train_flag, Nt_min=Nt_min, Nf_min=Nf_min)\n", + "\n", + "test_flag = keras_convert_flags(test_flag, Nt_min=Nt_min, Nf_min=Nf_min)\n", + "\n", + "# make sure things are the right size/shape\n", + "assert train_data_amp.shape == train_data_phs.shape\n", + "assert train_data_amp.shape[:-1] == train_flag.shape[:-1]\n", + "assert test_data_amp.shape == test_data_phs.shape\n", + "assert test_data_amp.shape[:-1] == test_flag.shape[:-1]" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": {}, + "outputs": [], + "source": [ + "def keras_unpad_flags(flags, Nt_out=64, Nf_out=1024):\n", + " \"\"\"Extract predicted flags from Keras model.\n", + "\n", + " Parameters\n", + " ----------\n", + " flags : ndarray\n", + " The predicted flags from the Keras model.\n", + " Nt_out : int\n", + " The target number of times to extract in the first (time) dimension.\n", + " Nf_out : int\n", + " The target number of frequencies to extract in the second (frequency)\n", + " dimension.\n", + "\n", + " Returns\n", + " -------\n", + " flags_out : ndarray\n", + " The flags array reduced to size (Nt_out, Nf_out).\n", + " \"\"\"\n", + " flags_shape = flags.shape\n", + " if len(flags_shape) != 4:\n", + " raise ValueError(\"flags must be a 4-dimensional array\")\n", + " Npad_t = flags_shape[1] - Nt_out\n", + " t_start = Npad_t // 2\n", + " Npad_f = flags_shape[2] - Nf_out\n", + " f_start = Npad_f // 2\n", + " flags_out = flags[:, t_start : t_start + Nt_out, f_start : f_start + Nf_out, :]\n", + " flags_out = np.argmax(flags_out, axis=-1)\n", + " return flags_out" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Build network" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": {}, + "outputs": [], + "source": [ + "input_shape=train_data_amp.shape[1:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### amplitude input with three `layer':" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "metadata": {}, + "outputs": [], + "source": [ + "amp_model = make_amp_phs_only_model(input_shape, nlayer=3)" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "conv2d_78 (Conv2D) (None, 64, 1024, 16) 160 \n", + "_________________________________________________________________\n", + "conv2d_79 (Conv2D) (None, 64, 1024, 16) 2320 \n", + "_________________________________________________________________\n", + "conv2d_80 (Conv2D) (None, 64, 1024, 16) 2320 \n", + "_________________________________________________________________\n", + "max_pooling2d_26 (MaxPooling (None, 32, 512, 16) 0 \n", + "_________________________________________________________________\n", + "leaky_re_lu_26 (LeakyReLU) (None, 32, 512, 16) 0 \n", + "_________________________________________________________________\n", + "conv2d_81 (Conv2D) (None, 32, 512, 32) 4640 \n", + "_________________________________________________________________\n", + "conv2d_82 (Conv2D) (None, 32, 512, 32) 9248 \n", + "_________________________________________________________________\n", + "conv2d_83 (Conv2D) (None, 32, 512, 32) 9248 \n", + "_________________________________________________________________\n", + "max_pooling2d_27 (MaxPooling (None, 16, 256, 32) 0 \n", + "_________________________________________________________________\n", + "leaky_re_lu_27 (LeakyReLU) (None, 16, 256, 32) 0 \n", + "_________________________________________________________________\n", + "conv2d_84 (Conv2D) (None, 16, 256, 64) 18496 \n", + "_________________________________________________________________\n", + "conv2d_85 (Conv2D) (None, 16, 256, 64) 36928 \n", + "_________________________________________________________________\n", + "conv2d_86 (Conv2D) (None, 16, 256, 64) 36928 \n", + "_________________________________________________________________\n", + "max_pooling2d_28 (MaxPooling (None, 8, 128, 64) 0 \n", + "_________________________________________________________________\n", + "leaky_re_lu_28 (LeakyReLU) (None, 8, 128, 64) 0 \n", + "_________________________________________________________________\n", + "conv2d_transpose_13 (Conv2DT (None, 16, 256, 2) 1154 \n", + "_________________________________________________________________\n", + "conv2d_transpose_14 (Conv2DT (None, 32, 512, 2) 38 \n", + "_________________________________________________________________\n", + "conv2d_transpose_15 (Conv2DT (None, 64, 1024, 2) 38 \n", + "_________________________________________________________________\n", + "batch_normalization_4 (Batch (None, 64, 1024, 2) 8 \n", + "_________________________________________________________________\n", + "activation_4 (Activation) (None, 64, 1024, 2) 0 \n", + "=================================================================\n", + "Total params: 121,526\n", + "Trainable params: 121,522\n", + "Non-trainable params: 4\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "amp_model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "amp_model.compile(optimizer=keras.optimizers.Adam(lr=0.001),loss=\"sparse_categorical_crossentropy\",\n", + " metrics=[\"sparse_categorical_accuracy\",keras_recall_metric,keras_precision_metric, keras_f2_metric]) " + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train on 100 samples, validate on 20 samples\n", + "Epoch 1/200\n", + "100/100 [==============================] - 2s 17ms/sample - loss: 0.8587 - sparse_categorical_accuracy: 0.5409 - keras_recall_metric: 0.4478 - keras_precision_metric: 0.2253 - keras_f2_metric: 0.3689 - val_loss: 0.6946 - val_sparse_categorical_accuracy: 0.5783 - val_keras_recall_metric: 0.4299 - val_keras_precision_metric: 0.2470 - val_keras_f2_metric: 0.3744\n", + "Epoch 2/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.7749 - sparse_categorical_accuracy: 0.6198 - keras_recall_metric: 0.3654 - keras_precision_metric: 0.2419 - keras_f2_metric: 0.3286 - val_loss: 0.6892 - val_sparse_categorical_accuracy: 0.7024 - val_keras_recall_metric: 0.2150 - val_keras_precision_metric: 0.2840 - val_keras_f2_metric: 0.2260\n", + "Epoch 3/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.7490 - sparse_categorical_accuracy: 0.6078 - keras_recall_metric: 0.3617 - keras_precision_metric: 0.2491 - keras_f2_metric: 0.3314 - val_loss: 0.6869 - val_sparse_categorical_accuracy: 0.7292 - val_keras_recall_metric: 0.1843 - val_keras_precision_metric: 0.3198 - val_keras_f2_metric: 0.2013\n", + "Epoch 4/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.7319 - sparse_categorical_accuracy: 0.6393 - keras_recall_metric: 0.3011 - keras_precision_metric: 0.2648 - keras_f2_metric: 0.2916 - val_loss: 0.6846 - val_sparse_categorical_accuracy: 0.7598 - val_keras_recall_metric: 0.1067 - val_keras_precision_metric: 0.3750 - val_keras_f2_metric: 0.1245\n", + "Epoch 5/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.7099 - sparse_categorical_accuracy: 0.6351 - keras_recall_metric: 0.3365 - keras_precision_metric: 0.2683 - keras_f2_metric: 0.3195 - val_loss: 0.6816 - val_sparse_categorical_accuracy: 0.7731 - val_keras_recall_metric: 0.0326 - val_keras_precision_metric: 0.4221 - val_keras_f2_metric: 0.0399\n", + "Epoch 6/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6905 - sparse_categorical_accuracy: 0.6108 - keras_recall_metric: 0.3939 - keras_precision_metric: 0.2597 - keras_f2_metric: 0.3566 - val_loss: 0.6799 - val_sparse_categorical_accuracy: 0.7759 - val_keras_recall_metric: 0.0186 - val_keras_precision_metric: 0.5091 - val_keras_f2_metric: 0.0231\n", + "Epoch 7/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6784 - sparse_categorical_accuracy: 0.6336 - keras_recall_metric: 0.3813 - keras_precision_metric: 0.2797 - keras_f2_metric: 0.3551 - val_loss: 0.6778 - val_sparse_categorical_accuracy: 0.7765 - val_keras_recall_metric: 0.0039 - val_keras_precision_metric: 0.8734 - val_keras_f2_metric: 0.0049\n", + "Epoch 8/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6733 - sparse_categorical_accuracy: 0.6008 - keras_recall_metric: 0.4118 - keras_precision_metric: 0.2609 - keras_f2_metric: 0.3672 - val_loss: 0.6764 - val_sparse_categorical_accuracy: 0.7782 - val_keras_recall_metric: 0.0171 - val_keras_precision_metric: 0.7411 - val_keras_f2_metric: 0.0213\n", + "Epoch 9/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6658 - sparse_categorical_accuracy: 0.6520 - keras_recall_metric: 0.3741 - keras_precision_metric: 0.2895 - keras_f2_metric: 0.3535 - val_loss: 0.6745 - val_sparse_categorical_accuracy: 0.7775 - val_keras_recall_metric: 0.0084 - val_keras_precision_metric: 0.9154 - val_keras_f2_metric: 0.0105\n", + "Epoch 10/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6608 - sparse_categorical_accuracy: 0.6602 - keras_recall_metric: 0.3620 - keras_precision_metric: 0.3003 - keras_f2_metric: 0.3472 - val_loss: 0.6723 - val_sparse_categorical_accuracy: 0.7793 - val_keras_recall_metric: 0.0213 - val_keras_precision_metric: 0.7971 - val_keras_f2_metric: 0.0264\n", + "Epoch 11/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6552 - sparse_categorical_accuracy: 0.6717 - keras_recall_metric: 0.3739 - keras_precision_metric: 0.3053 - keras_f2_metric: 0.3573 - val_loss: 0.6693 - val_sparse_categorical_accuracy: 0.7798 - val_keras_recall_metric: 0.0225 - val_keras_precision_metric: 0.8324 - val_keras_f2_metric: 0.0280\n", + "Epoch 12/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6494 - sparse_categorical_accuracy: 0.6772 - keras_recall_metric: 0.3885 - keras_precision_metric: 0.3329 - keras_f2_metric: 0.3752 - val_loss: 0.6662 - val_sparse_categorical_accuracy: 0.7799 - val_keras_recall_metric: 0.0213 - val_keras_precision_metric: 0.8862 - val_keras_f2_metric: 0.0264\n", + "Epoch 13/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6436 - sparse_categorical_accuracy: 0.6871 - keras_recall_metric: 0.4072 - keras_precision_metric: 0.3348 - keras_f2_metric: 0.3902 - val_loss: 0.6627 - val_sparse_categorical_accuracy: 0.7800 - val_keras_recall_metric: 0.0211 - val_keras_precision_metric: 0.9088 - val_keras_f2_metric: 0.0262\n", + "Epoch 14/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6403 - sparse_categorical_accuracy: 0.6853 - keras_recall_metric: 0.4353 - keras_precision_metric: 0.3510 - keras_f2_metric: 0.4124 - val_loss: 0.6618 - val_sparse_categorical_accuracy: 0.7810 - val_keras_recall_metric: 0.0257 - val_keras_precision_metric: 0.9185 - val_keras_f2_metric: 0.0319\n", + "Epoch 15/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6335 - sparse_categorical_accuracy: 0.7149 - keras_recall_metric: 0.4221 - keras_precision_metric: 0.3630 - keras_f2_metric: 0.4067 - val_loss: 0.6586 - val_sparse_categorical_accuracy: 0.7833 - val_keras_recall_metric: 0.0387 - val_keras_precision_metric: 0.8861 - val_keras_f2_metric: 0.0479\n", + "Epoch 16/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6283 - sparse_categorical_accuracy: 0.7200 - keras_recall_metric: 0.4287 - keras_precision_metric: 0.3986 - keras_f2_metric: 0.4222 - val_loss: 0.6554 - val_sparse_categorical_accuracy: 0.7841 - val_keras_recall_metric: 0.0456 - val_keras_precision_metric: 0.8482 - val_keras_f2_metric: 0.0562\n", + "Epoch 17/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6223 - sparse_categorical_accuracy: 0.7201 - keras_recall_metric: 0.4581 - keras_precision_metric: 0.4068 - keras_f2_metric: 0.4465 - val_loss: 0.6526 - val_sparse_categorical_accuracy: 0.7852 - val_keras_recall_metric: 0.0498 - val_keras_precision_metric: 0.8637 - val_keras_f2_metric: 0.0614\n", + "Epoch 18/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6169 - sparse_categorical_accuracy: 0.7245 - keras_recall_metric: 0.4487 - keras_precision_metric: 0.4002 - keras_f2_metric: 0.4373 - val_loss: 0.6505 - val_sparse_categorical_accuracy: 0.7856 - val_keras_recall_metric: 0.0513 - val_keras_precision_metric: 0.8753 - val_keras_f2_metric: 0.0632\n", + "Epoch 19/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6125 - sparse_categorical_accuracy: 0.7250 - keras_recall_metric: 0.4674 - keras_precision_metric: 0.4215 - keras_f2_metric: 0.4554 - val_loss: 0.6492 - val_sparse_categorical_accuracy: 0.7888 - val_keras_recall_metric: 0.0979 - val_keras_precision_metric: 0.7104 - val_keras_f2_metric: 0.1183\n", + "Epoch 20/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.6108 - sparse_categorical_accuracy: 0.7503 - keras_recall_metric: 0.4468 - keras_precision_metric: 0.4473 - keras_f2_metric: 0.4468 - val_loss: 0.6465 - val_sparse_categorical_accuracy: 0.7863 - val_keras_recall_metric: 0.0570 - val_keras_precision_metric: 0.8493 - val_keras_f2_metric: 0.0700\n", + "Epoch 21/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.6025 - sparse_categorical_accuracy: 0.7399 - keras_recall_metric: 0.5099 - keras_precision_metric: 0.4357 - keras_f2_metric: 0.4929 - val_loss: 0.6439 - val_sparse_categorical_accuracy: 0.7911 - val_keras_recall_metric: 0.1177 - val_keras_precision_metric: 0.7059 - val_keras_f2_metric: 0.1413\n", + "Epoch 22/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5959 - sparse_categorical_accuracy: 0.7619 - keras_recall_metric: 0.4851 - keras_precision_metric: 0.4572 - keras_f2_metric: 0.4782 - val_loss: 0.6398 - val_sparse_categorical_accuracy: 0.7908 - val_keras_recall_metric: 0.0825 - val_keras_precision_metric: 0.8441 - val_keras_f2_metric: 0.1007\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 23/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5898 - sparse_categorical_accuracy: 0.7524 - keras_recall_metric: 0.5237 - keras_precision_metric: 0.4578 - keras_f2_metric: 0.5085 - val_loss: 0.6383 - val_sparse_categorical_accuracy: 0.7947 - val_keras_recall_metric: 0.1317 - val_keras_precision_metric: 0.7360 - val_keras_f2_metric: 0.1576\n", + "Epoch 24/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5834 - sparse_categorical_accuracy: 0.7639 - keras_recall_metric: 0.5036 - keras_precision_metric: 0.4943 - keras_f2_metric: 0.5008 - val_loss: 0.6345 - val_sparse_categorical_accuracy: 0.7949 - val_keras_recall_metric: 0.1172 - val_keras_precision_metric: 0.7869 - val_keras_f2_metric: 0.1412\n", + "Epoch 25/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5780 - sparse_categorical_accuracy: 0.7570 - keras_recall_metric: 0.5497 - keras_precision_metric: 0.4754 - keras_f2_metric: 0.5329 - val_loss: 0.6311 - val_sparse_categorical_accuracy: 0.7958 - val_keras_recall_metric: 0.1426 - val_keras_precision_metric: 0.7279 - val_keras_f2_metric: 0.1699\n", + "Epoch 26/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5708 - sparse_categorical_accuracy: 0.7663 - keras_recall_metric: 0.5421 - keras_precision_metric: 0.4862 - keras_f2_metric: 0.5298 - val_loss: 0.6283 - val_sparse_categorical_accuracy: 0.7974 - val_keras_recall_metric: 0.1403 - val_keras_precision_metric: 0.7618 - val_keras_f2_metric: 0.1676\n", + "Epoch 27/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5630 - sparse_categorical_accuracy: 0.7662 - keras_recall_metric: 0.5775 - keras_precision_metric: 0.4739 - keras_f2_metric: 0.5523 - val_loss: 0.6264 - val_sparse_categorical_accuracy: 0.7994 - val_keras_recall_metric: 0.1655 - val_keras_precision_metric: 0.7339 - val_keras_f2_metric: 0.1959\n", + "Epoch 28/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5558 - sparse_categorical_accuracy: 0.7684 - keras_recall_metric: 0.5915 - keras_precision_metric: 0.5036 - keras_f2_metric: 0.5713 - val_loss: 0.6223 - val_sparse_categorical_accuracy: 0.8022 - val_keras_recall_metric: 0.2021 - val_keras_precision_metric: 0.7064 - val_keras_f2_metric: 0.2357\n", + "Epoch 29/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5490 - sparse_categorical_accuracy: 0.7727 - keras_recall_metric: 0.5942 - keras_precision_metric: 0.4957 - keras_f2_metric: 0.5712 - val_loss: 0.6133 - val_sparse_categorical_accuracy: 0.8030 - val_keras_recall_metric: 0.1721 - val_keras_precision_metric: 0.7736 - val_keras_f2_metric: 0.2037\n", + "Epoch 30/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5419 - sparse_categorical_accuracy: 0.7730 - keras_recall_metric: 0.6028 - keras_precision_metric: 0.4983 - keras_f2_metric: 0.5783 - val_loss: 0.6149 - val_sparse_categorical_accuracy: 0.8049 - val_keras_recall_metric: 0.1926 - val_keras_precision_metric: 0.7541 - val_keras_f2_metric: 0.2263\n", + "Epoch 31/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5349 - sparse_categorical_accuracy: 0.7747 - keras_recall_metric: 0.6374 - keras_precision_metric: 0.5145 - keras_f2_metric: 0.6078 - val_loss: 0.6088 - val_sparse_categorical_accuracy: 0.8061 - val_keras_recall_metric: 0.2523 - val_keras_precision_metric: 0.6836 - val_keras_f2_metric: 0.2888\n", + "Epoch 32/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.5263 - sparse_categorical_accuracy: 0.7833 - keras_recall_metric: 0.6353 - keras_precision_metric: 0.5166 - keras_f2_metric: 0.6069 - val_loss: 0.6045 - val_sparse_categorical_accuracy: 0.8112 - val_keras_recall_metric: 0.2616 - val_keras_precision_metric: 0.7163 - val_keras_f2_metric: 0.2997\n", + "Epoch 33/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5180 - sparse_categorical_accuracy: 0.7855 - keras_recall_metric: 0.6615 - keras_precision_metric: 0.5230 - keras_f2_metric: 0.6281 - val_loss: 0.6017 - val_sparse_categorical_accuracy: 0.8150 - val_keras_recall_metric: 0.3219 - val_keras_precision_metric: 0.6868 - val_keras_f2_metric: 0.3602\n", + "Epoch 34/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.5137 - sparse_categorical_accuracy: 0.7883 - keras_recall_metric: 0.6579 - keras_precision_metric: 0.5343 - keras_f2_metric: 0.6285 - val_loss: 0.5915 - val_sparse_categorical_accuracy: 0.8173 - val_keras_recall_metric: 0.2939 - val_keras_precision_metric: 0.7303 - val_keras_f2_metric: 0.3338\n", + "Epoch 35/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5069 - sparse_categorical_accuracy: 0.7892 - keras_recall_metric: 0.6808 - keras_precision_metric: 0.5312 - keras_f2_metric: 0.6445 - val_loss: 0.5930 - val_sparse_categorical_accuracy: 0.8143 - val_keras_recall_metric: 0.3562 - val_keras_precision_metric: 0.6588 - val_keras_f2_metric: 0.3923\n", + "Epoch 36/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5014 - sparse_categorical_accuracy: 0.7943 - keras_recall_metric: 0.6692 - keras_precision_metric: 0.5265 - keras_f2_metric: 0.6346 - val_loss: 0.5879 - val_sparse_categorical_accuracy: 0.8140 - val_keras_recall_metric: 0.3515 - val_keras_precision_metric: 0.6602 - val_keras_f2_metric: 0.3878\n", + "Epoch 37/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4943 - sparse_categorical_accuracy: 0.7979 - keras_recall_metric: 0.6822 - keras_precision_metric: 0.5469 - keras_f2_metric: 0.6497 - val_loss: 0.5791 - val_sparse_categorical_accuracy: 0.8181 - val_keras_recall_metric: 0.3451 - val_keras_precision_metric: 0.6883 - val_keras_f2_metric: 0.3833\n", + "Epoch 38/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4870 - sparse_categorical_accuracy: 0.8020 - keras_recall_metric: 0.6899 - keras_precision_metric: 0.5492 - keras_f2_metric: 0.6562 - val_loss: 0.5728 - val_sparse_categorical_accuracy: 0.8118 - val_keras_recall_metric: 0.3744 - val_keras_precision_metric: 0.6368 - val_keras_f2_metric: 0.4080\n", + "Epoch 39/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4820 - sparse_categorical_accuracy: 0.8052 - keras_recall_metric: 0.6805 - keras_precision_metric: 0.5747 - keras_f2_metric: 0.6545 - val_loss: 0.5791 - val_sparse_categorical_accuracy: 0.8158 - val_keras_recall_metric: 0.4347 - val_keras_precision_metric: 0.6291 - val_keras_f2_metric: 0.4633\n", + "Epoch 40/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4799 - sparse_categorical_accuracy: 0.7978 - keras_recall_metric: 0.6854 - keras_precision_metric: 0.5441 - keras_f2_metric: 0.6514 - val_loss: 0.5625 - val_sparse_categorical_accuracy: 0.8160 - val_keras_recall_metric: 0.3754 - val_keras_precision_metric: 0.6570 - val_keras_f2_metric: 0.4106\n", + "Epoch 41/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4738 - sparse_categorical_accuracy: 0.8054 - keras_recall_metric: 0.6916 - keras_precision_metric: 0.5509 - keras_f2_metric: 0.6578 - val_loss: 0.5630 - val_sparse_categorical_accuracy: 0.8133 - val_keras_recall_metric: 0.4482 - val_keras_precision_metric: 0.6147 - val_keras_f2_metric: 0.4738\n", + "Epoch 42/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4708 - sparse_categorical_accuracy: 0.8027 - keras_recall_metric: 0.6685 - keras_precision_metric: 0.5530 - keras_f2_metric: 0.6412 - val_loss: 0.5569 - val_sparse_categorical_accuracy: 0.8138 - val_keras_recall_metric: 0.4377 - val_keras_precision_metric: 0.6204 - val_keras_f2_metric: 0.4651\n", + "Epoch 43/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4644 - sparse_categorical_accuracy: 0.8066 - keras_recall_metric: 0.7031 - keras_precision_metric: 0.5585 - keras_f2_metric: 0.6684 - val_loss: 0.5466 - val_sparse_categorical_accuracy: 0.8166 - val_keras_recall_metric: 0.4094 - val_keras_precision_metric: 0.6429 - val_keras_f2_metric: 0.4414\n", + "Epoch 44/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4614 - sparse_categorical_accuracy: 0.8069 - keras_recall_metric: 0.7133 - keras_precision_metric: 0.5443 - keras_f2_metric: 0.6712 - val_loss: 0.5465 - val_sparse_categorical_accuracy: 0.8118 - val_keras_recall_metric: 0.4567 - val_keras_precision_metric: 0.6068 - val_keras_f2_metric: 0.4805\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 45/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4578 - sparse_categorical_accuracy: 0.8037 - keras_recall_metric: 0.6658 - keras_precision_metric: 0.5473 - keras_f2_metric: 0.6379 - val_loss: 0.5466 - val_sparse_categorical_accuracy: 0.8138 - val_keras_recall_metric: 0.4339 - val_keras_precision_metric: 0.6215 - val_keras_f2_metric: 0.4617\n", + "Epoch 46/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4545 - sparse_categorical_accuracy: 0.8054 - keras_recall_metric: 0.6858 - keras_precision_metric: 0.5601 - keras_f2_metric: 0.6563 - val_loss: 0.5395 - val_sparse_categorical_accuracy: 0.8164 - val_keras_recall_metric: 0.4744 - val_keras_precision_metric: 0.6180 - val_keras_f2_metric: 0.4976\n", + "Epoch 47/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4509 - sparse_categorical_accuracy: 0.8068 - keras_recall_metric: 0.6708 - keras_precision_metric: 0.5658 - keras_f2_metric: 0.6461 - val_loss: 0.5380 - val_sparse_categorical_accuracy: 0.8223 - val_keras_recall_metric: 0.4834 - val_keras_precision_metric: 0.6368 - val_keras_f2_metric: 0.5079\n", + "Epoch 48/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4500 - sparse_categorical_accuracy: 0.8027 - keras_recall_metric: 0.6719 - keras_precision_metric: 0.5542 - keras_f2_metric: 0.6444 - val_loss: 0.5381 - val_sparse_categorical_accuracy: 0.8015 - val_keras_recall_metric: 0.5482 - val_keras_precision_metric: 0.5584 - val_keras_f2_metric: 0.5502\n", + "Epoch 49/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4488 - sparse_categorical_accuracy: 0.8016 - keras_recall_metric: 0.6867 - keras_precision_metric: 0.5483 - keras_f2_metric: 0.6535 - val_loss: 0.5216 - val_sparse_categorical_accuracy: 0.8267 - val_keras_recall_metric: 0.3915 - val_keras_precision_metric: 0.7042 - val_keras_f2_metric: 0.4296\n", + "Epoch 50/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4454 - sparse_categorical_accuracy: 0.8054 - keras_recall_metric: 0.6571 - keras_precision_metric: 0.5523 - keras_f2_metric: 0.6330 - val_loss: 0.5300 - val_sparse_categorical_accuracy: 0.7982 - val_keras_recall_metric: 0.5723 - val_keras_precision_metric: 0.5479 - val_keras_f2_metric: 0.5673\n", + "Epoch 51/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4421 - sparse_categorical_accuracy: 0.8038 - keras_recall_metric: 0.6850 - keras_precision_metric: 0.5516 - keras_f2_metric: 0.6528 - val_loss: 0.5091 - val_sparse_categorical_accuracy: 0.8259 - val_keras_recall_metric: 0.4587 - val_keras_precision_metric: 0.6611 - val_keras_f2_metric: 0.4887\n", + "Epoch 52/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4373 - sparse_categorical_accuracy: 0.8112 - keras_recall_metric: 0.6345 - keras_precision_metric: 0.5638 - keras_f2_metric: 0.6186 - val_loss: 0.5111 - val_sparse_categorical_accuracy: 0.8127 - val_keras_recall_metric: 0.4982 - val_keras_precision_metric: 0.5991 - val_keras_f2_metric: 0.5156\n", + "Epoch 53/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4345 - sparse_categorical_accuracy: 0.8049 - keras_recall_metric: 0.6771 - keras_precision_metric: 0.5503 - keras_f2_metric: 0.6465 - val_loss: 0.5097 - val_sparse_categorical_accuracy: 0.8101 - val_keras_recall_metric: 0.5203 - val_keras_precision_metric: 0.5863 - val_keras_f2_metric: 0.5323\n", + "Epoch 54/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4306 - sparse_categorical_accuracy: 0.8043 - keras_recall_metric: 0.6266 - keras_precision_metric: 0.5683 - keras_f2_metric: 0.6137 - val_loss: 0.4918 - val_sparse_categorical_accuracy: 0.8264 - val_keras_recall_metric: 0.4859 - val_keras_precision_metric: 0.6514 - val_keras_f2_metric: 0.5119\n", + "Epoch 55/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4295 - sparse_categorical_accuracy: 0.8114 - keras_recall_metric: 0.6652 - keras_precision_metric: 0.5622 - keras_f2_metric: 0.6416 - val_loss: 0.5413 - val_sparse_categorical_accuracy: 0.7737 - val_keras_recall_metric: 0.6675 - val_keras_precision_metric: 0.4966 - val_keras_f2_metric: 0.6245\n", + "Epoch 56/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4344 - sparse_categorical_accuracy: 0.7964 - keras_recall_metric: 0.5970 - keras_precision_metric: 0.5490 - keras_f2_metric: 0.5858 - val_loss: 0.5094 - val_sparse_categorical_accuracy: 0.8219 - val_keras_recall_metric: 0.4716 - val_keras_precision_metric: 0.6397 - val_keras_f2_metric: 0.4978\n", + "Epoch 57/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4304 - sparse_categorical_accuracy: 0.8089 - keras_recall_metric: 0.6181 - keras_precision_metric: 0.5621 - keras_f2_metric: 0.6055 - val_loss: 0.4995 - val_sparse_categorical_accuracy: 0.8129 - val_keras_recall_metric: 0.5261 - val_keras_precision_metric: 0.5935 - val_keras_f2_metric: 0.5383\n", + "Epoch 58/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4241 - sparse_categorical_accuracy: 0.8054 - keras_recall_metric: 0.6230 - keras_precision_metric: 0.5580 - keras_f2_metric: 0.6084 - val_loss: 0.4871 - val_sparse_categorical_accuracy: 0.8117 - val_keras_recall_metric: 0.5225 - val_keras_precision_metric: 0.5906 - val_keras_f2_metric: 0.5348\n", + "Epoch 59/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4219 - sparse_categorical_accuracy: 0.8085 - keras_recall_metric: 0.6547 - keras_precision_metric: 0.5608 - keras_f2_metric: 0.6318 - val_loss: 0.4796 - val_sparse_categorical_accuracy: 0.8142 - val_keras_recall_metric: 0.5264 - val_keras_precision_metric: 0.5973 - val_keras_f2_metric: 0.5392\n", + "Epoch 60/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4182 - sparse_categorical_accuracy: 0.8127 - keras_recall_metric: 0.6118 - keras_precision_metric: 0.5766 - keras_f2_metric: 0.6041 - val_loss: 0.4719 - val_sparse_categorical_accuracy: 0.8183 - val_keras_recall_metric: 0.5183 - val_keras_precision_metric: 0.6120 - val_keras_f2_metric: 0.5347\n", + "Epoch 61/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4157 - sparse_categorical_accuracy: 0.8103 - keras_recall_metric: 0.6214 - keras_precision_metric: 0.5696 - keras_f2_metric: 0.6102 - val_loss: 0.4865 - val_sparse_categorical_accuracy: 0.8080 - val_keras_recall_metric: 0.5772 - val_keras_precision_metric: 0.5711 - val_keras_f2_metric: 0.5760\n", + "Epoch 62/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4128 - sparse_categorical_accuracy: 0.8071 - keras_recall_metric: 0.6228 - keras_precision_metric: 0.5537 - keras_f2_metric: 0.6070 - val_loss: 0.4603 - val_sparse_categorical_accuracy: 0.8273 - val_keras_recall_metric: 0.5085 - val_keras_precision_metric: 0.6460 - val_keras_f2_metric: 0.5311\n", + "Epoch 63/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4099 - sparse_categorical_accuracy: 0.8126 - keras_recall_metric: 0.6083 - keras_precision_metric: 0.5885 - keras_f2_metric: 0.6041 - val_loss: 0.4785 - val_sparse_categorical_accuracy: 0.8098 - val_keras_recall_metric: 0.5571 - val_keras_precision_metric: 0.5790 - val_keras_f2_metric: 0.5614\n", + "Epoch 64/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4080 - sparse_categorical_accuracy: 0.8067 - keras_recall_metric: 0.6085 - keras_precision_metric: 0.5663 - keras_f2_metric: 0.5994 - val_loss: 0.4633 - val_sparse_categorical_accuracy: 0.8208 - val_keras_recall_metric: 0.5127 - val_keras_precision_metric: 0.6219 - val_keras_f2_metric: 0.5313\n", + "Epoch 65/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4078 - sparse_categorical_accuracy: 0.8052 - keras_recall_metric: 0.6245 - keras_precision_metric: 0.5624 - keras_f2_metric: 0.6109 - val_loss: 0.4768 - val_sparse_categorical_accuracy: 0.8011 - val_keras_recall_metric: 0.5803 - val_keras_precision_metric: 0.5540 - val_keras_f2_metric: 0.5748\n", + "Epoch 66/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4052 - sparse_categorical_accuracy: 0.8059 - keras_recall_metric: 0.6000 - keras_precision_metric: 0.5692 - keras_f2_metric: 0.5931 - val_loss: 0.4494 - val_sparse_categorical_accuracy: 0.8276 - val_keras_recall_metric: 0.5281 - val_keras_precision_metric: 0.6402 - val_keras_f2_metric: 0.5473\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 67/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4016 - sparse_categorical_accuracy: 0.8164 - keras_recall_metric: 0.6079 - keras_precision_metric: 0.5917 - keras_f2_metric: 0.6044 - val_loss: 0.4727 - val_sparse_categorical_accuracy: 0.8046 - val_keras_recall_metric: 0.5834 - val_keras_precision_metric: 0.5620 - val_keras_f2_metric: 0.5790\n", + "Epoch 68/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4006 - sparse_categorical_accuracy: 0.8046 - keras_recall_metric: 0.5977 - keras_precision_metric: 0.5780 - keras_f2_metric: 0.5933 - val_loss: 0.4434 - val_sparse_categorical_accuracy: 0.8302 - val_keras_recall_metric: 0.5147 - val_keras_precision_metric: 0.6542 - val_keras_f2_metric: 0.5376\n", + "Epoch 69/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3969 - sparse_categorical_accuracy: 0.8155 - keras_recall_metric: 0.5958 - keras_precision_metric: 0.6014 - keras_f2_metric: 0.5965 - val_loss: 0.4580 - val_sparse_categorical_accuracy: 0.8090 - val_keras_recall_metric: 0.5609 - val_keras_precision_metric: 0.5761 - val_keras_f2_metric: 0.5638\n", + "Epoch 70/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3948 - sparse_categorical_accuracy: 0.8074 - keras_recall_metric: 0.6079 - keras_precision_metric: 0.5662 - keras_f2_metric: 0.5988 - val_loss: 0.4440 - val_sparse_categorical_accuracy: 0.8228 - val_keras_recall_metric: 0.5389 - val_keras_precision_metric: 0.6210 - val_keras_f2_metric: 0.5535\n", + "Epoch 71/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3927 - sparse_categorical_accuracy: 0.8155 - keras_recall_metric: 0.6053 - keras_precision_metric: 0.6151 - keras_f2_metric: 0.6068 - val_loss: 0.4428 - val_sparse_categorical_accuracy: 0.8174 - val_keras_recall_metric: 0.5388 - val_keras_precision_metric: 0.6040 - val_keras_f2_metric: 0.5507\n", + "Epoch 72/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3908 - sparse_categorical_accuracy: 0.8120 - keras_recall_metric: 0.6016 - keras_precision_metric: 0.5953 - keras_f2_metric: 0.6003 - val_loss: 0.4341 - val_sparse_categorical_accuracy: 0.8204 - val_keras_recall_metric: 0.5207 - val_keras_precision_metric: 0.6183 - val_keras_f2_metric: 0.5377\n", + "Epoch 73/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3894 - sparse_categorical_accuracy: 0.8147 - keras_recall_metric: 0.5903 - keras_precision_metric: 0.5959 - keras_f2_metric: 0.5911 - val_loss: 0.4378 - val_sparse_categorical_accuracy: 0.8292 - val_keras_recall_metric: 0.5388 - val_keras_precision_metric: 0.6421 - val_keras_f2_metric: 0.5567\n", + "Epoch 74/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3880 - sparse_categorical_accuracy: 0.8199 - keras_recall_metric: 0.5769 - keras_precision_metric: 0.5938 - keras_f2_metric: 0.5800 - val_loss: 0.4334 - val_sparse_categorical_accuracy: 0.8209 - val_keras_recall_metric: 0.5365 - val_keras_precision_metric: 0.6156 - val_keras_f2_metric: 0.5507\n", + "Epoch 75/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3858 - sparse_categorical_accuracy: 0.8177 - keras_recall_metric: 0.5994 - keras_precision_metric: 0.5852 - keras_f2_metric: 0.5963 - val_loss: 0.4508 - val_sparse_categorical_accuracy: 0.8123 - val_keras_recall_metric: 0.5669 - val_keras_precision_metric: 0.5840 - val_keras_f2_metric: 0.5702\n", + "Epoch 76/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3865 - sparse_categorical_accuracy: 0.8194 - keras_recall_metric: 0.5868 - keras_precision_metric: 0.5980 - keras_f2_metric: 0.5887 - val_loss: 0.4242 - val_sparse_categorical_accuracy: 0.8257 - val_keras_recall_metric: 0.5211 - val_keras_precision_metric: 0.6360 - val_keras_f2_metric: 0.5406\n", + "Epoch 77/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3833 - sparse_categorical_accuracy: 0.8193 - keras_recall_metric: 0.5871 - keras_precision_metric: 0.5859 - keras_f2_metric: 0.5866 - val_loss: 0.4431 - val_sparse_categorical_accuracy: 0.8163 - val_keras_recall_metric: 0.5649 - val_keras_precision_metric: 0.5952 - val_keras_f2_metric: 0.5707\n", + "Epoch 78/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3818 - sparse_categorical_accuracy: 0.8266 - keras_recall_metric: 0.5886 - keras_precision_metric: 0.6246 - keras_f2_metric: 0.5953 - val_loss: 0.4302 - val_sparse_categorical_accuracy: 0.8220 - val_keras_recall_metric: 0.5380 - val_keras_precision_metric: 0.6184 - val_keras_f2_metric: 0.5524\n", + "Epoch 79/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3790 - sparse_categorical_accuracy: 0.8188 - keras_recall_metric: 0.5921 - keras_precision_metric: 0.6055 - keras_f2_metric: 0.5945 - val_loss: 0.4298 - val_sparse_categorical_accuracy: 0.8203 - val_keras_recall_metric: 0.5503 - val_keras_precision_metric: 0.6100 - val_keras_f2_metric: 0.5613\n", + "Epoch 80/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3778 - sparse_categorical_accuracy: 0.8214 - keras_recall_metric: 0.6000 - keras_precision_metric: 0.6349 - keras_f2_metric: 0.6062 - val_loss: 0.4253 - val_sparse_categorical_accuracy: 0.8250 - val_keras_recall_metric: 0.5390 - val_keras_precision_metric: 0.6280 - val_keras_f2_metric: 0.5548\n", + "Epoch 81/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3744 - sparse_categorical_accuracy: 0.8267 - keras_recall_metric: 0.6080 - keras_precision_metric: 0.6295 - keras_f2_metric: 0.6117 - val_loss: 0.4530 - val_sparse_categorical_accuracy: 0.8000 - val_keras_recall_metric: 0.5850 - val_keras_precision_metric: 0.5509 - val_keras_f2_metric: 0.5779\n", + "Epoch 82/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3752 - sparse_categorical_accuracy: 0.8207 - keras_recall_metric: 0.5874 - keras_precision_metric: 0.6136 - keras_f2_metric: 0.5923 - val_loss: 0.4133 - val_sparse_categorical_accuracy: 0.8310 - val_keras_recall_metric: 0.5216 - val_keras_precision_metric: 0.6547 - val_keras_f2_metric: 0.5437\n", + "Epoch 83/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3727 - sparse_categorical_accuracy: 0.8280 - keras_recall_metric: 0.5780 - keras_precision_metric: 0.6126 - keras_f2_metric: 0.5844 - val_loss: 0.4258 - val_sparse_categorical_accuracy: 0.8201 - val_keras_recall_metric: 0.5505 - val_keras_precision_metric: 0.6096 - val_keras_f2_metric: 0.5614\n", + "Epoch 84/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3713 - sparse_categorical_accuracy: 0.8294 - keras_recall_metric: 0.5747 - keras_precision_metric: 0.6132 - keras_f2_metric: 0.5811 - val_loss: 0.4419 - val_sparse_categorical_accuracy: 0.8106 - val_keras_recall_metric: 0.5576 - val_keras_precision_metric: 0.5809 - val_keras_f2_metric: 0.5621\n", + "Epoch 85/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3700 - sparse_categorical_accuracy: 0.8337 - keras_recall_metric: 0.5738 - keras_precision_metric: 0.6757 - keras_f2_metric: 0.5915 - val_loss: 0.4023 - val_sparse_categorical_accuracy: 0.8420 - val_keras_recall_metric: 0.5162 - val_keras_precision_metric: 0.7003 - val_keras_f2_metric: 0.5449\n", + "Epoch 86/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3686 - sparse_categorical_accuracy: 0.8311 - keras_recall_metric: 0.5785 - keras_precision_metric: 0.6237 - keras_f2_metric: 0.5870 - val_loss: 0.4242 - val_sparse_categorical_accuracy: 0.8139 - val_keras_recall_metric: 0.5492 - val_keras_precision_metric: 0.5917 - val_keras_f2_metric: 0.5572\n", + "Epoch 87/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3697 - sparse_categorical_accuracy: 0.8332 - keras_recall_metric: 0.5475 - keras_precision_metric: 0.6282 - keras_f2_metric: 0.5619 - val_loss: 0.4168 - val_sparse_categorical_accuracy: 0.8274 - val_keras_recall_metric: 0.5348 - val_keras_precision_metric: 0.6374 - val_keras_f2_metric: 0.5526\n", + "Epoch 88/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3669 - sparse_categorical_accuracy: 0.8404 - keras_recall_metric: 0.5765 - keras_precision_metric: 0.6852 - keras_f2_metric: 0.5953 - val_loss: 0.4317 - val_sparse_categorical_accuracy: 0.8168 - val_keras_recall_metric: 0.5582 - val_keras_precision_metric: 0.5981 - val_keras_f2_metric: 0.5657\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 89/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3666 - sparse_categorical_accuracy: 0.8341 - keras_recall_metric: 0.5562 - keras_precision_metric: 0.6386 - keras_f2_metric: 0.5708 - val_loss: 0.4019 - val_sparse_categorical_accuracy: 0.8438 - val_keras_recall_metric: 0.5044 - val_keras_precision_metric: 0.7149 - val_keras_f2_metric: 0.5360\n", + "Epoch 90/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3670 - sparse_categorical_accuracy: 0.8358 - keras_recall_metric: 0.5699 - keras_precision_metric: 0.6917 - keras_f2_metric: 0.5898 - val_loss: 0.4228 - val_sparse_categorical_accuracy: 0.8120 - val_keras_recall_metric: 0.5368 - val_keras_precision_metric: 0.5886 - val_keras_f2_metric: 0.5465\n", + "Epoch 91/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3653 - sparse_categorical_accuracy: 0.8370 - keras_recall_metric: 0.5682 - keras_precision_metric: 0.6495 - keras_f2_metric: 0.5823 - val_loss: 0.4091 - val_sparse_categorical_accuracy: 0.8225 - val_keras_recall_metric: 0.5391 - val_keras_precision_metric: 0.6200 - val_keras_f2_metric: 0.5536\n", + "Epoch 92/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3626 - sparse_categorical_accuracy: 0.8365 - keras_recall_metric: 0.5905 - keras_precision_metric: 0.7202 - keras_f2_metric: 0.6119 - val_loss: 0.4074 - val_sparse_categorical_accuracy: 0.8224 - val_keras_recall_metric: 0.5356 - val_keras_precision_metric: 0.6206 - val_keras_f2_metric: 0.5507\n", + "Epoch 93/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3598 - sparse_categorical_accuracy: 0.8334 - keras_recall_metric: 0.6053 - keras_precision_metric: 0.6993 - keras_f2_metric: 0.6219 - val_loss: 0.4210 - val_sparse_categorical_accuracy: 0.8130 - val_keras_recall_metric: 0.5597 - val_keras_precision_metric: 0.5872 - val_keras_f2_metric: 0.5650\n", + "Epoch 94/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3584 - sparse_categorical_accuracy: 0.8383 - keras_recall_metric: 0.5885 - keras_precision_metric: 0.6878 - keras_f2_metric: 0.6059 - val_loss: 0.3947 - val_sparse_categorical_accuracy: 0.8423 - val_keras_recall_metric: 0.5181 - val_keras_precision_metric: 0.7007 - val_keras_f2_metric: 0.5466\n", + "Epoch 95/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3563 - sparse_categorical_accuracy: 0.8416 - keras_recall_metric: 0.5749 - keras_precision_metric: 0.7138 - keras_f2_metric: 0.5973 - val_loss: 0.4276 - val_sparse_categorical_accuracy: 0.8087 - val_keras_recall_metric: 0.5596 - val_keras_precision_metric: 0.5756 - val_keras_f2_metric: 0.5628\n", + "Epoch 96/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3559 - sparse_categorical_accuracy: 0.8408 - keras_recall_metric: 0.5822 - keras_precision_metric: 0.6939 - keras_f2_metric: 0.6013 - val_loss: 0.3955 - val_sparse_categorical_accuracy: 0.8333 - val_keras_recall_metric: 0.5314 - val_keras_precision_metric: 0.6592 - val_keras_f2_metric: 0.5528\n", + "Epoch 97/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3539 - sparse_categorical_accuracy: 0.8415 - keras_recall_metric: 0.5679 - keras_precision_metric: 0.7019 - keras_f2_metric: 0.5900 - val_loss: 0.3930 - val_sparse_categorical_accuracy: 0.8319 - val_keras_recall_metric: 0.5320 - val_keras_precision_metric: 0.6540 - val_keras_f2_metric: 0.5526\n", + "Epoch 98/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3538 - sparse_categorical_accuracy: 0.8406 - keras_recall_metric: 0.5662 - keras_precision_metric: 0.6463 - keras_f2_metric: 0.5804 - val_loss: 0.4141 - val_sparse_categorical_accuracy: 0.8186 - val_keras_recall_metric: 0.5428 - val_keras_precision_metric: 0.6067 - val_keras_f2_metric: 0.5545\n", + "Epoch 99/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3554 - sparse_categorical_accuracy: 0.8495 - keras_recall_metric: 0.5529 - keras_precision_metric: 0.6874 - keras_f2_metric: 0.5751 - val_loss: 0.4004 - val_sparse_categorical_accuracy: 0.8291 - val_keras_recall_metric: 0.5265 - val_keras_precision_metric: 0.6460 - val_keras_f2_metric: 0.5468\n", + "Epoch 100/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3525 - sparse_categorical_accuracy: 0.8492 - keras_recall_metric: 0.5674 - keras_precision_metric: 0.6966 - keras_f2_metric: 0.5890 - val_loss: 0.4027 - val_sparse_categorical_accuracy: 0.8299 - val_keras_recall_metric: 0.5465 - val_keras_precision_metric: 0.6419 - val_keras_f2_metric: 0.5633\n", + "Epoch 101/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3507 - sparse_categorical_accuracy: 0.8514 - keras_recall_metric: 0.5753 - keras_precision_metric: 0.7053 - keras_f2_metric: 0.5971 - val_loss: 0.4022 - val_sparse_categorical_accuracy: 0.8275 - val_keras_recall_metric: 0.5256 - val_keras_precision_metric: 0.6407 - val_keras_f2_metric: 0.5452\n", + "Epoch 102/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3515 - sparse_categorical_accuracy: 0.8523 - keras_recall_metric: 0.5625 - keras_precision_metric: 0.6846 - keras_f2_metric: 0.5824 - val_loss: 0.4159 - val_sparse_categorical_accuracy: 0.8177 - val_keras_recall_metric: 0.5398 - val_keras_precision_metric: 0.6048 - val_keras_f2_metric: 0.5516\n", + "Epoch 103/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3535 - sparse_categorical_accuracy: 0.8576 - keras_recall_metric: 0.5688 - keras_precision_metric: 0.7640 - keras_f2_metric: 0.5992 - val_loss: 0.4023 - val_sparse_categorical_accuracy: 0.8441 - val_keras_recall_metric: 0.5214 - val_keras_precision_metric: 0.7066 - val_keras_f2_metric: 0.5502\n", + "Epoch 104/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3539 - sparse_categorical_accuracy: 0.8597 - keras_recall_metric: 0.5623 - keras_precision_metric: 0.7632 - keras_f2_metric: 0.5932 - val_loss: 0.4119 - val_sparse_categorical_accuracy: 0.8213 - val_keras_recall_metric: 0.5320 - val_keras_precision_metric: 0.6180 - val_keras_f2_metric: 0.5472\n", + "Epoch 105/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3505 - sparse_categorical_accuracy: 0.8546 - keras_recall_metric: 0.5463 - keras_precision_metric: 0.7357 - keras_f2_metric: 0.5754 - val_loss: 0.3822 - val_sparse_categorical_accuracy: 0.8473 - val_keras_recall_metric: 0.5164 - val_keras_precision_metric: 0.7235 - val_keras_f2_metric: 0.5478\n", + "Epoch 106/200\n", + "100/100 [==============================] - 1s 6ms/sample - loss: 0.3494 - sparse_categorical_accuracy: 0.8506 - keras_recall_metric: 0.5645 - keras_precision_metric: 0.6800 - keras_f2_metric: 0.5832 - val_loss: 0.4184 - val_sparse_categorical_accuracy: 0.8135 - val_keras_recall_metric: 0.5376 - val_keras_precision_metric: 0.5927 - val_keras_f2_metric: 0.5478\n", + "Epoch 107/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3493 - sparse_categorical_accuracy: 0.8650 - keras_recall_metric: 0.5406 - keras_precision_metric: 0.7897 - keras_f2_metric: 0.5767 - val_loss: 0.3819 - val_sparse_categorical_accuracy: 0.8433 - val_keras_recall_metric: 0.5193 - val_keras_precision_metric: 0.7044 - val_keras_f2_metric: 0.5481\n", + "Epoch 108/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3469 - sparse_categorical_accuracy: 0.8591 - keras_recall_metric: 0.5937 - keras_precision_metric: 0.7922 - keras_f2_metric: 0.6244 - val_loss: 0.4182 - val_sparse_categorical_accuracy: 0.8111 - val_keras_recall_metric: 0.5617 - val_keras_precision_metric: 0.5817 - val_keras_f2_metric: 0.5656\n", + "Epoch 109/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3463 - sparse_categorical_accuracy: 0.8608 - keras_recall_metric: 0.5541 - keras_precision_metric: 0.7199 - keras_f2_metric: 0.5804 - val_loss: 0.3970 - val_sparse_categorical_accuracy: 0.8269 - val_keras_recall_metric: 0.5287 - val_keras_precision_metric: 0.6374 - val_keras_f2_metric: 0.5473\n", + "Epoch 110/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3451 - sparse_categorical_accuracy: 0.8709 - keras_recall_metric: 0.5667 - keras_precision_metric: 0.8395 - keras_f2_metric: 0.6060 - val_loss: 0.3893 - val_sparse_categorical_accuracy: 0.8326 - val_keras_recall_metric: 0.5312 - val_keras_precision_metric: 0.6565 - val_keras_f2_metric: 0.5523\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 111/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3430 - sparse_categorical_accuracy: 0.8654 - keras_recall_metric: 0.5634 - keras_precision_metric: 0.7888 - keras_f2_metric: 0.5974 - val_loss: 0.3800 - val_sparse_categorical_accuracy: 0.8347 - val_keras_recall_metric: 0.5414 - val_keras_precision_metric: 0.6602 - val_keras_f2_metric: 0.5616\n", + "Epoch 112/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3415 - sparse_categorical_accuracy: 0.8569 - keras_recall_metric: 0.5697 - keras_precision_metric: 0.7362 - keras_f2_metric: 0.5967 - val_loss: 0.3849 - val_sparse_categorical_accuracy: 0.8307 - val_keras_recall_metric: 0.5340 - val_keras_precision_metric: 0.6490 - val_keras_f2_metric: 0.5537\n", + "Epoch 113/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3398 - sparse_categorical_accuracy: 0.8572 - keras_recall_metric: 0.5661 - keras_precision_metric: 0.7362 - keras_f2_metric: 0.5934 - val_loss: 0.3862 - val_sparse_categorical_accuracy: 0.8296 - val_keras_recall_metric: 0.5307 - val_keras_precision_metric: 0.6463 - val_keras_f2_metric: 0.5504\n", + "Epoch 114/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3393 - sparse_categorical_accuracy: 0.8631 - keras_recall_metric: 0.5692 - keras_precision_metric: 0.7476 - keras_f2_metric: 0.5971 - val_loss: 0.4016 - val_sparse_categorical_accuracy: 0.8190 - val_keras_recall_metric: 0.5565 - val_keras_precision_metric: 0.6047 - val_keras_f2_metric: 0.5655\n", + "Epoch 115/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3386 - sparse_categorical_accuracy: 0.8722 - keras_recall_metric: 0.5563 - keras_precision_metric: 0.8143 - keras_f2_metric: 0.5938 - val_loss: 0.3684 - val_sparse_categorical_accuracy: 0.8477 - val_keras_recall_metric: 0.5234 - val_keras_precision_metric: 0.7210 - val_keras_f2_metric: 0.5537\n", + "Epoch 116/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3386 - sparse_categorical_accuracy: 0.8561 - keras_recall_metric: 0.5668 - keras_precision_metric: 0.7598 - keras_f2_metric: 0.5964 - val_loss: 0.3692 - val_sparse_categorical_accuracy: 0.8422 - val_keras_recall_metric: 0.5335 - val_keras_precision_metric: 0.6922 - val_keras_f2_metric: 0.5591\n", + "Epoch 117/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3370 - sparse_categorical_accuracy: 0.8590 - keras_recall_metric: 0.5605 - keras_precision_metric: 0.7449 - keras_f2_metric: 0.5892 - val_loss: 0.3826 - val_sparse_categorical_accuracy: 0.8401 - val_keras_recall_metric: 0.5397 - val_keras_precision_metric: 0.6809 - val_keras_f2_metric: 0.5631\n", + "Epoch 118/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3358 - sparse_categorical_accuracy: 0.8634 - keras_recall_metric: 0.5715 - keras_precision_metric: 0.7621 - keras_f2_metric: 0.6015 - val_loss: 0.3907 - val_sparse_categorical_accuracy: 0.8250 - val_keras_recall_metric: 0.5402 - val_keras_precision_metric: 0.6275 - val_keras_f2_metric: 0.5556\n", + "Epoch 119/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3345 - sparse_categorical_accuracy: 0.8671 - keras_recall_metric: 0.5606 - keras_precision_metric: 0.7683 - keras_f2_metric: 0.5924 - val_loss: 0.3640 - val_sparse_categorical_accuracy: 0.8580 - val_keras_recall_metric: 0.5169 - val_keras_precision_metric: 0.7751 - val_keras_f2_metric: 0.5538\n", + "Epoch 120/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3339 - sparse_categorical_accuracy: 0.8636 - keras_recall_metric: 0.5717 - keras_precision_metric: 0.7849 - keras_f2_metric: 0.6041 - val_loss: 0.3875 - val_sparse_categorical_accuracy: 0.8274 - val_keras_recall_metric: 0.5456 - val_keras_precision_metric: 0.6338 - val_keras_f2_metric: 0.5612\n", + "Epoch 121/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3336 - sparse_categorical_accuracy: 0.8648 - keras_recall_metric: 0.5629 - keras_precision_metric: 0.7609 - keras_f2_metric: 0.5936 - val_loss: 0.3698 - val_sparse_categorical_accuracy: 0.8458 - val_keras_recall_metric: 0.5284 - val_keras_precision_metric: 0.7098 - val_keras_f2_metric: 0.5568\n", + "Epoch 122/200\n", + "100/100 [==============================] - 1s 6ms/sample - loss: 0.3325 - sparse_categorical_accuracy: 0.8647 - keras_recall_metric: 0.5803 - keras_precision_metric: 0.7276 - keras_f2_metric: 0.6021 - val_loss: 0.4350 - val_sparse_categorical_accuracy: 0.7993 - val_keras_recall_metric: 0.5661 - val_keras_precision_metric: 0.5511 - val_keras_f2_metric: 0.5631\n", + "Epoch 123/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3392 - sparse_categorical_accuracy: 0.8813 - keras_recall_metric: 0.5555 - keras_precision_metric: 0.8769 - keras_f2_metric: 0.5994 - val_loss: 0.3658 - val_sparse_categorical_accuracy: 0.8645 - val_keras_recall_metric: 0.5120 - val_keras_precision_metric: 0.8147 - val_keras_f2_metric: 0.5531\n", + "Epoch 124/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3368 - sparse_categorical_accuracy: 0.8610 - keras_recall_metric: 0.5738 - keras_precision_metric: 0.7890 - keras_f2_metric: 0.6065 - val_loss: 0.3912 - val_sparse_categorical_accuracy: 0.8242 - val_keras_recall_metric: 0.5451 - val_keras_precision_metric: 0.6237 - val_keras_f2_metric: 0.5592\n", + "Epoch 125/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3338 - sparse_categorical_accuracy: 0.8714 - keras_recall_metric: 0.5636 - keras_precision_metric: 0.8174 - keras_f2_metric: 0.6008 - val_loss: 0.3729 - val_sparse_categorical_accuracy: 0.8414 - val_keras_recall_metric: 0.5340 - val_keras_precision_metric: 0.6888 - val_keras_f2_metric: 0.5592\n", + "Epoch 126/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3305 - sparse_categorical_accuracy: 0.8736 - keras_recall_metric: 0.5530 - keras_precision_metric: 0.7922 - keras_f2_metric: 0.5884 - val_loss: 0.3663 - val_sparse_categorical_accuracy: 0.8464 - val_keras_recall_metric: 0.5176 - val_keras_precision_metric: 0.7189 - val_keras_f2_metric: 0.5483\n", + "Epoch 127/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3332 - sparse_categorical_accuracy: 0.8636 - keras_recall_metric: 0.5554 - keras_precision_metric: 0.8056 - keras_f2_metric: 0.5915 - val_loss: 0.3937 - val_sparse_categorical_accuracy: 0.8275 - val_keras_recall_metric: 0.5295 - val_keras_precision_metric: 0.6392 - val_keras_f2_metric: 0.5483\n", + "Epoch 128/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3311 - sparse_categorical_accuracy: 0.8744 - keras_recall_metric: 0.5569 - keras_precision_metric: 0.8084 - keras_f2_metric: 0.5938 - val_loss: 0.3614 - val_sparse_categorical_accuracy: 0.8541 - val_keras_recall_metric: 0.5159 - val_keras_precision_metric: 0.7560 - val_keras_f2_metric: 0.5509\n", + "Epoch 129/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3304 - sparse_categorical_accuracy: 0.8636 - keras_recall_metric: 0.5893 - keras_precision_metric: 0.8049 - keras_f2_metric: 0.6225 - val_loss: 0.3872 - val_sparse_categorical_accuracy: 0.8275 - val_keras_recall_metric: 0.5292 - val_keras_precision_metric: 0.6393 - val_keras_f2_metric: 0.5480\n", + "Epoch 130/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3295 - sparse_categorical_accuracy: 0.8747 - keras_recall_metric: 0.5454 - keras_precision_metric: 0.7986 - keras_f2_metric: 0.5822 - val_loss: 0.3593 - val_sparse_categorical_accuracy: 0.8483 - val_keras_recall_metric: 0.5250 - val_keras_precision_metric: 0.7229 - val_keras_f2_metric: 0.5554\n", + "Epoch 131/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3288 - sparse_categorical_accuracy: 0.8707 - keras_recall_metric: 0.5699 - keras_precision_metric: 0.8324 - keras_f2_metric: 0.6076 - val_loss: 0.3691 - val_sparse_categorical_accuracy: 0.8394 - val_keras_recall_metric: 0.5360 - val_keras_precision_metric: 0.6799 - val_keras_f2_metric: 0.5597\n", + "Epoch 132/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3274 - sparse_categorical_accuracy: 0.8700 - keras_recall_metric: 0.5825 - keras_precision_metric: 0.8328 - keras_f2_metric: 0.6194 - val_loss: 0.3762 - val_sparse_categorical_accuracy: 0.8324 - val_keras_recall_metric: 0.5453 - val_keras_precision_metric: 0.6508 - val_keras_f2_metric: 0.5636\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 133/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3264 - sparse_categorical_accuracy: 0.8737 - keras_recall_metric: 0.5741 - keras_precision_metric: 0.8235 - keras_f2_metric: 0.6109 - val_loss: 0.3650 - val_sparse_categorical_accuracy: 0.8533 - val_keras_recall_metric: 0.5368 - val_keras_precision_metric: 0.7377 - val_keras_f2_metric: 0.5677\n", + "Epoch 134/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3255 - sparse_categorical_accuracy: 0.8805 - keras_recall_metric: 0.5687 - keras_precision_metric: 0.8376 - keras_f2_metric: 0.6072 - val_loss: 0.3649 - val_sparse_categorical_accuracy: 0.8521 - val_keras_recall_metric: 0.5358 - val_keras_precision_metric: 0.7327 - val_keras_f2_metric: 0.5662\n", + "Epoch 135/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3238 - sparse_categorical_accuracy: 0.8761 - keras_recall_metric: 0.5687 - keras_precision_metric: 0.8440 - keras_f2_metric: 0.6084 - val_loss: 0.3656 - val_sparse_categorical_accuracy: 0.8459 - val_keras_recall_metric: 0.5275 - val_keras_precision_metric: 0.7106 - val_keras_f2_metric: 0.5562\n", + "Epoch 136/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3232 - sparse_categorical_accuracy: 0.8742 - keras_recall_metric: 0.5517 - keras_precision_metric: 0.7756 - keras_f2_metric: 0.5848 - val_loss: 0.3673 - val_sparse_categorical_accuracy: 0.8458 - val_keras_recall_metric: 0.5360 - val_keras_precision_metric: 0.7058 - val_keras_f2_metric: 0.5631\n", + "Epoch 137/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3234 - sparse_categorical_accuracy: 0.8811 - keras_recall_metric: 0.5604 - keras_precision_metric: 0.8509 - keras_f2_metric: 0.6013 - val_loss: 0.3604 - val_sparse_categorical_accuracy: 0.8585 - val_keras_recall_metric: 0.5279 - val_keras_precision_metric: 0.7686 - val_keras_f2_metric: 0.5631\n", + "Epoch 138/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3231 - sparse_categorical_accuracy: 0.8743 - keras_recall_metric: 0.5563 - keras_precision_metric: 0.7958 - keras_f2_metric: 0.5909 - val_loss: 0.3782 - val_sparse_categorical_accuracy: 0.8361 - val_keras_recall_metric: 0.5392 - val_keras_precision_metric: 0.6662 - val_keras_f2_metric: 0.5605\n", + "Epoch 139/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3216 - sparse_categorical_accuracy: 0.8799 - keras_recall_metric: 0.5595 - keras_precision_metric: 0.8574 - keras_f2_metric: 0.6011 - val_loss: 0.3541 - val_sparse_categorical_accuracy: 0.8702 - val_keras_recall_metric: 0.4992 - val_keras_precision_metric: 0.8647 - val_keras_f2_metric: 0.5453\n", + "Epoch 140/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3241 - sparse_categorical_accuracy: 0.8691 - keras_recall_metric: 0.5793 - keras_precision_metric: 0.8191 - keras_f2_metric: 0.6151 - val_loss: 0.3894 - val_sparse_categorical_accuracy: 0.8260 - val_keras_recall_metric: 0.5476 - val_keras_precision_metric: 0.6286 - val_keras_f2_metric: 0.5620\n", + "Epoch 141/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3229 - sparse_categorical_accuracy: 0.8788 - keras_recall_metric: 0.5637 - keras_precision_metric: 0.8591 - keras_f2_metric: 0.6052 - val_loss: 0.3539 - val_sparse_categorical_accuracy: 0.8679 - val_keras_recall_metric: 0.5165 - val_keras_precision_metric: 0.8304 - val_keras_f2_metric: 0.5587\n", + "Epoch 142/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3227 - sparse_categorical_accuracy: 0.8710 - keras_recall_metric: 0.5686 - keras_precision_metric: 0.8287 - keras_f2_metric: 0.6062 - val_loss: 0.3773 - val_sparse_categorical_accuracy: 0.8332 - val_keras_recall_metric: 0.5515 - val_keras_precision_metric: 0.6514 - val_keras_f2_metric: 0.5689\n", + "Epoch 143/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3215 - sparse_categorical_accuracy: 0.8763 - keras_recall_metric: 0.5712 - keras_precision_metric: 0.8388 - keras_f2_metric: 0.6101 - val_loss: 0.3609 - val_sparse_categorical_accuracy: 0.8543 - val_keras_recall_metric: 0.5332 - val_keras_precision_metric: 0.7444 - val_keras_f2_metric: 0.5653\n", + "Epoch 144/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3208 - sparse_categorical_accuracy: 0.8757 - keras_recall_metric: 0.5660 - keras_precision_metric: 0.8052 - keras_f2_metric: 0.6016 - val_loss: 0.3641 - val_sparse_categorical_accuracy: 0.8382 - val_keras_recall_metric: 0.5406 - val_keras_precision_metric: 0.6733 - val_keras_f2_metric: 0.5628\n", + "Epoch 145/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3197 - sparse_categorical_accuracy: 0.8766 - keras_recall_metric: 0.5744 - keras_precision_metric: 0.8170 - keras_f2_metric: 0.6101 - val_loss: 0.3639 - val_sparse_categorical_accuracy: 0.8439 - val_keras_recall_metric: 0.5390 - val_keras_precision_metric: 0.6961 - val_keras_f2_metric: 0.5645\n", + "Epoch 146/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3180 - sparse_categorical_accuracy: 0.8817 - keras_recall_metric: 0.5428 - keras_precision_metric: 0.8507 - keras_f2_metric: 0.5849 - val_loss: 0.3463 - val_sparse_categorical_accuracy: 0.8678 - val_keras_recall_metric: 0.5032 - val_keras_precision_metric: 0.8444 - val_keras_f2_metric: 0.5474\n", + "Epoch 147/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3212 - sparse_categorical_accuracy: 0.8597 - keras_recall_metric: 0.5697 - keras_precision_metric: 0.7600 - keras_f2_metric: 0.5995 - val_loss: 0.3828 - val_sparse_categorical_accuracy: 0.8260 - val_keras_recall_metric: 0.5475 - val_keras_precision_metric: 0.6287 - val_keras_f2_metric: 0.5620\n", + "Epoch 148/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3201 - sparse_categorical_accuracy: 0.8807 - keras_recall_metric: 0.5542 - keras_precision_metric: 0.7939 - keras_f2_metric: 0.5879 - val_loss: 0.3591 - val_sparse_categorical_accuracy: 0.8564 - val_keras_recall_metric: 0.5333 - val_keras_precision_metric: 0.7546 - val_keras_f2_metric: 0.5666\n", + "Epoch 149/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3180 - sparse_categorical_accuracy: 0.8841 - keras_recall_metric: 0.5749 - keras_precision_metric: 0.8927 - keras_f2_metric: 0.6189 - val_loss: 0.3691 - val_sparse_categorical_accuracy: 0.8431 - val_keras_recall_metric: 0.5334 - val_keras_precision_metric: 0.6961 - val_keras_f2_metric: 0.5596\n", + "Epoch 150/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3169 - sparse_categorical_accuracy: 0.8823 - keras_recall_metric: 0.5506 - keras_precision_metric: 0.8508 - keras_f2_metric: 0.5923 - val_loss: 0.3466 - val_sparse_categorical_accuracy: 0.8642 - val_keras_recall_metric: 0.5230 - val_keras_precision_metric: 0.8026 - val_keras_f2_metric: 0.5621\n", + "Epoch 151/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3158 - sparse_categorical_accuracy: 0.8786 - keras_recall_metric: 0.5582 - keras_precision_metric: 0.8314 - keras_f2_metric: 0.5974 - val_loss: 0.3630 - val_sparse_categorical_accuracy: 0.8431 - val_keras_recall_metric: 0.5427 - val_keras_precision_metric: 0.6912 - val_keras_f2_metric: 0.5671\n", + "Epoch 152/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3155 - sparse_categorical_accuracy: 0.8778 - keras_recall_metric: 0.5474 - keras_precision_metric: 0.8051 - keras_f2_metric: 0.5847 - val_loss: 0.3523 - val_sparse_categorical_accuracy: 0.8607 - val_keras_recall_metric: 0.5251 - val_keras_precision_metric: 0.7821 - val_keras_f2_metric: 0.5621\n", + "Epoch 153/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3147 - sparse_categorical_accuracy: 0.8808 - keras_recall_metric: 0.5608 - keras_precision_metric: 0.8443 - keras_f2_metric: 0.6012 - val_loss: 0.3612 - val_sparse_categorical_accuracy: 0.8470 - val_keras_recall_metric: 0.5411 - val_keras_precision_metric: 0.7078 - val_keras_f2_metric: 0.5679\n", + "Epoch 154/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3147 - sparse_categorical_accuracy: 0.8807 - keras_recall_metric: 0.5551 - keras_precision_metric: 0.8261 - keras_f2_metric: 0.5939 - val_loss: 0.3600 - val_sparse_categorical_accuracy: 0.8539 - val_keras_recall_metric: 0.5400 - val_keras_precision_metric: 0.7384 - val_keras_f2_metric: 0.5707\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 155/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3131 - sparse_categorical_accuracy: 0.8851 - keras_recall_metric: 0.5714 - keras_precision_metric: 0.8815 - keras_f2_metric: 0.6146 - val_loss: 0.3496 - val_sparse_categorical_accuracy: 0.8637 - val_keras_recall_metric: 0.5350 - val_keras_precision_metric: 0.7892 - val_keras_f2_metric: 0.5719\n", + "Epoch 156/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3125 - sparse_categorical_accuracy: 0.8802 - keras_recall_metric: 0.5865 - keras_precision_metric: 0.8580 - keras_f2_metric: 0.6258 - val_loss: 0.3669 - val_sparse_categorical_accuracy: 0.8430 - val_keras_recall_metric: 0.5502 - val_keras_precision_metric: 0.6872 - val_keras_f2_metric: 0.5730\n", + "Epoch 157/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3127 - sparse_categorical_accuracy: 0.8848 - keras_recall_metric: 0.5847 - keras_precision_metric: 0.8997 - keras_f2_metric: 0.6285 - val_loss: 0.3472 - val_sparse_categorical_accuracy: 0.8649 - val_keras_recall_metric: 0.5256 - val_keras_precision_metric: 0.8041 - val_keras_f2_metric: 0.5647\n", + "Epoch 158/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3106 - sparse_categorical_accuracy: 0.8774 - keras_recall_metric: 0.5476 - keras_precision_metric: 0.8198 - keras_f2_metric: 0.5863 - val_loss: 0.3520 - val_sparse_categorical_accuracy: 0.8595 - val_keras_recall_metric: 0.5359 - val_keras_precision_metric: 0.7673 - val_keras_f2_metric: 0.5703\n", + "Epoch 159/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3116 - sparse_categorical_accuracy: 0.8784 - keras_recall_metric: 0.5735 - keras_precision_metric: 0.8452 - keras_f2_metric: 0.6129 - val_loss: 0.3611 - val_sparse_categorical_accuracy: 0.8499 - val_keras_recall_metric: 0.5459 - val_keras_precision_metric: 0.7172 - val_keras_f2_metric: 0.5733\n", + "Epoch 160/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3128 - sparse_categorical_accuracy: 0.8829 - keras_recall_metric: 0.6049 - keras_precision_metric: 0.8834 - keras_f2_metric: 0.6448 - val_loss: 0.3666 - val_sparse_categorical_accuracy: 0.8461 - val_keras_recall_metric: 0.5485 - val_keras_precision_metric: 0.7003 - val_keras_f2_metric: 0.5733\n", + "Epoch 161/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3130 - sparse_categorical_accuracy: 0.8850 - keras_recall_metric: 0.5635 - keras_precision_metric: 0.8910 - keras_f2_metric: 0.6081 - val_loss: 0.3447 - val_sparse_categorical_accuracy: 0.8704 - val_keras_recall_metric: 0.5005 - val_keras_precision_metric: 0.8644 - val_keras_f2_metric: 0.5465\n", + "Epoch 162/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3146 - sparse_categorical_accuracy: 0.8674 - keras_recall_metric: 0.5852 - keras_precision_metric: 0.8197 - keras_f2_metric: 0.6199 - val_loss: 0.3803 - val_sparse_categorical_accuracy: 0.8299 - val_keras_recall_metric: 0.5644 - val_keras_precision_metric: 0.6360 - val_keras_f2_metric: 0.5774\n", + "Epoch 163/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3123 - sparse_categorical_accuracy: 0.8813 - keras_recall_metric: 0.5650 - keras_precision_metric: 0.8277 - keras_f2_metric: 0.6030 - val_loss: 0.3460 - val_sparse_categorical_accuracy: 0.8634 - val_keras_recall_metric: 0.5359 - val_keras_precision_metric: 0.7871 - val_keras_f2_metric: 0.5724\n", + "Epoch 164/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3101 - sparse_categorical_accuracy: 0.8792 - keras_recall_metric: 0.5559 - keras_precision_metric: 0.8247 - keras_f2_metric: 0.5946 - val_loss: 0.3451 - val_sparse_categorical_accuracy: 0.8614 - val_keras_recall_metric: 0.5286 - val_keras_precision_metric: 0.7829 - val_keras_f2_metric: 0.5653\n", + "Epoch 165/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3111 - sparse_categorical_accuracy: 0.8776 - keras_recall_metric: 0.5540 - keras_precision_metric: 0.8133 - keras_f2_metric: 0.5918 - val_loss: 0.3602 - val_sparse_categorical_accuracy: 0.8526 - val_keras_recall_metric: 0.5444 - val_keras_precision_metric: 0.7297 - val_keras_f2_metric: 0.5736\n", + "Epoch 166/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3105 - sparse_categorical_accuracy: 0.8849 - keras_recall_metric: 0.5646 - keras_precision_metric: 0.8897 - keras_f2_metric: 0.6089 - val_loss: 0.3447 - val_sparse_categorical_accuracy: 0.8617 - val_keras_recall_metric: 0.5303 - val_keras_precision_metric: 0.7830 - val_keras_f2_metric: 0.5669\n", + "Epoch 167/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3104 - sparse_categorical_accuracy: 0.8705 - keras_recall_metric: 0.5691 - keras_precision_metric: 0.8240 - keras_f2_metric: 0.6059 - val_loss: 0.3508 - val_sparse_categorical_accuracy: 0.8549 - val_keras_recall_metric: 0.5436 - val_keras_precision_metric: 0.7404 - val_keras_f2_metric: 0.5742\n", + "Epoch 168/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3083 - sparse_categorical_accuracy: 0.8792 - keras_recall_metric: 0.5791 - keras_precision_metric: 0.8268 - keras_f2_metric: 0.6160 - val_loss: 0.3506 - val_sparse_categorical_accuracy: 0.8593 - val_keras_recall_metric: 0.5441 - val_keras_precision_metric: 0.7604 - val_keras_f2_metric: 0.5769\n", + "Epoch 169/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3076 - sparse_categorical_accuracy: 0.8814 - keras_recall_metric: 0.5867 - keras_precision_metric: 0.8719 - keras_f2_metric: 0.6277 - val_loss: 0.3477 - val_sparse_categorical_accuracy: 0.8587 - val_keras_recall_metric: 0.5375 - val_keras_precision_metric: 0.7624 - val_keras_f2_metric: 0.5712\n", + "Epoch 170/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3068 - sparse_categorical_accuracy: 0.8775 - keras_recall_metric: 0.5924 - keras_precision_metric: 0.8491 - keras_f2_metric: 0.6304 - val_loss: 0.3504 - val_sparse_categorical_accuracy: 0.8587 - val_keras_recall_metric: 0.5509 - val_keras_precision_metric: 0.7525 - val_keras_f2_metric: 0.5821\n", + "Epoch 171/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3059 - sparse_categorical_accuracy: 0.8828 - keras_recall_metric: 0.5797 - keras_precision_metric: 0.8700 - keras_f2_metric: 0.6211 - val_loss: 0.3422 - val_sparse_categorical_accuracy: 0.8608 - val_keras_recall_metric: 0.5421 - val_keras_precision_metric: 0.7690 - val_keras_f2_metric: 0.5761\n", + "Epoch 172/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3049 - sparse_categorical_accuracy: 0.8782 - keras_recall_metric: 0.5818 - keras_precision_metric: 0.8590 - keras_f2_metric: 0.6217 - val_loss: 0.3462 - val_sparse_categorical_accuracy: 0.8655 - val_keras_recall_metric: 0.5425 - val_keras_precision_metric: 0.7923 - val_keras_f2_metric: 0.5790\n", + "Epoch 173/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3046 - sparse_categorical_accuracy: 0.8792 - keras_recall_metric: 0.5897 - keras_precision_metric: 0.8636 - keras_f2_metric: 0.6293 - val_loss: 0.3426 - val_sparse_categorical_accuracy: 0.8596 - val_keras_recall_metric: 0.5447 - val_keras_precision_metric: 0.7613 - val_keras_f2_metric: 0.5776\n", + "Epoch 174/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3053 - sparse_categorical_accuracy: 0.8699 - keras_recall_metric: 0.5834 - keras_precision_metric: 0.7695 - keras_f2_metric: 0.6127 - val_loss: 0.3615 - val_sparse_categorical_accuracy: 0.8477 - val_keras_recall_metric: 0.5635 - val_keras_precision_metric: 0.6989 - val_keras_f2_metric: 0.5862\n", + "Epoch 175/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3063 - sparse_categorical_accuracy: 0.8889 - keras_recall_metric: 0.5649 - keras_precision_metric: 0.9104 - keras_f2_metric: 0.6112 - val_loss: 0.3381 - val_sparse_categorical_accuracy: 0.8717 - val_keras_recall_metric: 0.5263 - val_keras_precision_metric: 0.8426 - val_keras_f2_metric: 0.5690\n", + "Epoch 176/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3065 - sparse_categorical_accuracy: 0.8689 - keras_recall_metric: 0.5680 - keras_precision_metric: 0.7416 - keras_f2_metric: 0.5955 - val_loss: 0.3791 - val_sparse_categorical_accuracy: 0.8279 - val_keras_recall_metric: 0.5779 - val_keras_precision_metric: 0.6258 - val_keras_f2_metric: 0.5869\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 177/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3099 - sparse_categorical_accuracy: 0.8842 - keras_recall_metric: 0.5989 - keras_precision_metric: 0.8886 - keras_f2_metric: 0.6404 - val_loss: 0.3484 - val_sparse_categorical_accuracy: 0.8663 - val_keras_recall_metric: 0.5064 - val_keras_precision_metric: 0.8315 - val_keras_f2_metric: 0.5494\n", + "Epoch 178/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3092 - sparse_categorical_accuracy: 0.8693 - keras_recall_metric: 0.5993 - keras_precision_metric: 0.8077 - keras_f2_metric: 0.6318 - val_loss: 0.3607 - val_sparse_categorical_accuracy: 0.8342 - val_keras_recall_metric: 0.5512 - val_keras_precision_metric: 0.6549 - val_keras_f2_metric: 0.5692\n", + "Epoch 179/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3073 - sparse_categorical_accuracy: 0.8733 - keras_recall_metric: 0.5765 - keras_precision_metric: 0.8223 - keras_f2_metric: 0.6130 - val_loss: 0.3488 - val_sparse_categorical_accuracy: 0.8618 - val_keras_recall_metric: 0.5522 - val_keras_precision_metric: 0.7662 - val_keras_f2_metric: 0.5849\n", + "Epoch 180/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3057 - sparse_categorical_accuracy: 0.8822 - keras_recall_metric: 0.5951 - keras_precision_metric: 0.8578 - keras_f2_metric: 0.6337 - val_loss: 0.3442 - val_sparse_categorical_accuracy: 0.8522 - val_keras_recall_metric: 0.5447 - val_keras_precision_metric: 0.7277 - val_keras_f2_metric: 0.5735\n", + "Epoch 181/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3045 - sparse_categorical_accuracy: 0.8768 - keras_recall_metric: 0.5702 - keras_precision_metric: 0.8029 - keras_f2_metric: 0.6052 - val_loss: 0.3430 - val_sparse_categorical_accuracy: 0.8575 - val_keras_recall_metric: 0.5531 - val_keras_precision_metric: 0.7459 - val_keras_f2_metric: 0.5832\n", + "Epoch 182/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3040 - sparse_categorical_accuracy: 0.8801 - keras_recall_metric: 0.5898 - keras_precision_metric: 0.8654 - keras_f2_metric: 0.6295 - val_loss: 0.3437 - val_sparse_categorical_accuracy: 0.8642 - val_keras_recall_metric: 0.5364 - val_keras_precision_metric: 0.7909 - val_keras_f2_metric: 0.5733\n", + "Epoch 183/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3037 - sparse_categorical_accuracy: 0.8742 - keras_recall_metric: 0.5930 - keras_precision_metric: 0.8128 - keras_f2_metric: 0.6268 - val_loss: 0.3512 - val_sparse_categorical_accuracy: 0.8515 - val_keras_recall_metric: 0.5591 - val_keras_precision_metric: 0.7163 - val_keras_f2_metric: 0.5848\n", + "Epoch 184/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3025 - sparse_categorical_accuracy: 0.8820 - keras_recall_metric: 0.5748 - keras_precision_metric: 0.8228 - keras_f2_metric: 0.6114 - val_loss: 0.3399 - val_sparse_categorical_accuracy: 0.8651 - val_keras_recall_metric: 0.5429 - val_keras_precision_metric: 0.7896 - val_keras_f2_metric: 0.5791\n", + "Epoch 185/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3019 - sparse_categorical_accuracy: 0.8859 - keras_recall_metric: 0.5830 - keras_precision_metric: 0.8913 - keras_f2_metric: 0.6260 - val_loss: 0.3391 - val_sparse_categorical_accuracy: 0.8611 - val_keras_recall_metric: 0.5509 - val_keras_precision_metric: 0.7638 - val_keras_f2_metric: 0.5834\n", + "Epoch 186/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3012 - sparse_categorical_accuracy: 0.8744 - keras_recall_metric: 0.5793 - keras_precision_metric: 0.8033 - keras_f2_metric: 0.6133 - val_loss: 0.3435 - val_sparse_categorical_accuracy: 0.8613 - val_keras_recall_metric: 0.5483 - val_keras_precision_metric: 0.7665 - val_keras_f2_metric: 0.5814\n", + "Epoch 187/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3000 - sparse_categorical_accuracy: 0.8779 - keras_recall_metric: 0.5758 - keras_precision_metric: 0.8132 - keras_f2_metric: 0.6113 - val_loss: 0.3417 - val_sparse_categorical_accuracy: 0.8660 - val_keras_recall_metric: 0.5386 - val_keras_precision_metric: 0.7983 - val_keras_f2_metric: 0.5761\n", + "Epoch 188/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3003 - sparse_categorical_accuracy: 0.8824 - keras_recall_metric: 0.5798 - keras_precision_metric: 0.8282 - keras_f2_metric: 0.6168 - val_loss: 0.3476 - val_sparse_categorical_accuracy: 0.8516 - val_keras_recall_metric: 0.5566 - val_keras_precision_metric: 0.7182 - val_keras_f2_metric: 0.5829\n", + "Epoch 189/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.2997 - sparse_categorical_accuracy: 0.8776 - keras_recall_metric: 0.5730 - keras_precision_metric: 0.7850 - keras_f2_metric: 0.6054 - val_loss: 0.3391 - val_sparse_categorical_accuracy: 0.8631 - val_keras_recall_metric: 0.5543 - val_keras_precision_metric: 0.7708 - val_keras_f2_metric: 0.5873\n", + "Epoch 190/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.2987 - sparse_categorical_accuracy: 0.8833 - keras_recall_metric: 0.5867 - keras_precision_metric: 0.8392 - keras_f2_metric: 0.6242 - val_loss: 0.3450 - val_sparse_categorical_accuracy: 0.8611 - val_keras_recall_metric: 0.5556 - val_keras_precision_metric: 0.7606 - val_keras_f2_metric: 0.5872\n", + "Epoch 191/200\n", + "100/100 [==============================] - 1s 6ms/sample - loss: 0.2968 - sparse_categorical_accuracy: 0.8840 - keras_recall_metric: 0.5963 - keras_precision_metric: 0.8551 - keras_f2_metric: 0.6346 - val_loss: 0.3426 - val_sparse_categorical_accuracy: 0.8629 - val_keras_recall_metric: 0.5509 - val_keras_precision_metric: 0.7725 - val_keras_f2_metric: 0.5844\n", + "Epoch 192/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.2962 - sparse_categorical_accuracy: 0.8820 - keras_recall_metric: 0.6064 - keras_precision_metric: 0.8502 - keras_f2_metric: 0.6432 - val_loss: 0.3523 - val_sparse_categorical_accuracy: 0.8511 - val_keras_recall_metric: 0.5688 - val_keras_precision_metric: 0.7095 - val_keras_f2_metric: 0.5923\n", + "Epoch 193/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.2964 - sparse_categorical_accuracy: 0.8842 - keras_recall_metric: 0.5648 - keras_precision_metric: 0.8637 - keras_f2_metric: 0.6059 - val_loss: 0.3321 - val_sparse_categorical_accuracy: 0.8714 - val_keras_recall_metric: 0.5145 - val_keras_precision_metric: 0.8542 - val_keras_f2_metric: 0.5590\n", + "Epoch 194/200\n", + "100/100 [==============================] - 1s 6ms/sample - loss: 0.2988 - sparse_categorical_accuracy: 0.8728 - keras_recall_metric: 0.5999 - keras_precision_metric: 0.7919 - keras_f2_metric: 0.6304 - val_loss: 0.3613 - val_sparse_categorical_accuracy: 0.8441 - val_keras_recall_metric: 0.5727 - val_keras_precision_metric: 0.6814 - val_keras_f2_metric: 0.5915\n", + "Epoch 195/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.2978 - sparse_categorical_accuracy: 0.8851 - keras_recall_metric: 0.5739 - keras_precision_metric: 0.8318 - keras_f2_metric: 0.6116 - val_loss: 0.3360 - val_sparse_categorical_accuracy: 0.8701 - val_keras_recall_metric: 0.5359 - val_keras_precision_metric: 0.8231 - val_keras_f2_metric: 0.5761\n", + "Epoch 196/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.2961 - sparse_categorical_accuracy: 0.8861 - keras_recall_metric: 0.5911 - keras_precision_metric: 0.8776 - keras_f2_metric: 0.6323 - val_loss: 0.3362 - val_sparse_categorical_accuracy: 0.8606 - val_keras_recall_metric: 0.5449 - val_keras_precision_metric: 0.7660 - val_keras_f2_metric: 0.5783\n", + "Epoch 197/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.2961 - sparse_categorical_accuracy: 0.8770 - keras_recall_metric: 0.6157 - keras_precision_metric: 0.7743 - keras_f2_metric: 0.6397 - val_loss: 0.4047 - val_sparse_categorical_accuracy: 0.8240 - val_keras_recall_metric: 0.5993 - val_keras_precision_metric: 0.6095 - val_keras_f2_metric: 0.6013\n", + "Epoch 198/200\n", + "100/100 [==============================] - 1s 6ms/sample - loss: 0.3097 - sparse_categorical_accuracy: 0.8843 - keras_recall_metric: 0.5710 - keras_precision_metric: 0.8778 - keras_f2_metric: 0.6138 - val_loss: 0.3534 - val_sparse_categorical_accuracy: 0.8573 - val_keras_recall_metric: 0.4987 - val_keras_precision_metric: 0.7870 - val_keras_f2_metric: 0.5382\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 199/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3040 - sparse_categorical_accuracy: 0.8772 - keras_recall_metric: 0.5849 - keras_precision_metric: 0.8000 - keras_f2_metric: 0.6177 - val_loss: 0.3614 - val_sparse_categorical_accuracy: 0.8566 - val_keras_recall_metric: 0.5443 - val_keras_precision_metric: 0.7475 - val_keras_f2_metric: 0.5756\n", + "Epoch 200/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3011 - sparse_categorical_accuracy: 0.8832 - keras_recall_metric: 0.5907 - keras_precision_metric: 0.8333 - keras_f2_metric: 0.6266 - val_loss: 0.3617 - val_sparse_categorical_accuracy: 0.8505 - val_keras_recall_metric: 0.5505 - val_keras_precision_metric: 0.7170 - val_keras_f2_metric: 0.5773\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 59, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trainingStopCallback = haltCallback()\n", + "amp_model.fit(\n", + " train_data_amp,\n", + " train_flag,\n", + " validation_data=(test_data_amp, test_flag),\n", + " epochs=200,\n", + " batch_size=32\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "flags = amp_model.predict(test_data_amp)\n", + "flags_out = keras_unpad_flags(flags)[:,:,:,None]" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, '31.60% ML Flags not Manual Flags')" + ] + }, + "execution_count": 61, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(figsize=(12,12), ncols=2, nrows=2)\n", + "ax = axes[0,0]\n", + "nan_array = np.ones_like(test_flag).astype(np.float64)\n", + "nan_array[test_flag == 1] = np.nan\n", + "ax.imshow(test_data_amp[0,:,:,0], aspect='auto')\n", + "ax.set_xlabel(\"Frequency Channels\", fontsize=15)\n", + "ax.set_ylabel(\"Time Integrations\", fontsize=15)\n", + "ax.set_title(\"Manual Flags\")\n", + "\n", + "ax = axes[0,1]\n", + "nan_array = np.ones_like(flags_out).astype(np.float64)\n", + "nan_array[flags_out == 1] = np.nan\n", + "ax.imshow((test_data_amp*nan_array)[0,:,:,0], aspect='auto')\n", + "ax.set_xlabel(\"Frequency Channels\", fontsize=15)\n", + "ax.set_ylabel(\"Time Integrations\", fontsize=15)\n", + "ax.set_title(\"ML Flags\")\n", + "\n", + "ax = axes[1,0]\n", + "ax.imshow(test_flag[0,:,:,0]*(1-flags_out[0,:,:,0]), aspect='auto')\n", + "ax.set_xlabel(\"Frequency Channels\", fontsize=15)\n", + "ax.set_ylabel(\"Time Integrations\", fontsize=15)\n", + "recall = np.sum(test_flag[0,:,:,0]*flags_out[0,:,:,0])/np.sum(test_flag[0,:,:,0])\n", + "ax.set_title(\"{0:.2f}% Manual Flags not ML Flags\".format((1-recall)*100))\n", + "\n", + "ax = axes[1,1]\n", + "ax.imshow((1-test_flag[0,:,:,0])*flags_out[0,:,:,0], aspect='auto')\n", + "ax.set_xlabel(\"Frequency Channels\", fontsize=15)\n", + "ax.set_ylabel(\"Time Integrations\", fontsize=15)\n", + "precision = np.sum(test_flag[0,:,:,0]*flags_out[0,:,:,0])/np.sum(flags_out[0,:,:,0])\n", + "ax.set_title(\"{0:.2f}% ML Flags not Manual Flags\".format((1-precision)*100))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### phase input with three `layer':" + ] + }, + { + "cell_type": "code", + "execution_count": 63, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train on 100 samples, validate on 20 samples\n", + "Epoch 1/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.6600 - sparse_categorical_accuracy: 0.7558 - keras_recall_metric: 0.3076 - keras_precision_metric: 0.4726 - keras_f2_metric: 0.3294 - val_loss: 0.8595 - val_sparse_categorical_accuracy: 0.7430 - val_keras_recall_metric: 0.3909 - val_keras_precision_metric: 0.4213 - val_keras_f2_metric: 0.3967\n", + "Epoch 2/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5278 - sparse_categorical_accuracy: 0.7815 - keras_recall_metric: 0.2486 - keras_precision_metric: 0.5140 - keras_f2_metric: 0.2770 - val_loss: 0.9066 - val_sparse_categorical_accuracy: 0.7598 - val_keras_recall_metric: 0.3427 - val_keras_precision_metric: 0.4529 - val_keras_f2_metric: 0.3602\n", + "Epoch 3/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.5096 - sparse_categorical_accuracy: 0.7937 - keras_recall_metric: 0.2222 - keras_precision_metric: 0.6458 - keras_f2_metric: 0.2557 - val_loss: 1.0209 - val_sparse_categorical_accuracy: 0.7196 - val_keras_recall_metric: 0.4089 - val_keras_precision_metric: 0.3828 - val_keras_f2_metric: 0.4034\n", + "Epoch 4/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.5021 - sparse_categorical_accuracy: 0.7956 - keras_recall_metric: 0.2155 - keras_precision_metric: 0.6305 - keras_f2_metric: 0.2481 - val_loss: 0.7958 - val_sparse_categorical_accuracy: 0.7761 - val_keras_recall_metric: 0.3135 - val_keras_precision_metric: 0.5012 - val_keras_f2_metric: 0.3389\n", + "Epoch 5/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4944 - sparse_categorical_accuracy: 0.8028 - keras_recall_metric: 0.2404 - keras_precision_metric: 0.6833 - keras_f2_metric: 0.2762 - val_loss: 0.7420 - val_sparse_categorical_accuracy: 0.7639 - val_keras_recall_metric: 0.3806 - val_keras_precision_metric: 0.4674 - val_keras_f2_metric: 0.3953\n", + "Epoch 6/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4729 - sparse_categorical_accuracy: 0.8081 - keras_recall_metric: 0.2603 - keras_precision_metric: 0.6935 - keras_f2_metric: 0.2974 - val_loss: 0.6656 - val_sparse_categorical_accuracy: 0.7818 - val_keras_recall_metric: 0.3497 - val_keras_precision_metric: 0.5201 - val_keras_f2_metric: 0.3742\n", + "Epoch 7/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4640 - sparse_categorical_accuracy: 0.8108 - keras_recall_metric: 0.2950 - keras_precision_metric: 0.7285 - keras_f2_metric: 0.3347 - val_loss: 0.5793 - val_sparse_categorical_accuracy: 0.7910 - val_keras_recall_metric: 0.3582 - val_keras_precision_metric: 0.5526 - val_keras_f2_metric: 0.3854\n", + "Epoch 8/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4556 - sparse_categorical_accuracy: 0.8138 - keras_recall_metric: 0.2996 - keras_precision_metric: 0.7059 - keras_f2_metric: 0.3383 - val_loss: 0.5599 - val_sparse_categorical_accuracy: 0.7988 - val_keras_recall_metric: 0.3466 - val_keras_precision_metric: 0.5869 - val_keras_f2_metric: 0.3775\n", + "Epoch 9/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4500 - sparse_categorical_accuracy: 0.8171 - keras_recall_metric: 0.3048 - keras_precision_metric: 0.7664 - keras_f2_metric: 0.3465 - val_loss: 0.5511 - val_sparse_categorical_accuracy: 0.7892 - val_keras_recall_metric: 0.3765 - val_keras_precision_metric: 0.5434 - val_keras_f2_metric: 0.4011\n", + "Epoch 10/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4439 - sparse_categorical_accuracy: 0.8194 - keras_recall_metric: 0.3184 - keras_precision_metric: 0.6833 - keras_f2_metric: 0.3546 - val_loss: 0.5142 - val_sparse_categorical_accuracy: 0.8037 - val_keras_recall_metric: 0.3535 - val_keras_precision_metric: 0.6069 - val_keras_f2_metric: 0.3857\n", + "Epoch 11/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4399 - sparse_categorical_accuracy: 0.8234 - keras_recall_metric: 0.2809 - keras_precision_metric: 0.7875 - keras_f2_metric: 0.3216 - val_loss: 0.4985 - val_sparse_categorical_accuracy: 0.8073 - val_keras_recall_metric: 0.3456 - val_keras_precision_metric: 0.6279 - val_keras_f2_metric: 0.3797\n", + "Epoch 12/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4345 - sparse_categorical_accuracy: 0.8252 - keras_recall_metric: 0.3043 - keras_precision_metric: 0.8108 - keras_f2_metric: 0.3477 - val_loss: 0.4763 - val_sparse_categorical_accuracy: 0.8089 - val_keras_recall_metric: 0.3523 - val_keras_precision_metric: 0.6330 - val_keras_f2_metric: 0.3866\n", + "Epoch 13/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.4327 - sparse_categorical_accuracy: 0.8238 - keras_recall_metric: 0.3336 - keras_precision_metric: 0.7322 - keras_f2_metric: 0.3741 - val_loss: 0.4656 - val_sparse_categorical_accuracy: 0.8127 - val_keras_recall_metric: 0.3567 - val_keras_precision_metric: 0.6504 - val_keras_f2_metric: 0.3921\n", + "Epoch 14/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4269 - sparse_categorical_accuracy: 0.8272 - keras_recall_metric: 0.3281 - keras_precision_metric: 0.7837 - keras_f2_metric: 0.3712 - val_loss: 0.4627 - val_sparse_categorical_accuracy: 0.8164 - val_keras_recall_metric: 0.3419 - val_keras_precision_metric: 0.6805 - val_keras_f2_metric: 0.3797\n", + "Epoch 15/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4247 - sparse_categorical_accuracy: 0.8267 - keras_recall_metric: 0.3336 - keras_precision_metric: 0.7979 - keras_f2_metric: 0.3775 - val_loss: 0.4493 - val_sparse_categorical_accuracy: 0.8170 - val_keras_recall_metric: 0.3452 - val_keras_precision_metric: 0.6817 - val_keras_f2_metric: 0.3830\n", + "Epoch 16/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.4195 - sparse_categorical_accuracy: 0.8283 - keras_recall_metric: 0.3344 - keras_precision_metric: 0.7703 - keras_f2_metric: 0.3770 - val_loss: 0.4384 - val_sparse_categorical_accuracy: 0.8218 - val_keras_recall_metric: 0.3261 - val_keras_precision_metric: 0.7298 - val_keras_f2_metric: 0.3666\n", + "Epoch 17/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.4176 - sparse_categorical_accuracy: 0.8295 - keras_recall_metric: 0.3373 - keras_precision_metric: 0.7877 - keras_f2_metric: 0.3808 - val_loss: 0.4350 - val_sparse_categorical_accuracy: 0.8226 - val_keras_recall_metric: 0.3343 - val_keras_precision_metric: 0.7273 - val_keras_f2_metric: 0.3748\n", + "Epoch 18/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4140 - sparse_categorical_accuracy: 0.8310 - keras_recall_metric: 0.3291 - keras_precision_metric: 0.7866 - keras_f2_metric: 0.3723 - val_loss: 0.4316 - val_sparse_categorical_accuracy: 0.8243 - val_keras_recall_metric: 0.3232 - val_keras_precision_metric: 0.7521 - val_keras_f2_metric: 0.3648\n", + "Epoch 19/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4122 - sparse_categorical_accuracy: 0.8313 - keras_recall_metric: 0.3484 - keras_precision_metric: 0.7964 - keras_f2_metric: 0.3925 - val_loss: 0.4273 - val_sparse_categorical_accuracy: 0.8238 - val_keras_recall_metric: 0.3289 - val_keras_precision_metric: 0.7419 - val_keras_f2_metric: 0.3701\n", + "Epoch 20/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4115 - sparse_categorical_accuracy: 0.8308 - keras_recall_metric: 0.3425 - keras_precision_metric: 0.7814 - keras_f2_metric: 0.3853 - val_loss: 0.4271 - val_sparse_categorical_accuracy: 0.8254 - val_keras_recall_metric: 0.3219 - val_keras_precision_metric: 0.7621 - val_keras_f2_metric: 0.3639\n", + "Epoch 21/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.4131 - sparse_categorical_accuracy: 0.8302 - keras_recall_metric: 0.3533 - keras_precision_metric: 0.7448 - keras_f2_metric: 0.3947 - val_loss: 0.4352 - val_sparse_categorical_accuracy: 0.8223 - val_keras_recall_metric: 0.3451 - val_keras_precision_metric: 0.7148 - val_keras_f2_metric: 0.3849\n", + "Epoch 22/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4082 - sparse_categorical_accuracy: 0.8326 - keras_recall_metric: 0.3567 - keras_precision_metric: 0.7908 - keras_f2_metric: 0.4006 - val_loss: 0.4199 - val_sparse_categorical_accuracy: 0.8260 - val_keras_recall_metric: 0.3120 - val_keras_precision_metric: 0.7798 - val_keras_f2_metric: 0.3545\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 23/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4060 - sparse_categorical_accuracy: 0.8330 - keras_recall_metric: 0.3668 - keras_precision_metric: 0.7872 - keras_f2_metric: 0.4104 - val_loss: 0.4196 - val_sparse_categorical_accuracy: 0.8276 - val_keras_recall_metric: 0.3315 - val_keras_precision_metric: 0.7680 - val_keras_f2_metric: 0.3740\n", + "Epoch 24/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4026 - sparse_categorical_accuracy: 0.8346 - keras_recall_metric: 0.3841 - keras_precision_metric: 0.7871 - keras_f2_metric: 0.4275 - val_loss: 0.4306 - val_sparse_categorical_accuracy: 0.8239 - val_keras_recall_metric: 0.3553 - val_keras_precision_metric: 0.7163 - val_keras_f2_metric: 0.3952\n", + "Epoch 25/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.4034 - sparse_categorical_accuracy: 0.8343 - keras_recall_metric: 0.3754 - keras_precision_metric: 0.8083 - keras_f2_metric: 0.4202 - val_loss: 0.4159 - val_sparse_categorical_accuracy: 0.8273 - val_keras_recall_metric: 0.3157 - val_keras_precision_metric: 0.7864 - val_keras_f2_metric: 0.3586\n", + "Epoch 26/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3990 - sparse_categorical_accuracy: 0.8346 - keras_recall_metric: 0.3901 - keras_precision_metric: 0.7605 - keras_f2_metric: 0.4321 - val_loss: 0.4187 - val_sparse_categorical_accuracy: 0.8265 - val_keras_recall_metric: 0.3431 - val_keras_precision_metric: 0.7460 - val_keras_f2_metric: 0.3846\n", + "Epoch 27/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3978 - sparse_categorical_accuracy: 0.8363 - keras_recall_metric: 0.3710 - keras_precision_metric: 0.7631 - keras_f2_metric: 0.4134 - val_loss: 0.4129 - val_sparse_categorical_accuracy: 0.8288 - val_keras_recall_metric: 0.3156 - val_keras_precision_metric: 0.7992 - val_keras_f2_metric: 0.3591\n", + "Epoch 28/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3956 - sparse_categorical_accuracy: 0.8371 - keras_recall_metric: 0.3700 - keras_precision_metric: 0.8136 - keras_f2_metric: 0.4150 - val_loss: 0.4157 - val_sparse_categorical_accuracy: 0.8279 - val_keras_recall_metric: 0.3058 - val_keras_precision_metric: 0.8071 - val_keras_f2_metric: 0.3491\n", + "Epoch 29/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3952 - sparse_categorical_accuracy: 0.8366 - keras_recall_metric: 0.3846 - keras_precision_metric: 0.7754 - keras_f2_metric: 0.4271 - val_loss: 0.4130 - val_sparse_categorical_accuracy: 0.8273 - val_keras_recall_metric: 0.3306 - val_keras_precision_metric: 0.7665 - val_keras_f2_metric: 0.3731\n", + "Epoch 30/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3953 - sparse_categorical_accuracy: 0.8358 - keras_recall_metric: 0.3833 - keras_precision_metric: 0.7736 - keras_f2_metric: 0.4261 - val_loss: 0.4109 - val_sparse_categorical_accuracy: 0.8283 - val_keras_recall_metric: 0.3296 - val_keras_precision_metric: 0.7757 - val_keras_f2_metric: 0.3724\n", + "Epoch 31/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3945 - sparse_categorical_accuracy: 0.8362 - keras_recall_metric: 0.3919 - keras_precision_metric: 0.7839 - keras_f2_metric: 0.4352 - val_loss: 0.4161 - val_sparse_categorical_accuracy: 0.8287 - val_keras_recall_metric: 0.3313 - val_keras_precision_metric: 0.7772 - val_keras_f2_metric: 0.3742\n", + "Epoch 32/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3933 - sparse_categorical_accuracy: 0.8376 - keras_recall_metric: 0.3964 - keras_precision_metric: 0.7888 - keras_f2_metric: 0.4400 - val_loss: 0.4087 - val_sparse_categorical_accuracy: 0.8283 - val_keras_recall_metric: 0.3292 - val_keras_precision_metric: 0.7762 - val_keras_f2_metric: 0.3720\n", + "Epoch 33/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3898 - sparse_categorical_accuracy: 0.8377 - keras_recall_metric: 0.3972 - keras_precision_metric: 0.7756 - keras_f2_metric: 0.4401 - val_loss: 0.4102 - val_sparse_categorical_accuracy: 0.8275 - val_keras_recall_metric: 0.3193 - val_keras_precision_metric: 0.7830 - val_keras_f2_metric: 0.3622\n", + "Epoch 34/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3924 - sparse_categorical_accuracy: 0.8347 - keras_recall_metric: 0.4161 - keras_precision_metric: 0.7533 - keras_f2_metric: 0.4567 - val_loss: 0.4146 - val_sparse_categorical_accuracy: 0.8292 - val_keras_recall_metric: 0.3309 - val_keras_precision_metric: 0.7814 - val_keras_f2_metric: 0.3740\n", + "Epoch 35/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3872 - sparse_categorical_accuracy: 0.8393 - keras_recall_metric: 0.4079 - keras_precision_metric: 0.8015 - keras_f2_metric: 0.4522 - val_loss: 0.4069 - val_sparse_categorical_accuracy: 0.8298 - val_keras_recall_metric: 0.3277 - val_keras_precision_metric: 0.7911 - val_keras_f2_metric: 0.3712\n", + "Epoch 36/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3862 - sparse_categorical_accuracy: 0.8393 - keras_recall_metric: 0.4099 - keras_precision_metric: 0.7668 - keras_f2_metric: 0.4517 - val_loss: 0.4097 - val_sparse_categorical_accuracy: 0.8280 - val_keras_recall_metric: 0.3476 - val_keras_precision_metric: 0.7520 - val_keras_f2_metric: 0.3895\n", + "Epoch 37/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3848 - sparse_categorical_accuracy: 0.8379 - keras_recall_metric: 0.4218 - keras_precision_metric: 0.7622 - keras_f2_metric: 0.4631 - val_loss: 0.4130 - val_sparse_categorical_accuracy: 0.8293 - val_keras_recall_metric: 0.3492 - val_keras_precision_metric: 0.7600 - val_keras_f2_metric: 0.3915\n", + "Epoch 38/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3847 - sparse_categorical_accuracy: 0.8407 - keras_recall_metric: 0.4057 - keras_precision_metric: 0.7866 - keras_f2_metric: 0.4491 - val_loss: 0.4031 - val_sparse_categorical_accuracy: 0.8306 - val_keras_recall_metric: 0.3094 - val_keras_precision_metric: 0.8271 - val_keras_f2_metric: 0.3537\n", + "Epoch 39/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3834 - sparse_categorical_accuracy: 0.8409 - keras_recall_metric: 0.4039 - keras_precision_metric: 0.8079 - keras_f2_metric: 0.4483 - val_loss: 0.4064 - val_sparse_categorical_accuracy: 0.8313 - val_keras_recall_metric: 0.3421 - val_keras_precision_metric: 0.7842 - val_keras_f2_metric: 0.3856\n", + "Epoch 40/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3835 - sparse_categorical_accuracy: 0.8362 - keras_recall_metric: 0.4244 - keras_precision_metric: 0.7120 - keras_f2_metric: 0.4614 - val_loss: 0.4080 - val_sparse_categorical_accuracy: 0.8303 - val_keras_recall_metric: 0.3535 - val_keras_precision_metric: 0.7623 - val_keras_f2_metric: 0.3959\n", + "Epoch 41/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3811 - sparse_categorical_accuracy: 0.8429 - keras_recall_metric: 0.4103 - keras_precision_metric: 0.7810 - keras_f2_metric: 0.4529 - val_loss: 0.4081 - val_sparse_categorical_accuracy: 0.8312 - val_keras_recall_metric: 0.3177 - val_keras_precision_metric: 0.8181 - val_keras_f2_metric: 0.3620\n", + "Epoch 42/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3816 - sparse_categorical_accuracy: 0.8393 - keras_recall_metric: 0.4142 - keras_precision_metric: 0.7718 - keras_f2_metric: 0.4564 - val_loss: 0.4063 - val_sparse_categorical_accuracy: 0.8327 - val_keras_recall_metric: 0.3405 - val_keras_precision_metric: 0.7976 - val_keras_f2_metric: 0.3845\n", + "Epoch 43/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3790 - sparse_categorical_accuracy: 0.8401 - keras_recall_metric: 0.4135 - keras_precision_metric: 0.7870 - keras_f2_metric: 0.4552 - val_loss: 0.3981 - val_sparse_categorical_accuracy: 0.8306 - val_keras_recall_metric: 0.3292 - val_keras_precision_metric: 0.7952 - val_keras_f2_metric: 0.3729\n", + "Epoch 44/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3772 - sparse_categorical_accuracy: 0.8404 - keras_recall_metric: 0.4259 - keras_precision_metric: 0.7570 - keras_f2_metric: 0.4664 - val_loss: 0.4046 - val_sparse_categorical_accuracy: 0.8307 - val_keras_recall_metric: 0.3379 - val_keras_precision_metric: 0.7847 - val_keras_f2_metric: 0.3814\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 45/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3755 - sparse_categorical_accuracy: 0.8417 - keras_recall_metric: 0.4477 - keras_precision_metric: 0.7450 - keras_f2_metric: 0.4862 - val_loss: 0.4098 - val_sparse_categorical_accuracy: 0.8314 - val_keras_recall_metric: 0.3618 - val_keras_precision_metric: 0.7611 - val_keras_f2_metric: 0.4042\n", + "Epoch 46/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3761 - sparse_categorical_accuracy: 0.8441 - keras_recall_metric: 0.4267 - keras_precision_metric: 0.7801 - keras_f2_metric: 0.4687 - val_loss: 0.4015 - val_sparse_categorical_accuracy: 0.8328 - val_keras_recall_metric: 0.3390 - val_keras_precision_metric: 0.8004 - val_keras_f2_metric: 0.3832\n", + "Epoch 47/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3752 - sparse_categorical_accuracy: 0.8415 - keras_recall_metric: 0.4504 - keras_precision_metric: 0.7300 - keras_f2_metric: 0.4869 - val_loss: 0.4056 - val_sparse_categorical_accuracy: 0.8314 - val_keras_recall_metric: 0.3395 - val_keras_precision_metric: 0.7880 - val_keras_f2_metric: 0.3831\n", + "Epoch 48/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3732 - sparse_categorical_accuracy: 0.8450 - keras_recall_metric: 0.4201 - keras_precision_metric: 0.7984 - keras_f2_metric: 0.4640 - val_loss: 0.4035 - val_sparse_categorical_accuracy: 0.8295 - val_keras_recall_metric: 0.3286 - val_keras_precision_metric: 0.7867 - val_keras_f2_metric: 0.3719\n", + "Epoch 49/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3738 - sparse_categorical_accuracy: 0.8404 - keras_recall_metric: 0.4464 - keras_precision_metric: 0.7562 - keras_f2_metric: 0.4859 - val_loss: 0.4003 - val_sparse_categorical_accuracy: 0.8322 - val_keras_recall_metric: 0.3551 - val_keras_precision_metric: 0.7744 - val_keras_f2_metric: 0.3983\n", + "Epoch 50/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3708 - sparse_categorical_accuracy: 0.8431 - keras_recall_metric: 0.4558 - keras_precision_metric: 0.7131 - keras_f2_metric: 0.4884 - val_loss: 0.4012 - val_sparse_categorical_accuracy: 0.8319 - val_keras_recall_metric: 0.3391 - val_keras_precision_metric: 0.7928 - val_keras_f2_metric: 0.3830\n", + "Epoch 51/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3706 - sparse_categorical_accuracy: 0.8445 - keras_recall_metric: 0.4220 - keras_precision_metric: 0.8033 - keras_f2_metric: 0.4656 - val_loss: 0.3997 - val_sparse_categorical_accuracy: 0.8318 - val_keras_recall_metric: 0.3410 - val_keras_precision_metric: 0.7890 - val_keras_f2_metric: 0.3847\n", + "Epoch 52/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3711 - sparse_categorical_accuracy: 0.8409 - keras_recall_metric: 0.4647 - keras_precision_metric: 0.7522 - keras_f2_metric: 0.5028 - val_loss: 0.3993 - val_sparse_categorical_accuracy: 0.8307 - val_keras_recall_metric: 0.3624 - val_keras_precision_metric: 0.7557 - val_keras_f2_metric: 0.4045\n", + "Epoch 53/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3680 - sparse_categorical_accuracy: 0.8425 - keras_recall_metric: 0.4676 - keras_precision_metric: 0.7635 - keras_f2_metric: 0.5069 - val_loss: 0.4014 - val_sparse_categorical_accuracy: 0.8324 - val_keras_recall_metric: 0.3354 - val_keras_precision_metric: 0.8020 - val_keras_f2_metric: 0.3795\n", + "Epoch 54/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3672 - sparse_categorical_accuracy: 0.8440 - keras_recall_metric: 0.4514 - keras_precision_metric: 0.7627 - keras_f2_metric: 0.4914 - val_loss: 0.4051 - val_sparse_categorical_accuracy: 0.8327 - val_keras_recall_metric: 0.3523 - val_keras_precision_metric: 0.7822 - val_keras_f2_metric: 0.3958\n", + "Epoch 55/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3665 - sparse_categorical_accuracy: 0.8442 - keras_recall_metric: 0.4712 - keras_precision_metric: 0.7367 - keras_f2_metric: 0.5065 - val_loss: 0.4028 - val_sparse_categorical_accuracy: 0.8337 - val_keras_recall_metric: 0.3611 - val_keras_precision_metric: 0.7786 - val_keras_f2_metric: 0.4045\n", + "Epoch 56/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3674 - sparse_categorical_accuracy: 0.8473 - keras_recall_metric: 0.4420 - keras_precision_metric: 0.7946 - keras_f2_metric: 0.4848 - val_loss: 0.3986 - val_sparse_categorical_accuracy: 0.8308 - val_keras_recall_metric: 0.3399 - val_keras_precision_metric: 0.7823 - val_keras_f2_metric: 0.3833\n", + "Epoch 57/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3680 - sparse_categorical_accuracy: 0.8402 - keras_recall_metric: 0.4872 - keras_precision_metric: 0.7378 - keras_f2_metric: 0.5224 - val_loss: 0.4010 - val_sparse_categorical_accuracy: 0.8323 - val_keras_recall_metric: 0.3703 - val_keras_precision_metric: 0.7583 - val_keras_f2_metric: 0.4125\n", + "Epoch 58/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3696 - sparse_categorical_accuracy: 0.8448 - keras_recall_metric: 0.4905 - keras_precision_metric: 0.7329 - keras_f2_metric: 0.5185 - val_loss: 0.4036 - val_sparse_categorical_accuracy: 0.8315 - val_keras_recall_metric: 0.3645 - val_keras_precision_metric: 0.7587 - val_keras_f2_metric: 0.4067\n", + "Epoch 59/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3711 - sparse_categorical_accuracy: 0.8433 - keras_recall_metric: 0.4297 - keras_precision_metric: 0.7102 - keras_f2_metric: 0.4663 - val_loss: 0.4026 - val_sparse_categorical_accuracy: 0.8304 - val_keras_recall_metric: 0.3009 - val_keras_precision_metric: 0.8405 - val_keras_f2_metric: 0.3453\n", + "Epoch 60/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3721 - sparse_categorical_accuracy: 0.8431 - keras_recall_metric: 0.4522 - keras_precision_metric: 0.7823 - keras_f2_metric: 0.4939 - val_loss: 0.4049 - val_sparse_categorical_accuracy: 0.8274 - val_keras_recall_metric: 0.3210 - val_keras_precision_metric: 0.7796 - val_keras_f2_metric: 0.3638\n", + "Epoch 61/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3727 - sparse_categorical_accuracy: 0.8390 - keras_recall_metric: 0.4633 - keras_precision_metric: 0.7361 - keras_f2_metric: 0.5001 - val_loss: 0.4048 - val_sparse_categorical_accuracy: 0.8261 - val_keras_recall_metric: 0.3896 - val_keras_precision_metric: 0.7027 - val_keras_f2_metric: 0.4277\n", + "Epoch 62/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3685 - sparse_categorical_accuracy: 0.8432 - keras_recall_metric: 0.4529 - keras_precision_metric: 0.7701 - keras_f2_metric: 0.4935 - val_loss: 0.3985 - val_sparse_categorical_accuracy: 0.8311 - val_keras_recall_metric: 0.3658 - val_keras_precision_metric: 0.7546 - val_keras_f2_metric: 0.4078\n", + "Epoch 63/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3673 - sparse_categorical_accuracy: 0.8424 - keras_recall_metric: 0.4842 - keras_precision_metric: 0.7069 - keras_f2_metric: 0.5166 - val_loss: 0.3993 - val_sparse_categorical_accuracy: 0.8324 - val_keras_recall_metric: 0.3694 - val_keras_precision_metric: 0.7599 - val_keras_f2_metric: 0.4117\n", + "Epoch 64/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3659 - sparse_categorical_accuracy: 0.8472 - keras_recall_metric: 0.4607 - keras_precision_metric: 0.7867 - keras_f2_metric: 0.5017 - val_loss: 0.3948 - val_sparse_categorical_accuracy: 0.8308 - val_keras_recall_metric: 0.3519 - val_keras_precision_metric: 0.7679 - val_keras_f2_metric: 0.3947\n", + "Epoch 65/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3655 - sparse_categorical_accuracy: 0.8428 - keras_recall_metric: 0.4888 - keras_precision_metric: 0.7379 - keras_f2_metric: 0.5241 - val_loss: 0.4011 - val_sparse_categorical_accuracy: 0.8301 - val_keras_recall_metric: 0.3833 - val_keras_precision_metric: 0.7311 - val_keras_f2_metric: 0.4236\n", + "Epoch 66/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3626 - sparse_categorical_accuracy: 0.8467 - keras_recall_metric: 0.4765 - keras_precision_metric: 0.7658 - keras_f2_metric: 0.5147 - val_loss: 0.3979 - val_sparse_categorical_accuracy: 0.8314 - val_keras_recall_metric: 0.3741 - val_keras_precision_metric: 0.7485 - val_keras_f2_metric: 0.4157\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 67/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3607 - sparse_categorical_accuracy: 0.8478 - keras_recall_metric: 0.5007 - keras_precision_metric: 0.7385 - keras_f2_metric: 0.5316 - val_loss: 0.4026 - val_sparse_categorical_accuracy: 0.8313 - val_keras_recall_metric: 0.3805 - val_keras_precision_metric: 0.7415 - val_keras_f2_metric: 0.4215\n", + "Epoch 68/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3613 - sparse_categorical_accuracy: 0.8471 - keras_recall_metric: 0.4609 - keras_precision_metric: 0.7723 - keras_f2_metric: 0.5010 - val_loss: 0.3943 - val_sparse_categorical_accuracy: 0.8321 - val_keras_recall_metric: 0.3351 - val_keras_precision_metric: 0.7997 - val_keras_f2_metric: 0.3792\n", + "Epoch 69/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3581 - sparse_categorical_accuracy: 0.8463 - keras_recall_metric: 0.4911 - keras_precision_metric: 0.7525 - keras_f2_metric: 0.5277 - val_loss: 0.3928 - val_sparse_categorical_accuracy: 0.8334 - val_keras_recall_metric: 0.3634 - val_keras_precision_metric: 0.7736 - val_keras_f2_metric: 0.4066\n", + "Epoch 70/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3573 - sparse_categorical_accuracy: 0.8487 - keras_recall_metric: 0.5097 - keras_precision_metric: 0.7302 - keras_f2_metric: 0.5395 - val_loss: 0.4062 - val_sparse_categorical_accuracy: 0.8315 - val_keras_recall_metric: 0.3815 - val_keras_precision_metric: 0.7415 - val_keras_f2_metric: 0.4226\n", + "Epoch 71/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3641 - sparse_categorical_accuracy: 0.8471 - keras_recall_metric: 0.4547 - keras_precision_metric: 0.7834 - keras_f2_metric: 0.4956 - val_loss: 0.4061 - val_sparse_categorical_accuracy: 0.8301 - val_keras_recall_metric: 0.3361 - val_keras_precision_metric: 0.7819 - val_keras_f2_metric: 0.3793\n", + "Epoch 72/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3611 - sparse_categorical_accuracy: 0.8442 - keras_recall_metric: 0.4776 - keras_precision_metric: 0.7397 - keras_f2_metric: 0.5140 - val_loss: 0.3920 - val_sparse_categorical_accuracy: 0.8325 - val_keras_recall_metric: 0.3794 - val_keras_precision_metric: 0.7505 - val_keras_f2_metric: 0.4210\n", + "Epoch 73/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3567 - sparse_categorical_accuracy: 0.8468 - keras_recall_metric: 0.4637 - keras_precision_metric: 0.7427 - keras_f2_metric: 0.5010 - val_loss: 0.3930 - val_sparse_categorical_accuracy: 0.8320 - val_keras_recall_metric: 0.3456 - val_keras_precision_metric: 0.7850 - val_keras_f2_metric: 0.3891\n", + "Epoch 74/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3578 - sparse_categorical_accuracy: 0.8470 - keras_recall_metric: 0.5096 - keras_precision_metric: 0.7470 - keras_f2_metric: 0.5438 - val_loss: 0.3953 - val_sparse_categorical_accuracy: 0.8310 - val_keras_recall_metric: 0.3794 - val_keras_precision_metric: 0.7407 - val_keras_f2_metric: 0.4204\n", + "Epoch 75/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3578 - sparse_categorical_accuracy: 0.8469 - keras_recall_metric: 0.4875 - keras_precision_metric: 0.7718 - keras_f2_metric: 0.5262 - val_loss: 0.3946 - val_sparse_categorical_accuracy: 0.8277 - val_keras_recall_metric: 0.4138 - val_keras_precision_metric: 0.6941 - val_keras_f2_metric: 0.4502\n", + "Epoch 76/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3569 - sparse_categorical_accuracy: 0.8453 - keras_recall_metric: 0.5008 - keras_precision_metric: 0.7483 - keras_f2_metric: 0.5350 - val_loss: 0.3896 - val_sparse_categorical_accuracy: 0.8346 - val_keras_recall_metric: 0.3612 - val_keras_precision_metric: 0.7854 - val_keras_f2_metric: 0.4049\n", + "Epoch 77/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3543 - sparse_categorical_accuracy: 0.8494 - keras_recall_metric: 0.4852 - keras_precision_metric: 0.7509 - keras_f2_metric: 0.5221 - val_loss: 0.3898 - val_sparse_categorical_accuracy: 0.8329 - val_keras_recall_metric: 0.3727 - val_keras_precision_metric: 0.7598 - val_keras_f2_metric: 0.4150\n", + "Epoch 78/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3513 - sparse_categorical_accuracy: 0.8499 - keras_recall_metric: 0.4944 - keras_precision_metric: 0.7529 - keras_f2_metric: 0.5306 - val_loss: 0.3922 - val_sparse_categorical_accuracy: 0.8340 - val_keras_recall_metric: 0.3788 - val_keras_precision_metric: 0.7607 - val_keras_f2_metric: 0.4211\n", + "Epoch 79/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3490 - sparse_categorical_accuracy: 0.8511 - keras_recall_metric: 0.5014 - keras_precision_metric: 0.7470 - keras_f2_metric: 0.5367 - val_loss: 0.3919 - val_sparse_categorical_accuracy: 0.8338 - val_keras_recall_metric: 0.3689 - val_keras_precision_metric: 0.7704 - val_keras_f2_metric: 0.4118\n", + "Epoch 80/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3490 - sparse_categorical_accuracy: 0.8508 - keras_recall_metric: 0.5090 - keras_precision_metric: 0.7611 - keras_f2_metric: 0.5450 - val_loss: 0.3902 - val_sparse_categorical_accuracy: 0.8316 - val_keras_recall_metric: 0.4022 - val_keras_precision_metric: 0.7241 - val_keras_f2_metric: 0.4414\n", + "Epoch 81/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3486 - sparse_categorical_accuracy: 0.8498 - keras_recall_metric: 0.5212 - keras_precision_metric: 0.7154 - keras_f2_metric: 0.5503 - val_loss: 0.3909 - val_sparse_categorical_accuracy: 0.8326 - val_keras_recall_metric: 0.3658 - val_keras_precision_metric: 0.7653 - val_keras_f2_metric: 0.4084\n", + "Epoch 82/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3480 - sparse_categorical_accuracy: 0.8514 - keras_recall_metric: 0.4993 - keras_precision_metric: 0.7709 - keras_f2_metric: 0.5371 - val_loss: 0.3920 - val_sparse_categorical_accuracy: 0.8324 - val_keras_recall_metric: 0.3574 - val_keras_precision_metric: 0.7731 - val_keras_f2_metric: 0.4004\n", + "Epoch 83/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3502 - sparse_categorical_accuracy: 0.8508 - keras_recall_metric: 0.5128 - keras_precision_metric: 0.7399 - keras_f2_metric: 0.5461 - val_loss: 0.3886 - val_sparse_categorical_accuracy: 0.8331 - val_keras_recall_metric: 0.3815 - val_keras_precision_metric: 0.7523 - val_keras_f2_metric: 0.4233\n", + "Epoch 84/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3485 - sparse_categorical_accuracy: 0.8529 - keras_recall_metric: 0.5152 - keras_precision_metric: 0.7749 - keras_f2_metric: 0.5520 - val_loss: 0.3916 - val_sparse_categorical_accuracy: 0.8328 - val_keras_recall_metric: 0.3750 - val_keras_precision_metric: 0.7564 - val_keras_f2_metric: 0.4171\n", + "Epoch 85/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3482 - sparse_categorical_accuracy: 0.8520 - keras_recall_metric: 0.5158 - keras_precision_metric: 0.7503 - keras_f2_metric: 0.5497 - val_loss: 0.3905 - val_sparse_categorical_accuracy: 0.8341 - val_keras_recall_metric: 0.3841 - val_keras_precision_metric: 0.7564 - val_keras_f2_metric: 0.4260\n", + "Epoch 86/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3483 - sparse_categorical_accuracy: 0.8530 - keras_recall_metric: 0.5111 - keras_precision_metric: 0.7399 - keras_f2_metric: 0.5443 - val_loss: 0.3852 - val_sparse_categorical_accuracy: 0.8324 - val_keras_recall_metric: 0.3692 - val_keras_precision_metric: 0.7601 - val_keras_f2_metric: 0.4116\n", + "Epoch 87/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3466 - sparse_categorical_accuracy: 0.8526 - keras_recall_metric: 0.5396 - keras_precision_metric: 0.7530 - keras_f2_metric: 0.5716 - val_loss: 0.3949 - val_sparse_categorical_accuracy: 0.8326 - val_keras_recall_metric: 0.3879 - val_keras_precision_metric: 0.7425 - val_keras_f2_metric: 0.4289\n", + "Epoch 88/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3467 - sparse_categorical_accuracy: 0.8536 - keras_recall_metric: 0.5112 - keras_precision_metric: 0.7692 - keras_f2_metric: 0.5478 - val_loss: 0.3848 - val_sparse_categorical_accuracy: 0.8314 - val_keras_recall_metric: 0.3767 - val_keras_precision_metric: 0.7458 - val_keras_f2_metric: 0.4181\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 89/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3454 - sparse_categorical_accuracy: 0.8517 - keras_recall_metric: 0.5415 - keras_precision_metric: 0.7373 - keras_f2_metric: 0.5711 - val_loss: 0.3913 - val_sparse_categorical_accuracy: 0.8316 - val_keras_recall_metric: 0.4121 - val_keras_precision_metric: 0.7167 - val_keras_f2_metric: 0.4504\n", + "Epoch 90/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3442 - sparse_categorical_accuracy: 0.8537 - keras_recall_metric: 0.5155 - keras_precision_metric: 0.7470 - keras_f2_metric: 0.5490 - val_loss: 0.3899 - val_sparse_categorical_accuracy: 0.8323 - val_keras_recall_metric: 0.3817 - val_keras_precision_metric: 0.7464 - val_keras_f2_metric: 0.4230\n", + "Epoch 91/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3455 - sparse_categorical_accuracy: 0.8525 - keras_recall_metric: 0.4982 - keras_precision_metric: 0.7771 - keras_f2_metric: 0.5353 - val_loss: 0.3789 - val_sparse_categorical_accuracy: 0.8325 - val_keras_recall_metric: 0.3638 - val_keras_precision_metric: 0.7667 - val_keras_f2_metric: 0.4065\n", + "Epoch 92/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3462 - sparse_categorical_accuracy: 0.8528 - keras_recall_metric: 0.5590 - keras_precision_metric: 0.7545 - keras_f2_metric: 0.5880 - val_loss: 0.3885 - val_sparse_categorical_accuracy: 0.8331 - val_keras_recall_metric: 0.4083 - val_keras_precision_metric: 0.7280 - val_keras_f2_metric: 0.4476\n", + "Epoch 93/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3423 - sparse_categorical_accuracy: 0.8572 - keras_recall_metric: 0.5258 - keras_precision_metric: 0.7628 - keras_f2_metric: 0.5606 - val_loss: 0.3914 - val_sparse_categorical_accuracy: 0.8326 - val_keras_recall_metric: 0.4265 - val_keras_precision_metric: 0.7115 - val_keras_f2_metric: 0.4637\n", + "Epoch 94/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3425 - sparse_categorical_accuracy: 0.8556 - keras_recall_metric: 0.5540 - keras_precision_metric: 0.7198 - keras_f2_metric: 0.5804 - val_loss: 0.3840 - val_sparse_categorical_accuracy: 0.8341 - val_keras_recall_metric: 0.3657 - val_keras_precision_metric: 0.7760 - val_keras_f2_metric: 0.4089\n", + "Epoch 95/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3415 - sparse_categorical_accuracy: 0.8563 - keras_recall_metric: 0.5326 - keras_precision_metric: 0.7413 - keras_f2_metric: 0.5634 - val_loss: 0.3833 - val_sparse_categorical_accuracy: 0.8330 - val_keras_recall_metric: 0.4047 - val_keras_precision_metric: 0.7305 - val_keras_f2_metric: 0.4443\n", + "Epoch 96/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3407 - sparse_categorical_accuracy: 0.8561 - keras_recall_metric: 0.5226 - keras_precision_metric: 0.7510 - keras_f2_metric: 0.5556 - val_loss: 0.3832 - val_sparse_categorical_accuracy: 0.8350 - val_keras_recall_metric: 0.4064 - val_keras_precision_metric: 0.7406 - val_keras_f2_metric: 0.4467\n", + "Epoch 97/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3389 - sparse_categorical_accuracy: 0.8589 - keras_recall_metric: 0.5507 - keras_precision_metric: 0.7758 - keras_f2_metric: 0.5843 - val_loss: 0.3804 - val_sparse_categorical_accuracy: 0.8344 - val_keras_recall_metric: 0.3997 - val_keras_precision_metric: 0.7431 - val_keras_f2_metric: 0.4404\n", + "Epoch 98/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3388 - sparse_categorical_accuracy: 0.8581 - keras_recall_metric: 0.5685 - keras_precision_metric: 0.7580 - keras_f2_metric: 0.5982 - val_loss: 0.3868 - val_sparse_categorical_accuracy: 0.8337 - val_keras_recall_metric: 0.4131 - val_keras_precision_metric: 0.7276 - val_keras_f2_metric: 0.4522\n", + "Epoch 99/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3364 - sparse_categorical_accuracy: 0.8592 - keras_recall_metric: 0.5525 - keras_precision_metric: 0.7821 - keras_f2_metric: 0.5869 - val_loss: 0.3841 - val_sparse_categorical_accuracy: 0.8350 - val_keras_recall_metric: 0.3741 - val_keras_precision_metric: 0.7732 - val_keras_f2_metric: 0.4172\n", + "Epoch 100/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3363 - sparse_categorical_accuracy: 0.8591 - keras_recall_metric: 0.5757 - keras_precision_metric: 0.7436 - keras_f2_metric: 0.6026 - val_loss: 0.3842 - val_sparse_categorical_accuracy: 0.8351 - val_keras_recall_metric: 0.4182 - val_keras_precision_metric: 0.7316 - val_keras_f2_metric: 0.4574\n", + "Epoch 101/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3367 - sparse_categorical_accuracy: 0.8600 - keras_recall_metric: 0.5626 - keras_precision_metric: 0.7425 - keras_f2_metric: 0.5910 - val_loss: 0.3866 - val_sparse_categorical_accuracy: 0.8362 - val_keras_recall_metric: 0.3858 - val_keras_precision_metric: 0.7687 - val_keras_f2_metric: 0.4285\n", + "Epoch 102/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3391 - sparse_categorical_accuracy: 0.8584 - keras_recall_metric: 0.5273 - keras_precision_metric: 0.8011 - keras_f2_metric: 0.5654 - val_loss: 0.3786 - val_sparse_categorical_accuracy: 0.8335 - val_keras_recall_metric: 0.4111 - val_keras_precision_metric: 0.7280 - val_keras_f2_metric: 0.4503\n", + "Epoch 103/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3366 - sparse_categorical_accuracy: 0.8560 - keras_recall_metric: 0.5667 - keras_precision_metric: 0.7213 - keras_f2_metric: 0.5921 - val_loss: 0.3915 - val_sparse_categorical_accuracy: 0.8335 - val_keras_recall_metric: 0.4594 - val_keras_precision_metric: 0.6946 - val_keras_f2_metric: 0.4928\n", + "Epoch 104/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3364 - sparse_categorical_accuracy: 0.8621 - keras_recall_metric: 0.5151 - keras_precision_metric: 0.7916 - keras_f2_metric: 0.5532 - val_loss: 0.3852 - val_sparse_categorical_accuracy: 0.8340 - val_keras_recall_metric: 0.3385 - val_keras_precision_metric: 0.8115 - val_keras_f2_metric: 0.3831\n", + "Epoch 105/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3382 - sparse_categorical_accuracy: 0.8571 - keras_recall_metric: 0.5481 - keras_precision_metric: 0.7656 - keras_f2_metric: 0.5779 - val_loss: 0.3845 - val_sparse_categorical_accuracy: 0.8324 - val_keras_recall_metric: 0.4464 - val_keras_precision_metric: 0.6973 - val_keras_f2_metric: 0.4811\n", + "Epoch 106/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3350 - sparse_categorical_accuracy: 0.8590 - keras_recall_metric: 0.5892 - keras_precision_metric: 0.7489 - keras_f2_metric: 0.6149 - val_loss: 0.3870 - val_sparse_categorical_accuracy: 0.8356 - val_keras_recall_metric: 0.4066 - val_keras_precision_metric: 0.7444 - val_keras_f2_metric: 0.4472\n", + "Epoch 107/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3356 - sparse_categorical_accuracy: 0.8608 - keras_recall_metric: 0.5509 - keras_precision_metric: 0.7573 - keras_f2_metric: 0.5819 - val_loss: 0.3846 - val_sparse_categorical_accuracy: 0.8353 - val_keras_recall_metric: 0.4316 - val_keras_precision_metric: 0.7224 - val_keras_f2_metric: 0.4694\n", + "Epoch 108/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3333 - sparse_categorical_accuracy: 0.8620 - keras_recall_metric: 0.5593 - keras_precision_metric: 0.7771 - keras_f2_metric: 0.5919 - val_loss: 0.3789 - val_sparse_categorical_accuracy: 0.8356 - val_keras_recall_metric: 0.4142 - val_keras_precision_metric: 0.7377 - val_keras_f2_metric: 0.4540\n", + "Epoch 109/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3332 - sparse_categorical_accuracy: 0.8597 - keras_recall_metric: 0.5792 - keras_precision_metric: 0.7628 - keras_f2_metric: 0.6080 - val_loss: 0.3842 - val_sparse_categorical_accuracy: 0.8352 - val_keras_recall_metric: 0.4285 - val_keras_precision_metric: 0.7239 - val_keras_f2_metric: 0.4666\n", + "Epoch 110/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3315 - sparse_categorical_accuracy: 0.8640 - keras_recall_metric: 0.5674 - keras_precision_metric: 0.7741 - keras_f2_metric: 0.5994 - val_loss: 0.3888 - val_sparse_categorical_accuracy: 0.8332 - val_keras_recall_metric: 0.4504 - val_keras_precision_metric: 0.6989 - val_keras_f2_metric: 0.4849\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 111/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3317 - sparse_categorical_accuracy: 0.8609 - keras_recall_metric: 0.5871 - keras_precision_metric: 0.7392 - keras_f2_metric: 0.6117 - val_loss: 0.3921 - val_sparse_categorical_accuracy: 0.8330 - val_keras_recall_metric: 0.4508 - val_keras_precision_metric: 0.6975 - val_keras_f2_metric: 0.4851\n", + "Epoch 112/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3322 - sparse_categorical_accuracy: 0.8640 - keras_recall_metric: 0.5549 - keras_precision_metric: 0.7948 - keras_f2_metric: 0.5904 - val_loss: 0.3799 - val_sparse_categorical_accuracy: 0.8357 - val_keras_recall_metric: 0.4268 - val_keras_precision_metric: 0.7281 - val_keras_f2_metric: 0.4653\n", + "Epoch 113/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3314 - sparse_categorical_accuracy: 0.8613 - keras_recall_metric: 0.5950 - keras_precision_metric: 0.7583 - keras_f2_metric: 0.6214 - val_loss: 0.3852 - val_sparse_categorical_accuracy: 0.8356 - val_keras_recall_metric: 0.4270 - val_keras_precision_metric: 0.7273 - val_keras_f2_metric: 0.4655\n", + "Epoch 114/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3323 - sparse_categorical_accuracy: 0.8638 - keras_recall_metric: 0.5563 - keras_precision_metric: 0.7819 - keras_f2_metric: 0.5901 - val_loss: 0.3925 - val_sparse_categorical_accuracy: 0.8343 - val_keras_recall_metric: 0.4413 - val_keras_precision_metric: 0.7100 - val_keras_f2_metric: 0.4774\n", + "Epoch 115/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3311 - sparse_categorical_accuracy: 0.8624 - keras_recall_metric: 0.5914 - keras_precision_metric: 0.7750 - keras_f2_metric: 0.6207 - val_loss: 0.3794 - val_sparse_categorical_accuracy: 0.8379 - val_keras_recall_metric: 0.4163 - val_keras_precision_metric: 0.7497 - val_keras_f2_metric: 0.4569\n", + "Epoch 116/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3283 - sparse_categorical_accuracy: 0.8658 - keras_recall_metric: 0.5730 - keras_precision_metric: 0.7794 - keras_f2_metric: 0.6046 - val_loss: 0.3781 - val_sparse_categorical_accuracy: 0.8355 - val_keras_recall_metric: 0.4220 - val_keras_precision_metric: 0.7309 - val_keras_f2_metric: 0.4610\n", + "Epoch 117/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3279 - sparse_categorical_accuracy: 0.8639 - keras_recall_metric: 0.5952 - keras_precision_metric: 0.7507 - keras_f2_metric: 0.6206 - val_loss: 0.3836 - val_sparse_categorical_accuracy: 0.8356 - val_keras_recall_metric: 0.4226 - val_keras_precision_metric: 0.7308 - val_keras_f2_metric: 0.4615\n", + "Epoch 118/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3275 - sparse_categorical_accuracy: 0.8660 - keras_recall_metric: 0.5465 - keras_precision_metric: 0.7879 - keras_f2_metric: 0.5818 - val_loss: 0.3839 - val_sparse_categorical_accuracy: 0.8363 - val_keras_recall_metric: 0.4192 - val_keras_precision_metric: 0.7375 - val_keras_f2_metric: 0.4588\n", + "Epoch 119/200\n", + "100/100 [==============================] - 1s 6ms/sample - loss: 0.3278 - sparse_categorical_accuracy: 0.8641 - keras_recall_metric: 0.6001 - keras_precision_metric: 0.7693 - keras_f2_metric: 0.6273 - val_loss: 0.3800 - val_sparse_categorical_accuracy: 0.8372 - val_keras_recall_metric: 0.4335 - val_keras_precision_metric: 0.7313 - val_keras_f2_metric: 0.4719\n", + "Epoch 120/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3260 - sparse_categorical_accuracy: 0.8662 - keras_recall_metric: 0.5854 - keras_precision_metric: 0.7630 - keras_f2_metric: 0.6138 - val_loss: 0.3831 - val_sparse_categorical_accuracy: 0.8363 - val_keras_recall_metric: 0.4065 - val_keras_precision_metric: 0.7488 - val_keras_f2_metric: 0.4474\n", + "Epoch 121/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3260 - sparse_categorical_accuracy: 0.8655 - keras_recall_metric: 0.5642 - keras_precision_metric: 0.7965 - keras_f2_metric: 0.5985 - val_loss: 0.3796 - val_sparse_categorical_accuracy: 0.8362 - val_keras_recall_metric: 0.4180 - val_keras_precision_metric: 0.7381 - val_keras_f2_metric: 0.4577\n", + "Epoch 122/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3266 - sparse_categorical_accuracy: 0.8654 - keras_recall_metric: 0.6195 - keras_precision_metric: 0.7528 - keras_f2_metric: 0.6420 - val_loss: 0.3846 - val_sparse_categorical_accuracy: 0.8354 - val_keras_recall_metric: 0.4599 - val_keras_precision_metric: 0.7033 - val_keras_f2_metric: 0.4941\n", + "Epoch 123/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3255 - sparse_categorical_accuracy: 0.8672 - keras_recall_metric: 0.5709 - keras_precision_metric: 0.7777 - keras_f2_metric: 0.6029 - val_loss: 0.3888 - val_sparse_categorical_accuracy: 0.8343 - val_keras_recall_metric: 0.4362 - val_keras_precision_metric: 0.7134 - val_keras_f2_metric: 0.4729\n", + "Epoch 124/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3275 - sparse_categorical_accuracy: 0.8660 - keras_recall_metric: 0.5873 - keras_precision_metric: 0.7786 - keras_f2_metric: 0.6173 - val_loss: 0.3773 - val_sparse_categorical_accuracy: 0.8366 - val_keras_recall_metric: 0.4060 - val_keras_precision_metric: 0.7509 - val_keras_f2_metric: 0.4471\n", + "Epoch 125/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3251 - sparse_categorical_accuracy: 0.8657 - keras_recall_metric: 0.5996 - keras_precision_metric: 0.7504 - keras_f2_metric: 0.6244 - val_loss: 0.3904 - val_sparse_categorical_accuracy: 0.8347 - val_keras_recall_metric: 0.4699 - val_keras_precision_metric: 0.6940 - val_keras_f2_metric: 0.5023\n", + "Epoch 126/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3246 - sparse_categorical_accuracy: 0.8686 - keras_recall_metric: 0.5800 - keras_precision_metric: 0.7841 - keras_f2_metric: 0.6117 - val_loss: 0.3784 - val_sparse_categorical_accuracy: 0.8377 - val_keras_recall_metric: 0.3816 - val_keras_precision_metric: 0.7839 - val_keras_f2_metric: 0.4252\n", + "Epoch 127/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3248 - sparse_categorical_accuracy: 0.8671 - keras_recall_metric: 0.5939 - keras_precision_metric: 0.7903 - keras_f2_metric: 0.6246 - val_loss: 0.3781 - val_sparse_categorical_accuracy: 0.8342 - val_keras_recall_metric: 0.4605 - val_keras_precision_metric: 0.6972 - val_keras_f2_metric: 0.4941\n", + "Epoch 128/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3249 - sparse_categorical_accuracy: 0.8650 - keras_recall_metric: 0.6062 - keras_precision_metric: 0.7661 - keras_f2_metric: 0.6325 - val_loss: 0.3916 - val_sparse_categorical_accuracy: 0.8346 - val_keras_recall_metric: 0.4767 - val_keras_precision_metric: 0.6900 - val_keras_f2_metric: 0.5081\n", + "Epoch 129/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3244 - sparse_categorical_accuracy: 0.8689 - keras_recall_metric: 0.5727 - keras_precision_metric: 0.7906 - keras_f2_metric: 0.6060 - val_loss: 0.3809 - val_sparse_categorical_accuracy: 0.8359 - val_keras_recall_metric: 0.4307 - val_keras_precision_metric: 0.7259 - val_keras_f2_metric: 0.4689\n", + "Epoch 130/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3249 - sparse_categorical_accuracy: 0.8666 - keras_recall_metric: 0.6013 - keras_precision_metric: 0.7579 - keras_f2_metric: 0.6265 - val_loss: 0.3834 - val_sparse_categorical_accuracy: 0.8353 - val_keras_recall_metric: 0.4281 - val_keras_precision_metric: 0.7247 - val_keras_f2_metric: 0.4662\n", + "Epoch 131/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3249 - sparse_categorical_accuracy: 0.8671 - keras_recall_metric: 0.5995 - keras_precision_metric: 0.7417 - keras_f2_metric: 0.6229 - val_loss: 0.3817 - val_sparse_categorical_accuracy: 0.8349 - val_keras_recall_metric: 0.4515 - val_keras_precision_metric: 0.7062 - val_keras_f2_metric: 0.4866\n", + "Epoch 132/200\n", + "100/100 [==============================] - 1s 6ms/sample - loss: 0.3261 - sparse_categorical_accuracy: 0.8672 - keras_recall_metric: 0.5842 - keras_precision_metric: 0.7880 - keras_f2_metric: 0.6155 - val_loss: 0.3839 - val_sparse_categorical_accuracy: 0.8367 - val_keras_recall_metric: 0.4764 - val_keras_precision_metric: 0.6996 - val_keras_f2_metric: 0.5088\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 133/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3246 - sparse_categorical_accuracy: 0.8675 - keras_recall_metric: 0.6045 - keras_precision_metric: 0.7887 - keras_f2_metric: 0.6339 - val_loss: 0.3832 - val_sparse_categorical_accuracy: 0.8351 - val_keras_recall_metric: 0.4344 - val_keras_precision_metric: 0.7191 - val_keras_f2_metric: 0.4717\n", + "Epoch 134/200\n", + "100/100 [==============================] - 1s 6ms/sample - loss: 0.3238 - sparse_categorical_accuracy: 0.8669 - keras_recall_metric: 0.6020 - keras_precision_metric: 0.7702 - keras_f2_metric: 0.6285 - val_loss: 0.3827 - val_sparse_categorical_accuracy: 0.8361 - val_keras_recall_metric: 0.4634 - val_keras_precision_metric: 0.7044 - val_keras_f2_metric: 0.4975\n", + "Epoch 135/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3204 - sparse_categorical_accuracy: 0.8709 - keras_recall_metric: 0.5850 - keras_precision_metric: 0.7797 - keras_f2_metric: 0.6155 - val_loss: 0.3747 - val_sparse_categorical_accuracy: 0.8370 - val_keras_recall_metric: 0.4327 - val_keras_precision_metric: 0.7308 - val_keras_f2_metric: 0.4711\n", + "Epoch 136/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3195 - sparse_categorical_accuracy: 0.8689 - keras_recall_metric: 0.6408 - keras_precision_metric: 0.7487 - keras_f2_metric: 0.6583 - val_loss: 0.3916 - val_sparse_categorical_accuracy: 0.8330 - val_keras_recall_metric: 0.4819 - val_keras_precision_metric: 0.6804 - val_keras_f2_metric: 0.5118\n", + "Epoch 137/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3234 - sparse_categorical_accuracy: 0.8711 - keras_recall_metric: 0.5837 - keras_precision_metric: 0.8327 - keras_f2_metric: 0.6207 - val_loss: 0.3854 - val_sparse_categorical_accuracy: 0.8360 - val_keras_recall_metric: 0.4714 - val_keras_precision_metric: 0.6991 - val_keras_f2_metric: 0.5042\n", + "Epoch 138/200\n", + "100/100 [==============================] - 1s 6ms/sample - loss: 0.3211 - sparse_categorical_accuracy: 0.8682 - keras_recall_metric: 0.6495 - keras_precision_metric: 0.7527 - keras_f2_metric: 0.6674 - val_loss: 0.3890 - val_sparse_categorical_accuracy: 0.8346 - val_keras_recall_metric: 0.4913 - val_keras_precision_metric: 0.6821 - val_keras_f2_metric: 0.5204\n", + "Epoch 139/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3211 - sparse_categorical_accuracy: 0.8715 - keras_recall_metric: 0.6136 - keras_precision_metric: 0.7934 - keras_f2_metric: 0.6424 - val_loss: 0.3849 - val_sparse_categorical_accuracy: 0.8369 - val_keras_recall_metric: 0.4582 - val_keras_precision_metric: 0.7120 - val_keras_f2_metric: 0.4934\n", + "Epoch 140/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3184 - sparse_categorical_accuracy: 0.8715 - keras_recall_metric: 0.6146 - keras_precision_metric: 0.7466 - keras_f2_metric: 0.6350 - val_loss: 0.3793 - val_sparse_categorical_accuracy: 0.8373 - val_keras_recall_metric: 0.4514 - val_keras_precision_metric: 0.7184 - val_keras_f2_metric: 0.4877\n", + "Epoch 141/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3174 - sparse_categorical_accuracy: 0.8713 - keras_recall_metric: 0.5984 - keras_precision_metric: 0.7824 - keras_f2_metric: 0.6273 - val_loss: 0.3818 - val_sparse_categorical_accuracy: 0.8371 - val_keras_recall_metric: 0.4745 - val_keras_precision_metric: 0.7024 - val_keras_f2_metric: 0.5074\n", + "Epoch 142/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3166 - sparse_categorical_accuracy: 0.8732 - keras_recall_metric: 0.6055 - keras_precision_metric: 0.7816 - keras_f2_metric: 0.6340 - val_loss: 0.3759 - val_sparse_categorical_accuracy: 0.8368 - val_keras_recall_metric: 0.4517 - val_keras_precision_metric: 0.7156 - val_keras_f2_metric: 0.4876\n", + "Epoch 143/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3158 - sparse_categorical_accuracy: 0.8718 - keras_recall_metric: 0.6037 - keras_precision_metric: 0.7900 - keras_f2_metric: 0.6329 - val_loss: 0.3807 - val_sparse_categorical_accuracy: 0.8364 - val_keras_recall_metric: 0.4638 - val_keras_precision_metric: 0.7058 - val_keras_f2_metric: 0.4980\n", + "Epoch 144/200\n", + "100/100 [==============================] - 1s 6ms/sample - loss: 0.3166 - sparse_categorical_accuracy: 0.8708 - keras_recall_metric: 0.6319 - keras_precision_metric: 0.7678 - keras_f2_metric: 0.6550 - val_loss: 0.3781 - val_sparse_categorical_accuracy: 0.8381 - val_keras_recall_metric: 0.4593 - val_keras_precision_metric: 0.7171 - val_keras_f2_metric: 0.4949\n", + "Epoch 145/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3149 - sparse_categorical_accuracy: 0.8737 - keras_recall_metric: 0.6235 - keras_precision_metric: 0.7807 - keras_f2_metric: 0.6494 - val_loss: 0.3822 - val_sparse_categorical_accuracy: 0.8369 - val_keras_recall_metric: 0.4656 - val_keras_precision_metric: 0.7070 - val_keras_f2_metric: 0.4997\n", + "Epoch 146/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3134 - sparse_categorical_accuracy: 0.8744 - keras_recall_metric: 0.6128 - keras_precision_metric: 0.7822 - keras_f2_metric: 0.6405 - val_loss: 0.3820 - val_sparse_categorical_accuracy: 0.8372 - val_keras_recall_metric: 0.4808 - val_keras_precision_metric: 0.6994 - val_keras_f2_metric: 0.5128\n", + "Epoch 147/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3127 - sparse_categorical_accuracy: 0.8758 - keras_recall_metric: 0.5950 - keras_precision_metric: 0.7938 - keras_f2_metric: 0.6261 - val_loss: 0.3765 - val_sparse_categorical_accuracy: 0.8381 - val_keras_recall_metric: 0.4361 - val_keras_precision_metric: 0.7339 - val_keras_f2_metric: 0.4746\n", + "Epoch 148/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3135 - sparse_categorical_accuracy: 0.8736 - keras_recall_metric: 0.6305 - keras_precision_metric: 0.7618 - keras_f2_metric: 0.6528 - val_loss: 0.3786 - val_sparse_categorical_accuracy: 0.8374 - val_keras_recall_metric: 0.4534 - val_keras_precision_metric: 0.7174 - val_keras_f2_metric: 0.4894\n", + "Epoch 149/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3124 - sparse_categorical_accuracy: 0.8739 - keras_recall_metric: 0.6149 - keras_precision_metric: 0.7789 - keras_f2_metric: 0.6418 - val_loss: 0.3820 - val_sparse_categorical_accuracy: 0.8358 - val_keras_recall_metric: 0.4781 - val_keras_precision_metric: 0.6945 - val_keras_f2_metric: 0.5099\n", + "Epoch 150/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3114 - sparse_categorical_accuracy: 0.8748 - keras_recall_metric: 0.6236 - keras_precision_metric: 0.7769 - keras_f2_metric: 0.6491 - val_loss: 0.3801 - val_sparse_categorical_accuracy: 0.8362 - val_keras_recall_metric: 0.4577 - val_keras_precision_metric: 0.7085 - val_keras_f2_metric: 0.4926\n", + "Epoch 151/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3127 - sparse_categorical_accuracy: 0.8747 - keras_recall_metric: 0.5959 - keras_precision_metric: 0.7747 - keras_f2_metric: 0.6247 - val_loss: 0.3772 - val_sparse_categorical_accuracy: 0.8378 - val_keras_recall_metric: 0.4492 - val_keras_precision_metric: 0.7223 - val_keras_f2_metric: 0.4859\n", + "Epoch 152/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3131 - sparse_categorical_accuracy: 0.8734 - keras_recall_metric: 0.6201 - keras_precision_metric: 0.7670 - keras_f2_metric: 0.6445 - val_loss: 0.3751 - val_sparse_categorical_accuracy: 0.8387 - val_keras_recall_metric: 0.4599 - val_keras_precision_metric: 0.7197 - val_keras_f2_metric: 0.4957\n", + "Epoch 153/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3136 - sparse_categorical_accuracy: 0.8747 - keras_recall_metric: 0.6176 - keras_precision_metric: 0.7530 - keras_f2_metric: 0.6383 - val_loss: 0.3843 - val_sparse_categorical_accuracy: 0.8375 - val_keras_recall_metric: 0.4691 - val_keras_precision_metric: 0.7076 - val_keras_f2_metric: 0.5030\n", + "Epoch 154/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3144 - sparse_categorical_accuracy: 0.8742 - keras_recall_metric: 0.5885 - keras_precision_metric: 0.7836 - keras_f2_metric: 0.6192 - val_loss: 0.3757 - val_sparse_categorical_accuracy: 0.8379 - val_keras_recall_metric: 0.4489 - val_keras_precision_metric: 0.7234 - val_keras_f2_metric: 0.4857\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 155/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3120 - sparse_categorical_accuracy: 0.8737 - keras_recall_metric: 0.6103 - keras_precision_metric: 0.7631 - keras_f2_metric: 0.6356 - val_loss: 0.3826 - val_sparse_categorical_accuracy: 0.8374 - val_keras_recall_metric: 0.4709 - val_keras_precision_metric: 0.7063 - val_keras_f2_metric: 0.5045\n", + "Epoch 156/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3116 - sparse_categorical_accuracy: 0.8769 - keras_recall_metric: 0.6223 - keras_precision_metric: 0.7824 - keras_f2_metric: 0.6483 - val_loss: 0.3781 - val_sparse_categorical_accuracy: 0.8360 - val_keras_recall_metric: 0.4801 - val_keras_precision_metric: 0.6941 - val_keras_f2_metric: 0.5117\n", + "Epoch 157/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3115 - sparse_categorical_accuracy: 0.8739 - keras_recall_metric: 0.6146 - keras_precision_metric: 0.7827 - keras_f2_metric: 0.6421 - val_loss: 0.3807 - val_sparse_categorical_accuracy: 0.8367 - val_keras_recall_metric: 0.4679 - val_keras_precision_metric: 0.7045 - val_keras_f2_metric: 0.5016\n", + "Epoch 158/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3103 - sparse_categorical_accuracy: 0.8778 - keras_recall_metric: 0.6229 - keras_precision_metric: 0.7867 - keras_f2_metric: 0.6485 - val_loss: 0.3790 - val_sparse_categorical_accuracy: 0.8375 - val_keras_recall_metric: 0.4560 - val_keras_precision_metric: 0.7165 - val_keras_f2_metric: 0.4917\n", + "Epoch 159/200\n", + "100/100 [==============================] - 1s 6ms/sample - loss: 0.3094 - sparse_categorical_accuracy: 0.8766 - keras_recall_metric: 0.6177 - keras_precision_metric: 0.7953 - keras_f2_metric: 0.6466 - val_loss: 0.3798 - val_sparse_categorical_accuracy: 0.8361 - val_keras_recall_metric: 0.4745 - val_keras_precision_metric: 0.6978 - val_keras_f2_metric: 0.5070\n", + "Epoch 160/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3093 - sparse_categorical_accuracy: 0.8754 - keras_recall_metric: 0.6096 - keras_precision_metric: 0.7944 - keras_f2_metric: 0.6389 - val_loss: 0.3757 - val_sparse_categorical_accuracy: 0.8385 - val_keras_recall_metric: 0.4438 - val_keras_precision_metric: 0.7303 - val_keras_f2_metric: 0.4816\n", + "Epoch 161/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3078 - sparse_categorical_accuracy: 0.8771 - keras_recall_metric: 0.6201 - keras_precision_metric: 0.8078 - keras_f2_metric: 0.6502 - val_loss: 0.3781 - val_sparse_categorical_accuracy: 0.8380 - val_keras_recall_metric: 0.4741 - val_keras_precision_metric: 0.7072 - val_keras_f2_metric: 0.5075\n", + "Epoch 162/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3065 - sparse_categorical_accuracy: 0.8778 - keras_recall_metric: 0.6269 - keras_precision_metric: 0.7726 - keras_f2_metric: 0.6513 - val_loss: 0.3797 - val_sparse_categorical_accuracy: 0.8367 - val_keras_recall_metric: 0.4864 - val_keras_precision_metric: 0.6940 - val_keras_f2_metric: 0.5174\n", + "Epoch 163/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3069 - sparse_categorical_accuracy: 0.8772 - keras_recall_metric: 0.6308 - keras_precision_metric: 0.7830 - keras_f2_metric: 0.6561 - val_loss: 0.3792 - val_sparse_categorical_accuracy: 0.8383 - val_keras_recall_metric: 0.4513 - val_keras_precision_metric: 0.7234 - val_keras_f2_metric: 0.4880\n", + "Epoch 164/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3072 - sparse_categorical_accuracy: 0.8785 - keras_recall_metric: 0.5984 - keras_precision_metric: 0.7890 - keras_f2_metric: 0.6287 - val_loss: 0.3773 - val_sparse_categorical_accuracy: 0.8357 - val_keras_recall_metric: 0.4616 - val_keras_precision_metric: 0.7038 - val_keras_f2_metric: 0.4957\n", + "Epoch 165/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3075 - sparse_categorical_accuracy: 0.8763 - keras_recall_metric: 0.6267 - keras_precision_metric: 0.7901 - keras_f2_metric: 0.6537 - val_loss: 0.3732 - val_sparse_categorical_accuracy: 0.8387 - val_keras_recall_metric: 0.4564 - val_keras_precision_metric: 0.7221 - val_keras_f2_metric: 0.4927\n", + "Epoch 166/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3056 - sparse_categorical_accuracy: 0.8774 - keras_recall_metric: 0.6123 - keras_precision_metric: 0.8015 - keras_f2_metric: 0.6420 - val_loss: 0.3742 - val_sparse_categorical_accuracy: 0.8385 - val_keras_recall_metric: 0.4529 - val_keras_precision_metric: 0.7234 - val_keras_f2_metric: 0.4895\n", + "Epoch 167/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3055 - sparse_categorical_accuracy: 0.8774 - keras_recall_metric: 0.6199 - keras_precision_metric: 0.7963 - keras_f2_metric: 0.6481 - val_loss: 0.3811 - val_sparse_categorical_accuracy: 0.8377 - val_keras_recall_metric: 0.4653 - val_keras_precision_metric: 0.7113 - val_keras_f2_metric: 0.4999\n", + "Epoch 168/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3049 - sparse_categorical_accuracy: 0.8794 - keras_recall_metric: 0.6136 - keras_precision_metric: 0.8027 - keras_f2_metric: 0.6437 - val_loss: 0.3801 - val_sparse_categorical_accuracy: 0.8355 - val_keras_recall_metric: 0.4930 - val_keras_precision_metric: 0.6852 - val_keras_f2_metric: 0.5223\n", + "Epoch 169/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3045 - sparse_categorical_accuracy: 0.8779 - keras_recall_metric: 0.6367 - keras_precision_metric: 0.7810 - keras_f2_metric: 0.6610 - val_loss: 0.3766 - val_sparse_categorical_accuracy: 0.8380 - val_keras_recall_metric: 0.4733 - val_keras_precision_metric: 0.7076 - val_keras_f2_metric: 0.5069\n", + "Epoch 170/200\n", + "100/100 [==============================] - 1s 6ms/sample - loss: 0.3049 - sparse_categorical_accuracy: 0.8784 - keras_recall_metric: 0.6187 - keras_precision_metric: 0.8098 - keras_f2_metric: 0.6491 - val_loss: 0.3817 - val_sparse_categorical_accuracy: 0.8370 - val_keras_recall_metric: 0.4730 - val_keras_precision_metric: 0.7029 - val_keras_f2_metric: 0.5061\n", + "Epoch 171/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.3044 - sparse_categorical_accuracy: 0.8788 - keras_recall_metric: 0.6282 - keras_precision_metric: 0.7813 - keras_f2_metric: 0.6538 - val_loss: 0.3732 - val_sparse_categorical_accuracy: 0.8401 - val_keras_recall_metric: 0.4549 - val_keras_precision_metric: 0.7304 - val_keras_f2_metric: 0.4920\n", + "Epoch 172/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3042 - sparse_categorical_accuracy: 0.8787 - keras_recall_metric: 0.6116 - keras_precision_metric: 0.7939 - keras_f2_metric: 0.6408 - val_loss: 0.3731 - val_sparse_categorical_accuracy: 0.8393 - val_keras_recall_metric: 0.4472 - val_keras_precision_metric: 0.7319 - val_keras_f2_metric: 0.4849\n", + "Epoch 173/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.3035 - sparse_categorical_accuracy: 0.8777 - keras_recall_metric: 0.6427 - keras_precision_metric: 0.8002 - keras_f2_metric: 0.6689 - val_loss: 0.3860 - val_sparse_categorical_accuracy: 0.8334 - val_keras_recall_metric: 0.4960 - val_keras_precision_metric: 0.6749 - val_keras_f2_metric: 0.5238\n", + "Epoch 174/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3039 - sparse_categorical_accuracy: 0.8795 - keras_recall_metric: 0.6058 - keras_precision_metric: 0.8033 - keras_f2_metric: 0.6368 - val_loss: 0.3740 - val_sparse_categorical_accuracy: 0.8374 - val_keras_recall_metric: 0.4523 - val_keras_precision_metric: 0.7181 - val_keras_f2_metric: 0.4885\n", + "Epoch 175/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3029 - sparse_categorical_accuracy: 0.8778 - keras_recall_metric: 0.6281 - keras_precision_metric: 0.7726 - keras_f2_metric: 0.6521 - val_loss: 0.3719 - val_sparse_categorical_accuracy: 0.8404 - val_keras_recall_metric: 0.4374 - val_keras_precision_metric: 0.7457 - val_keras_f2_metric: 0.4768\n", + "Epoch 176/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3024 - sparse_categorical_accuracy: 0.8792 - keras_recall_metric: 0.6214 - keras_precision_metric: 0.7868 - keras_f2_metric: 0.6486 - val_loss: 0.3746 - val_sparse_categorical_accuracy: 0.8392 - val_keras_recall_metric: 0.4581 - val_keras_precision_metric: 0.7237 - val_keras_f2_metric: 0.4943\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 177/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3018 - sparse_categorical_accuracy: 0.8805 - keras_recall_metric: 0.6468 - keras_precision_metric: 0.8208 - keras_f2_metric: 0.6753 - val_loss: 0.3783 - val_sparse_categorical_accuracy: 0.8366 - val_keras_recall_metric: 0.4858 - val_keras_precision_metric: 0.6938 - val_keras_f2_metric: 0.5168\n", + "Epoch 178/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3008 - sparse_categorical_accuracy: 0.8801 - keras_recall_metric: 0.6473 - keras_precision_metric: 0.7927 - keras_f2_metric: 0.6719 - val_loss: 0.3774 - val_sparse_categorical_accuracy: 0.8379 - val_keras_recall_metric: 0.4674 - val_keras_precision_metric: 0.7105 - val_keras_f2_metric: 0.5018\n", + "Epoch 179/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3007 - sparse_categorical_accuracy: 0.8808 - keras_recall_metric: 0.6248 - keras_precision_metric: 0.8021 - keras_f2_metric: 0.6536 - val_loss: 0.3733 - val_sparse_categorical_accuracy: 0.8390 - val_keras_recall_metric: 0.4550 - val_keras_precision_metric: 0.7245 - val_keras_f2_metric: 0.4916\n", + "Epoch 180/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3005 - sparse_categorical_accuracy: 0.8792 - keras_recall_metric: 0.6408 - keras_precision_metric: 0.7730 - keras_f2_metric: 0.6630 - val_loss: 0.3765 - val_sparse_categorical_accuracy: 0.8387 - val_keras_recall_metric: 0.4840 - val_keras_precision_metric: 0.7041 - val_keras_f2_metric: 0.5163\n", + "Epoch 181/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3015 - sparse_categorical_accuracy: 0.8818 - keras_recall_metric: 0.6271 - keras_precision_metric: 0.8189 - keras_f2_metric: 0.6579 - val_loss: 0.3790 - val_sparse_categorical_accuracy: 0.8361 - val_keras_recall_metric: 0.4959 - val_keras_precision_metric: 0.6861 - val_keras_f2_metric: 0.5250\n", + "Epoch 182/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3010 - sparse_categorical_accuracy: 0.8786 - keras_recall_metric: 0.6182 - keras_precision_metric: 0.7503 - keras_f2_metric: 0.6406 - val_loss: 0.3695 - val_sparse_categorical_accuracy: 0.8403 - val_keras_recall_metric: 0.4101 - val_keras_precision_metric: 0.7706 - val_keras_f2_metric: 0.4524\n", + "Epoch 183/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3031 - sparse_categorical_accuracy: 0.8786 - keras_recall_metric: 0.6238 - keras_precision_metric: 0.7853 - keras_f2_metric: 0.6504 - val_loss: 0.3761 - val_sparse_categorical_accuracy: 0.8367 - val_keras_recall_metric: 0.4694 - val_keras_precision_metric: 0.7038 - val_keras_f2_metric: 0.5029\n", + "Epoch 184/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3019 - sparse_categorical_accuracy: 0.8794 - keras_recall_metric: 0.6362 - keras_precision_metric: 0.8053 - keras_f2_metric: 0.6640 - val_loss: 0.3849 - val_sparse_categorical_accuracy: 0.8334 - val_keras_recall_metric: 0.4872 - val_keras_precision_metric: 0.6794 - val_keras_f2_metric: 0.5164\n", + "Epoch 185/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3033 - sparse_categorical_accuracy: 0.8784 - keras_recall_metric: 0.6185 - keras_precision_metric: 0.8021 - keras_f2_metric: 0.6481 - val_loss: 0.3774 - val_sparse_categorical_accuracy: 0.8370 - val_keras_recall_metric: 0.4793 - val_keras_precision_metric: 0.6992 - val_keras_f2_metric: 0.5115\n", + "Epoch 186/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.3010 - sparse_categorical_accuracy: 0.8788 - keras_recall_metric: 0.6300 - keras_precision_metric: 0.7832 - keras_f2_metric: 0.6556 - val_loss: 0.3710 - val_sparse_categorical_accuracy: 0.8403 - val_keras_recall_metric: 0.4493 - val_keras_precision_metric: 0.7356 - val_keras_f2_metric: 0.4872\n", + "Epoch 187/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.2992 - sparse_categorical_accuracy: 0.8811 - keras_recall_metric: 0.6133 - keras_precision_metric: 0.8191 - keras_f2_metric: 0.6453 - val_loss: 0.3721 - val_sparse_categorical_accuracy: 0.8390 - val_keras_recall_metric: 0.4660 - val_keras_precision_metric: 0.7172 - val_keras_f2_metric: 0.5011\n", + "Epoch 188/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.2989 - sparse_categorical_accuracy: 0.8797 - keras_recall_metric: 0.6370 - keras_precision_metric: 0.8056 - keras_f2_metric: 0.6646 - val_loss: 0.3765 - val_sparse_categorical_accuracy: 0.8372 - val_keras_recall_metric: 0.5001 - val_keras_precision_metric: 0.6887 - val_keras_f2_metric: 0.5291\n", + "Epoch 189/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.2976 - sparse_categorical_accuracy: 0.8809 - keras_recall_metric: 0.6471 - keras_precision_metric: 0.8013 - keras_f2_metric: 0.6730 - val_loss: 0.3774 - val_sparse_categorical_accuracy: 0.8382 - val_keras_recall_metric: 0.4955 - val_keras_precision_metric: 0.6955 - val_keras_f2_metric: 0.5258\n", + "Epoch 190/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.2977 - sparse_categorical_accuracy: 0.8820 - keras_recall_metric: 0.6209 - keras_precision_metric: 0.8101 - keras_f2_metric: 0.6512 - val_loss: 0.3716 - val_sparse_categorical_accuracy: 0.8376 - val_keras_recall_metric: 0.4576 - val_keras_precision_metric: 0.7159 - val_keras_f2_metric: 0.4932\n", + "Epoch 191/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.2973 - sparse_categorical_accuracy: 0.8804 - keras_recall_metric: 0.6462 - keras_precision_metric: 0.7884 - keras_f2_metric: 0.6703 - val_loss: 0.3747 - val_sparse_categorical_accuracy: 0.8390 - val_keras_recall_metric: 0.4763 - val_keras_precision_metric: 0.7101 - val_keras_f2_metric: 0.5099\n", + "Epoch 192/200\n", + "100/100 [==============================] - 1s 6ms/sample - loss: 0.2956 - sparse_categorical_accuracy: 0.8831 - keras_recall_metric: 0.6274 - keras_precision_metric: 0.8073 - keras_f2_metric: 0.6566 - val_loss: 0.3717 - val_sparse_categorical_accuracy: 0.8397 - val_keras_recall_metric: 0.4598 - val_keras_precision_metric: 0.7248 - val_keras_f2_metric: 0.4961\n", + "Epoch 193/200\n", + "100/100 [==============================] - 0s 5ms/sample - loss: 0.2959 - sparse_categorical_accuracy: 0.8829 - keras_recall_metric: 0.6319 - keras_precision_metric: 0.8226 - keras_f2_metric: 0.6625 - val_loss: 0.3709 - val_sparse_categorical_accuracy: 0.8389 - val_keras_recall_metric: 0.4701 - val_keras_precision_metric: 0.7138 - val_keras_f2_metric: 0.5046\n", + "Epoch 194/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.2955 - sparse_categorical_accuracy: 0.8816 - keras_recall_metric: 0.6496 - keras_precision_metric: 0.7855 - keras_f2_metric: 0.6722 - val_loss: 0.3725 - val_sparse_categorical_accuracy: 0.8409 - val_keras_recall_metric: 0.4447 - val_keras_precision_metric: 0.7425 - val_keras_f2_metric: 0.4835\n", + "Epoch 195/200\n", + "100/100 [==============================] - 1s 6ms/sample - loss: 0.2947 - sparse_categorical_accuracy: 0.8832 - keras_recall_metric: 0.6244 - keras_precision_metric: 0.8234 - keras_f2_metric: 0.6556 - val_loss: 0.3715 - val_sparse_categorical_accuracy: 0.8396 - val_keras_recall_metric: 0.4870 - val_keras_precision_metric: 0.7065 - val_keras_f2_metric: 0.5193\n", + "Epoch 196/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.2937 - sparse_categorical_accuracy: 0.8829 - keras_recall_metric: 0.6326 - keras_precision_metric: 0.7790 - keras_f2_metric: 0.6571 - val_loss: 0.3685 - val_sparse_categorical_accuracy: 0.8403 - val_keras_recall_metric: 0.4466 - val_keras_precision_metric: 0.7377 - val_keras_f2_metric: 0.4849\n", + "Epoch 197/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.2938 - sparse_categorical_accuracy: 0.8836 - keras_recall_metric: 0.6350 - keras_precision_metric: 0.8211 - keras_f2_metric: 0.6648 - val_loss: 0.3738 - val_sparse_categorical_accuracy: 0.8392 - val_keras_recall_metric: 0.4664 - val_keras_precision_metric: 0.7178 - val_keras_f2_metric: 0.5016\n", + "Epoch 198/200\n", + "100/100 [==============================] - 1s 5ms/sample - loss: 0.2938 - sparse_categorical_accuracy: 0.8823 - keras_recall_metric: 0.6540 - keras_precision_metric: 0.7794 - keras_f2_metric: 0.6751 - val_loss: 0.3809 - val_sparse_categorical_accuracy: 0.8360 - val_keras_recall_metric: 0.5058 - val_keras_precision_metric: 0.6808 - val_keras_f2_metric: 0.5332\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 199/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.2957 - sparse_categorical_accuracy: 0.8828 - keras_recall_metric: 0.6371 - keras_precision_metric: 0.7944 - keras_f2_metric: 0.6630 - val_loss: 0.3784 - val_sparse_categorical_accuracy: 0.8364 - val_keras_recall_metric: 0.4895 - val_keras_precision_metric: 0.6910 - val_keras_f2_metric: 0.5198\n", + "Epoch 200/200\n", + "100/100 [==============================] - 0s 4ms/sample - loss: 0.2950 - sparse_categorical_accuracy: 0.8828 - keras_recall_metric: 0.6185 - keras_precision_metric: 0.7830 - keras_f2_metric: 0.6456 - val_loss: 0.3695 - val_sparse_categorical_accuracy: 0.8406 - val_keras_recall_metric: 0.4244 - val_keras_precision_metric: 0.7581 - val_keras_f2_metric: 0.4654\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 63, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "trainingStopCallback = haltCallback()\n", + "amp_model.fit(\n", + " train_data_phs,\n", + " train_flag,\n", + " validation_data=(test_data_phs, test_flag),\n", + " epochs=200,\n", + " batch_size=32\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 64, + "metadata": {}, + "outputs": [], + "source": [ + "flags = amp_model.predict(test_data_phs)\n", + "flags_out = keras_unpad_flags(flags)[:,:,:,None]" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, '15.46% ML Flags not Manual Flags')" + ] + }, + "execution_count": 65, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(figsize=(12,12), ncols=2, nrows=2)\n", + "ax = axes[0,0]\n", + "nan_array = np.ones_like(test_flag).astype(np.float64)\n", + "nan_array[test_flag == 1] = np.nan\n", + "ax.imshow(test_data_phs[0,:,:,0], aspect='auto')\n", + "ax.set_xlabel(\"Frequency Channels\", fontsize=15)\n", + "ax.set_ylabel(\"Time Integrations\", fontsize=15)\n", + "ax.set_title(\"Manual Flags\")\n", + "\n", + "ax = axes[0,1]\n", + "nan_array = np.ones_like(flags_out).astype(np.float64)\n", + "nan_array[flags_out == 1] = np.nan\n", + "ax.imshow((test_data_phs*nan_array)[0,:,:,0], aspect='auto')\n", + "ax.set_xlabel(\"Frequency Channels\", fontsize=15)\n", + "ax.set_ylabel(\"Time Integrations\", fontsize=15)\n", + "ax.set_title(\"ML Flags\")\n", + "\n", + "ax = axes[1,0]\n", + "ax.imshow(test_flag[0,:,:,0]*(1-flags_out[0,:,:,0]), aspect='auto')\n", + "ax.set_xlabel(\"Frequency Channels\", fontsize=15)\n", + "ax.set_ylabel(\"Time Integrations\", fontsize=15)\n", + "recall = np.sum(test_flag[0,:,:,0]*flags_out[0,:,:,0])/np.sum(test_flag[0,:,:,0])\n", + "ax.set_title(\"{0:.2f}% Manual Flags not ML Flags\".format((1-recall)*100))\n", + "\n", + "ax = axes[1,1]\n", + "ax.imshow((1-test_flag[0,:,:,0])*flags_out[0,:,:,0], aspect='auto')\n", + "ax.set_xlabel(\"Frequency Channels\", fontsize=15)\n", + "ax.set_ylabel(\"Time Integrations\", fontsize=15)\n", + "precision = np.sum(test_flag[0,:,:,0]*flags_out[0,:,:,0])/np.sum(flags_out[0,:,:,0])\n", + "ax.set_title(\"{0:.2f}% ML Flags not Manual Flags\".format((1-precision)*100))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### amplitude+phase input with three `layer':" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "metadata": {}, + "outputs": [], + "source": [ + "def make_amp_phs_model_(input_shape):\n", + " amp_input = Input(shape=input_shape, name=\"amp_input\")\n", + " phs_input = Input(shape=input_shape, name=\"phs_input\")\n", + "\n", + " # amplitude branch\n", + " ca1 = Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\")(amp_input)\n", + " ca2 = Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\")(ca1)\n", + " ca3 = Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\")(ca2)\n", + " ma1 = MaxPooling2D(pool_size=2, strides=2)(ca3)\n", + " la1 = LeakyReLU()(ma1)\n", + "\n", + " ca4 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(la1)\n", + " ca5 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(ca4)\n", + " ca6 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(ca5)\n", + " ma2 = MaxPooling2D(pool_size=2, strides=2)(ca6)\n", + " la2 = LeakyReLU()(ma2)\n", + " \n", + " ca7 = Conv2D(filters=64, kernel_size=3, strides=1, padding=\"same\")(la2)\n", + " ca8 = Conv2D(filters=64, kernel_size=3, strides=1, padding=\"same\")(ca7)\n", + " ca9 = Conv2D(filters=64, kernel_size=3, strides=1, padding=\"same\")(ca8)\n", + " ma3 = MaxPooling2D(pool_size=2, strides=2)(ca9)\n", + " la3 = LeakyReLU()(ma3)\n", + "\n", + " # phase branch\n", + " cp1 = Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\")(phs_input)\n", + " cp2 = Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\")(cp1)\n", + " cp3 = Conv2D(filters=16, kernel_size=3, strides=1, padding=\"same\")(cp2)\n", + " mp1 = MaxPooling2D(pool_size=2, strides=2)(cp3)\n", + " lp1 = LeakyReLU()(mp1)\n", + "\n", + " cp4 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(lp1)\n", + " cp5 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(cp4)\n", + " cp6 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(cp5)\n", + " mp2 = MaxPooling2D(pool_size=2, strides=2)(cp6)\n", + " lp2 = LeakyReLU()(mp2)\n", + " \n", + " cp7 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(lp2)\n", + " cp8 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(cp7)\n", + " cp9 = Conv2D(filters=32, kernel_size=3, strides=1, padding=\"same\")(cp8)\n", + " mp3 = MaxPooling2D(pool_size=2, strides=2)(cp9)\n", + " lp3 = LeakyReLU()(mp3)\n", + "\n", + " # concatenate\n", + " concat = concatenate([la3, lp3])\n", + "\n", + " # transpose layers\n", + " tr1 = Conv2DTranspose(filters=2, kernel_size=3, strides=2, padding='same')(concat)\n", + " tr2 = Conv2DTranspose(filters=2, kernel_size=3, strides=2, padding='same')(tr1)\n", + " tr3 = Conv2DTranspose(filters=2, kernel_size=3, strides=2, padding='same')(tr2)\n", + " bn1 = BatchNormalization()(tr3)\n", + " act = Activation(\"softmax\")(bn1)\n", + " \n", + " # build the model\n", + " model = Model(inputs=[amp_input, phs_input], outputs=[act])\n", + " \n", + " return model" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "metadata": {}, + "outputs": [], + "source": [ + "amp_phs_model = make_amp_phs_model_(input_shape)" + ] + }, + { + "cell_type": "code", + "execution_count": 68, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"model_4\"\n", + "__________________________________________________________________________________________________\n", + "Layer (type) Output Shape Param # Connected to \n", + "==================================================================================================\n", + "amp_input (InputLayer) [(None, 64, 1024, 1) 0 \n", + "__________________________________________________________________________________________________\n", + "phs_input (InputLayer) [(None, 64, 1024, 1) 0 \n", + "__________________________________________________________________________________________________\n", + "conv2d_87 (Conv2D) (None, 64, 1024, 16) 160 amp_input[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_96 (Conv2D) (None, 64, 1024, 16) 160 phs_input[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_88 (Conv2D) (None, 64, 1024, 16) 2320 conv2d_87[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_97 (Conv2D) (None, 64, 1024, 16) 2320 conv2d_96[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_89 (Conv2D) (None, 64, 1024, 16) 2320 conv2d_88[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_98 (Conv2D) (None, 64, 1024, 16) 2320 conv2d_97[0][0] \n", + "__________________________________________________________________________________________________\n", + "max_pooling2d_29 (MaxPooling2D) (None, 32, 512, 16) 0 conv2d_89[0][0] \n", + "__________________________________________________________________________________________________\n", + "max_pooling2d_32 (MaxPooling2D) (None, 32, 512, 16) 0 conv2d_98[0][0] \n", + "__________________________________________________________________________________________________\n", + "leaky_re_lu_29 (LeakyReLU) (None, 32, 512, 16) 0 max_pooling2d_29[0][0] \n", + "__________________________________________________________________________________________________\n", + "leaky_re_lu_32 (LeakyReLU) (None, 32, 512, 16) 0 max_pooling2d_32[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_90 (Conv2D) (None, 32, 512, 32) 4640 leaky_re_lu_29[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_99 (Conv2D) (None, 32, 512, 32) 4640 leaky_re_lu_32[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_91 (Conv2D) (None, 32, 512, 32) 9248 conv2d_90[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_100 (Conv2D) (None, 32, 512, 32) 9248 conv2d_99[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_92 (Conv2D) (None, 32, 512, 32) 9248 conv2d_91[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_101 (Conv2D) (None, 32, 512, 32) 9248 conv2d_100[0][0] \n", + "__________________________________________________________________________________________________\n", + "max_pooling2d_30 (MaxPooling2D) (None, 16, 256, 32) 0 conv2d_92[0][0] \n", + "__________________________________________________________________________________________________\n", + "max_pooling2d_33 (MaxPooling2D) (None, 16, 256, 32) 0 conv2d_101[0][0] \n", + "__________________________________________________________________________________________________\n", + "leaky_re_lu_30 (LeakyReLU) (None, 16, 256, 32) 0 max_pooling2d_30[0][0] \n", + "__________________________________________________________________________________________________\n", + "leaky_re_lu_33 (LeakyReLU) (None, 16, 256, 32) 0 max_pooling2d_33[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_93 (Conv2D) (None, 16, 256, 64) 18496 leaky_re_lu_30[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_102 (Conv2D) (None, 16, 256, 32) 9248 leaky_re_lu_33[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_94 (Conv2D) (None, 16, 256, 64) 36928 conv2d_93[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_103 (Conv2D) (None, 16, 256, 32) 9248 conv2d_102[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_95 (Conv2D) (None, 16, 256, 64) 36928 conv2d_94[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_104 (Conv2D) (None, 16, 256, 32) 9248 conv2d_103[0][0] \n", + "__________________________________________________________________________________________________\n", + "max_pooling2d_31 (MaxPooling2D) (None, 8, 128, 64) 0 conv2d_95[0][0] \n", + "__________________________________________________________________________________________________\n", + "max_pooling2d_34 (MaxPooling2D) (None, 8, 128, 32) 0 conv2d_104[0][0] \n", + "__________________________________________________________________________________________________\n", + "leaky_re_lu_31 (LeakyReLU) (None, 8, 128, 64) 0 max_pooling2d_31[0][0] \n", + "__________________________________________________________________________________________________\n", + "leaky_re_lu_34 (LeakyReLU) (None, 8, 128, 32) 0 max_pooling2d_34[0][0] \n", + "__________________________________________________________________________________________________\n", + "concatenate_4 (Concatenate) (None, 8, 128, 96) 0 leaky_re_lu_31[0][0] \n", + " leaky_re_lu_34[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_transpose_16 (Conv2DTran (None, 16, 256, 2) 1730 concatenate_4[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_transpose_17 (Conv2DTran (None, 32, 512, 2) 38 conv2d_transpose_16[0][0] \n", + "__________________________________________________________________________________________________\n", + "conv2d_transpose_18 (Conv2DTran (None, 64, 1024, 2) 38 conv2d_transpose_17[0][0] \n", + "__________________________________________________________________________________________________\n", + "batch_normalization_5 (BatchNor (None, 64, 1024, 2) 8 conv2d_transpose_18[0][0] \n", + "__________________________________________________________________________________________________\n", + "activation_5 (Activation) (None, 64, 1024, 2) 0 batch_normalization_5[0][0] \n", + "==================================================================================================\n", + "Total params: 177,782\n", + "Trainable params: 177,778\n", + "Non-trainable params: 4\n", + "__________________________________________________________________________________________________\n" + ] + } + ], + "source": [ + "amp_phs_model.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 69, + "metadata": {}, + "outputs": [], + "source": [ + "amp_phs_model.compile(optimizer=keras.optimizers.Adam(lr=0.001),loss=\"sparse_categorical_crossentropy\",\n", + " metrics=[\"sparse_categorical_accuracy\",keras_recall_metric,keras_precision_metric, keras_f2_metric]) " + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train on 100 samples, validate on 20 samples\n", + "Epoch 1/200\n", + "100/100 [==============================] - 2s 25ms/sample - loss: 0.9117 - sparse_categorical_accuracy: 0.5190 - keras_recall_metric: 0.4666 - keras_precision_metric: 0.2276 - keras_f2_metric: 0.3852 - val_loss: 0.7207 - val_sparse_categorical_accuracy: 0.4918 - val_keras_recall_metric: 0.5634 - val_keras_precision_metric: 0.2354 - val_keras_f2_metric: 0.4406\n", + "Epoch 2/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.8702 - sparse_categorical_accuracy: 0.5561 - keras_recall_metric: 0.4178 - keras_precision_metric: 0.2355 - keras_f2_metric: 0.3612 - val_loss: 0.7534 - val_sparse_categorical_accuracy: 0.5508 - val_keras_recall_metric: 0.4282 - val_keras_precision_metric: 0.2302 - val_keras_f2_metric: 0.3654\n", + "Epoch 3/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.8331 - sparse_categorical_accuracy: 0.5804 - keras_recall_metric: 0.3674 - keras_precision_metric: 0.2318 - keras_f2_metric: 0.3288 - val_loss: 0.7771 - val_sparse_categorical_accuracy: 0.5632 - val_keras_recall_metric: 0.3843 - val_keras_precision_metric: 0.2239 - val_keras_f2_metric: 0.3362\n", + "Epoch 4/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.8160 - sparse_categorical_accuracy: 0.5829 - keras_recall_metric: 0.3599 - keras_precision_metric: 0.2350 - keras_f2_metric: 0.3251 - val_loss: 0.7555 - val_sparse_categorical_accuracy: 0.5774 - val_keras_recall_metric: 0.3724 - val_keras_precision_metric: 0.2286 - val_keras_f2_metric: 0.3308\n", + "Epoch 5/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.7995 - sparse_categorical_accuracy: 0.5764 - keras_recall_metric: 0.3653 - keras_precision_metric: 0.2296 - keras_f2_metric: 0.3265 - val_loss: 0.7618 - val_sparse_categorical_accuracy: 0.5634 - val_keras_recall_metric: 0.4180 - val_keras_precision_metric: 0.2344 - val_keras_f2_metric: 0.3614\n", + "Epoch 6/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.7858 - sparse_categorical_accuracy: 0.5744 - keras_recall_metric: 0.3740 - keras_precision_metric: 0.2324 - keras_f2_metric: 0.3333 - val_loss: 0.7394 - val_sparse_categorical_accuracy: 0.5833 - val_keras_recall_metric: 0.3729 - val_keras_precision_metric: 0.2325 - val_keras_f2_metric: 0.3327\n", + "Epoch 7/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.7734 - sparse_categorical_accuracy: 0.5767 - keras_recall_metric: 0.3695 - keras_precision_metric: 0.2294 - keras_f2_metric: 0.3290 - val_loss: 0.7230 - val_sparse_categorical_accuracy: 0.6068 - val_keras_recall_metric: 0.3499 - val_keras_precision_metric: 0.2408 - val_keras_f2_metric: 0.3208\n", + "Epoch 8/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.7530 - sparse_categorical_accuracy: 0.6029 - keras_recall_metric: 0.3417 - keras_precision_metric: 0.2472 - keras_f2_metric: 0.3163 - val_loss: 0.7242 - val_sparse_categorical_accuracy: 0.6459 - val_keras_recall_metric: 0.2985 - val_keras_precision_metric: 0.2538 - val_keras_f2_metric: 0.2883\n", + "Epoch 9/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.7360 - sparse_categorical_accuracy: 0.6467 - keras_recall_metric: 0.2829 - keras_precision_metric: 0.2491 - keras_f2_metric: 0.2754 - val_loss: 0.7359 - val_sparse_categorical_accuracy: 0.6554 - val_keras_recall_metric: 0.2764 - val_keras_precision_metric: 0.2537 - val_keras_f2_metric: 0.2715\n", + "Epoch 10/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.7262 - sparse_categorical_accuracy: 0.6894 - keras_recall_metric: 0.2145 - keras_precision_metric: 0.2799 - keras_f2_metric: 0.2244 - val_loss: 0.7402 - val_sparse_categorical_accuracy: 0.6859 - val_keras_recall_metric: 0.2273 - val_keras_precision_metric: 0.2658 - val_keras_f2_metric: 0.2341\n", + "Epoch 11/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.7164 - sparse_categorical_accuracy: 0.7039 - keras_recall_metric: 0.2047 - keras_precision_metric: 0.2791 - keras_f2_metric: 0.2159 - val_loss: 0.7217 - val_sparse_categorical_accuracy: 0.6700 - val_keras_recall_metric: 0.2762 - val_keras_precision_metric: 0.2697 - val_keras_f2_metric: 0.2749\n", + "Epoch 12/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.7075 - sparse_categorical_accuracy: 0.6955 - keras_recall_metric: 0.2267 - keras_precision_metric: 0.2742 - keras_f2_metric: 0.2346 - val_loss: 0.7052 - val_sparse_categorical_accuracy: 0.6613 - val_keras_recall_metric: 0.2862 - val_keras_precision_metric: 0.2644 - val_keras_f2_metric: 0.2816\n", + "Epoch 13/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.6989 - sparse_categorical_accuracy: 0.6987 - keras_recall_metric: 0.2046 - keras_precision_metric: 0.2836 - keras_f2_metric: 0.2156 - val_loss: 0.7024 - val_sparse_categorical_accuracy: 0.7131 - val_keras_recall_metric: 0.1993 - val_keras_precision_metric: 0.2940 - val_keras_f2_metric: 0.2130\n", + "Epoch 14/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.6926 - sparse_categorical_accuracy: 0.7338 - keras_recall_metric: 0.1432 - keras_precision_metric: 0.3110 - keras_f2_metric: 0.1603 - val_loss: 0.6997 - val_sparse_categorical_accuracy: 0.7292 - val_keras_recall_metric: 0.1589 - val_keras_precision_metric: 0.3025 - val_keras_f2_metric: 0.1756\n", + "Epoch 15/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.6864 - sparse_categorical_accuracy: 0.7439 - keras_recall_metric: 0.1269 - keras_precision_metric: 0.3222 - keras_f2_metric: 0.1444 - val_loss: 0.6922 - val_sparse_categorical_accuracy: 0.7270 - val_keras_recall_metric: 0.1604 - val_keras_precision_metric: 0.2981 - val_keras_f2_metric: 0.1767\n", + "Epoch 16/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.6803 - sparse_categorical_accuracy: 0.7449 - keras_recall_metric: 0.1297 - keras_precision_metric: 0.3326 - keras_f2_metric: 0.1477 - val_loss: 0.6829 - val_sparse_categorical_accuracy: 0.7237 - val_keras_recall_metric: 0.1571 - val_keras_precision_metric: 0.2876 - val_keras_f2_metric: 0.1728\n", + "Epoch 17/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.6754 - sparse_categorical_accuracy: 0.7473 - keras_recall_metric: 0.1156 - keras_precision_metric: 0.3388 - keras_f2_metric: 0.1330 - val_loss: 0.6775 - val_sparse_categorical_accuracy: 0.7430 - val_keras_recall_metric: 0.1251 - val_keras_precision_metric: 0.3156 - val_keras_f2_metric: 0.1422\n", + "Epoch 18/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.6713 - sparse_categorical_accuracy: 0.7549 - keras_recall_metric: 0.1113 - keras_precision_metric: 0.3613 - keras_f2_metric: 0.1292 - val_loss: 0.6765 - val_sparse_categorical_accuracy: 0.7491 - val_keras_recall_metric: 0.1449 - val_keras_precision_metric: 0.3547 - val_keras_f2_metric: 0.1644\n", + "Epoch 19/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.6681 - sparse_categorical_accuracy: 0.7603 - keras_recall_metric: 0.1080 - keras_precision_metric: 0.3850 - keras_f2_metric: 0.1262 - val_loss: 0.6714 - val_sparse_categorical_accuracy: 0.7588 - val_keras_recall_metric: 0.1222 - val_keras_precision_metric: 0.3817 - val_keras_f2_metric: 0.1415\n", + "Epoch 20/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.6648 - sparse_categorical_accuracy: 0.7648 - keras_recall_metric: 0.1026 - keras_precision_metric: 0.4091 - keras_f2_metric: 0.1206 - val_loss: 0.6671 - val_sparse_categorical_accuracy: 0.7610 - val_keras_recall_metric: 0.1205 - val_keras_precision_metric: 0.3929 - val_keras_f2_metric: 0.1399\n", + "Epoch 21/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.6616 - sparse_categorical_accuracy: 0.7643 - keras_recall_metric: 0.1042 - keras_precision_metric: 0.4135 - keras_f2_metric: 0.1225 - val_loss: 0.6617 - val_sparse_categorical_accuracy: 0.7615 - val_keras_recall_metric: 0.1251 - val_keras_precision_metric: 0.3988 - val_keras_f2_metric: 0.1450\n", + "Epoch 22/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.6580 - sparse_categorical_accuracy: 0.7631 - keras_recall_metric: 0.1185 - keras_precision_metric: 0.4079 - keras_f2_metric: 0.1380 - val_loss: 0.6589 - val_sparse_categorical_accuracy: 0.7601 - val_keras_recall_metric: 0.1479 - val_keras_precision_metric: 0.4047 - val_keras_f2_metric: 0.1694\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 23/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.6548 - sparse_categorical_accuracy: 0.7616 - keras_recall_metric: 0.1379 - keras_precision_metric: 0.4240 - keras_f2_metric: 0.1594 - val_loss: 0.6559 - val_sparse_categorical_accuracy: 0.7641 - val_keras_recall_metric: 0.1411 - val_keras_precision_metric: 0.4223 - val_keras_f2_metric: 0.1628\n", + "Epoch 24/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.6515 - sparse_categorical_accuracy: 0.7667 - keras_recall_metric: 0.1210 - keras_precision_metric: 0.4474 - keras_f2_metric: 0.1416 - val_loss: 0.6516 - val_sparse_categorical_accuracy: 0.7671 - val_keras_recall_metric: 0.1391 - val_keras_precision_metric: 0.4393 - val_keras_f2_metric: 0.1611\n", + "Epoch 25/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.6482 - sparse_categorical_accuracy: 0.7656 - keras_recall_metric: 0.1437 - keras_precision_metric: 0.4354 - keras_f2_metric: 0.1659 - val_loss: 0.6466 - val_sparse_categorical_accuracy: 0.7683 - val_keras_recall_metric: 0.1424 - val_keras_precision_metric: 0.4476 - val_keras_f2_metric: 0.1649\n", + "Epoch 26/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.6447 - sparse_categorical_accuracy: 0.7613 - keras_recall_metric: 0.1534 - keras_precision_metric: 0.4144 - keras_f2_metric: 0.1755 - val_loss: 0.6412 - val_sparse_categorical_accuracy: 0.7628 - val_keras_recall_metric: 0.1455 - val_keras_precision_metric: 0.4173 - val_keras_f2_metric: 0.1673\n", + "Epoch 27/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.6409 - sparse_categorical_accuracy: 0.7474 - keras_recall_metric: 0.1957 - keras_precision_metric: 0.3793 - keras_f2_metric: 0.2167 - val_loss: 0.6376 - val_sparse_categorical_accuracy: 0.7636 - val_keras_recall_metric: 0.1709 - val_keras_precision_metric: 0.4315 - val_keras_f2_metric: 0.1944\n", + "Epoch 28/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.6374 - sparse_categorical_accuracy: 0.7426 - keras_recall_metric: 0.2309 - keras_precision_metric: 0.3797 - keras_f2_metric: 0.2505 - val_loss: 0.6377 - val_sparse_categorical_accuracy: 0.7595 - val_keras_recall_metric: 0.2152 - val_keras_precision_metric: 0.4278 - val_keras_f2_metric: 0.2389\n", + "Epoch 29/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.6333 - sparse_categorical_accuracy: 0.7422 - keras_recall_metric: 0.2453 - keras_precision_metric: 0.3802 - keras_f2_metric: 0.2640 - val_loss: 0.6317 - val_sparse_categorical_accuracy: 0.7643 - val_keras_recall_metric: 0.2129 - val_keras_precision_metric: 0.4464 - val_keras_f2_metric: 0.2378\n", + "Epoch 30/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.6274 - sparse_categorical_accuracy: 0.7377 - keras_recall_metric: 0.2789 - keras_precision_metric: 0.3834 - keras_f2_metric: 0.2947 - val_loss: 0.6251 - val_sparse_categorical_accuracy: 0.7632 - val_keras_recall_metric: 0.2198 - val_keras_precision_metric: 0.4436 - val_keras_f2_metric: 0.2445\n", + "Epoch 31/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.6208 - sparse_categorical_accuracy: 0.7381 - keras_recall_metric: 0.2877 - keras_precision_metric: 0.3821 - keras_f2_metric: 0.3022 - val_loss: 0.6239 - val_sparse_categorical_accuracy: 0.7647 - val_keras_recall_metric: 0.2385 - val_keras_precision_metric: 0.4531 - val_keras_f2_metric: 0.2634\n", + "Epoch 32/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.6147 - sparse_categorical_accuracy: 0.7413 - keras_recall_metric: 0.3011 - keras_precision_metric: 0.3913 - keras_f2_metric: 0.3156 - val_loss: 0.6233 - val_sparse_categorical_accuracy: 0.7624 - val_keras_recall_metric: 0.2589 - val_keras_precision_metric: 0.4484 - val_keras_f2_metric: 0.2828\n", + "Epoch 33/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.6107 - sparse_categorical_accuracy: 0.7506 - keras_recall_metric: 0.3152 - keras_precision_metric: 0.4221 - keras_f2_metric: 0.3316 - val_loss: 0.6091 - val_sparse_categorical_accuracy: 0.7688 - val_keras_recall_metric: 0.2407 - val_keras_precision_metric: 0.4700 - val_keras_f2_metric: 0.2667\n", + "Epoch 34/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.6036 - sparse_categorical_accuracy: 0.7491 - keras_recall_metric: 0.3509 - keras_precision_metric: 0.4451 - keras_f2_metric: 0.3662 - val_loss: 0.6228 - val_sparse_categorical_accuracy: 0.7539 - val_keras_recall_metric: 0.3354 - val_keras_precision_metric: 0.4366 - val_keras_f2_metric: 0.3517\n", + "Epoch 35/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.5992 - sparse_categorical_accuracy: 0.7504 - keras_recall_metric: 0.3676 - keras_precision_metric: 0.4419 - keras_f2_metric: 0.3804 - val_loss: 0.5968 - val_sparse_categorical_accuracy: 0.7711 - val_keras_recall_metric: 0.2832 - val_keras_precision_metric: 0.4825 - val_keras_f2_metric: 0.3087\n", + "Epoch 36/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.5911 - sparse_categorical_accuracy: 0.7562 - keras_recall_metric: 0.3782 - keras_precision_metric: 0.4615 - keras_f2_metric: 0.3922 - val_loss: 0.6048 - val_sparse_categorical_accuracy: 0.7719 - val_keras_recall_metric: 0.3230 - val_keras_precision_metric: 0.4871 - val_keras_f2_metric: 0.3463\n", + "Epoch 37/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.5841 - sparse_categorical_accuracy: 0.7652 - keras_recall_metric: 0.3912 - keras_precision_metric: 0.4754 - keras_f2_metric: 0.4050 - val_loss: 0.5857 - val_sparse_categorical_accuracy: 0.7740 - val_keras_recall_metric: 0.3044 - val_keras_precision_metric: 0.4937 - val_keras_f2_metric: 0.3297\n", + "Epoch 38/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.5779 - sparse_categorical_accuracy: 0.7574 - keras_recall_metric: 0.3762 - keras_precision_metric: 0.4549 - keras_f2_metric: 0.3885 - val_loss: 0.5820 - val_sparse_categorical_accuracy: 0.7838 - val_keras_recall_metric: 0.3005 - val_keras_precision_metric: 0.5316 - val_keras_f2_metric: 0.3291\n", + "Epoch 39/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.5725 - sparse_categorical_accuracy: 0.7733 - keras_recall_metric: 0.3898 - keras_precision_metric: 0.4891 - keras_f2_metric: 0.4060 - val_loss: 0.5933 - val_sparse_categorical_accuracy: 0.7686 - val_keras_recall_metric: 0.3681 - val_keras_precision_metric: 0.4791 - val_keras_f2_metric: 0.3860\n", + "Epoch 40/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.5639 - sparse_categorical_accuracy: 0.7632 - keras_recall_metric: 0.4166 - keras_precision_metric: 0.4656 - keras_f2_metric: 0.4254 - val_loss: 0.5636 - val_sparse_categorical_accuracy: 0.7847 - val_keras_recall_metric: 0.3242 - val_keras_precision_metric: 0.5328 - val_keras_f2_metric: 0.3517\n", + "Epoch 41/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.5548 - sparse_categorical_accuracy: 0.7712 - keras_recall_metric: 0.4154 - keras_precision_metric: 0.4861 - keras_f2_metric: 0.4277 - val_loss: 0.5780 - val_sparse_categorical_accuracy: 0.7738 - val_keras_recall_metric: 0.3659 - val_keras_precision_metric: 0.4942 - val_keras_f2_metric: 0.3859\n", + "Epoch 42/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.5494 - sparse_categorical_accuracy: 0.7706 - keras_recall_metric: 0.4306 - keras_precision_metric: 0.4987 - keras_f2_metric: 0.4425 - val_loss: 0.5755 - val_sparse_categorical_accuracy: 0.7747 - val_keras_recall_metric: 0.3826 - val_keras_precision_metric: 0.4971 - val_keras_f2_metric: 0.4011\n", + "Epoch 43/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.5381 - sparse_categorical_accuracy: 0.7744 - keras_recall_metric: 0.4434 - keras_precision_metric: 0.4889 - keras_f2_metric: 0.4513 - val_loss: 0.5702 - val_sparse_categorical_accuracy: 0.7782 - val_keras_recall_metric: 0.4020 - val_keras_precision_metric: 0.5068 - val_keras_f2_metric: 0.4193\n", + "Epoch 44/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.5288 - sparse_categorical_accuracy: 0.7819 - keras_recall_metric: 0.4559 - keras_precision_metric: 0.5319 - keras_f2_metric: 0.4693 - val_loss: 0.5932 - val_sparse_categorical_accuracy: 0.7601 - val_keras_recall_metric: 0.4613 - val_keras_precision_metric: 0.4648 - val_keras_f2_metric: 0.4620\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 45/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.5248 - sparse_categorical_accuracy: 0.7857 - keras_recall_metric: 0.4579 - keras_precision_metric: 0.5167 - keras_f2_metric: 0.4680 - val_loss: 0.5640 - val_sparse_categorical_accuracy: 0.7848 - val_keras_recall_metric: 0.4192 - val_keras_precision_metric: 0.5252 - val_keras_f2_metric: 0.4368\n", + "Epoch 46/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.5158 - sparse_categorical_accuracy: 0.7863 - keras_recall_metric: 0.4565 - keras_precision_metric: 0.5189 - keras_f2_metric: 0.4674 - val_loss: 0.5289 - val_sparse_categorical_accuracy: 0.8042 - val_keras_recall_metric: 0.3675 - val_keras_precision_metric: 0.6043 - val_keras_f2_metric: 0.3987\n", + "Epoch 47/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.5063 - sparse_categorical_accuracy: 0.7927 - keras_recall_metric: 0.4618 - keras_precision_metric: 0.5515 - keras_f2_metric: 0.4771 - val_loss: 0.5384 - val_sparse_categorical_accuracy: 0.8027 - val_keras_recall_metric: 0.4122 - val_keras_precision_metric: 0.5853 - val_keras_f2_metric: 0.4381\n", + "Epoch 48/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.4991 - sparse_categorical_accuracy: 0.8010 - keras_recall_metric: 0.4866 - keras_precision_metric: 0.5837 - keras_f2_metric: 0.5031 - val_loss: 0.5471 - val_sparse_categorical_accuracy: 0.7877 - val_keras_recall_metric: 0.4596 - val_keras_precision_metric: 0.5309 - val_keras_f2_metric: 0.4723\n", + "Epoch 49/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.4911 - sparse_categorical_accuracy: 0.8048 - keras_recall_metric: 0.4600 - keras_precision_metric: 0.5847 - keras_f2_metric: 0.4804 - val_loss: 0.5101 - val_sparse_categorical_accuracy: 0.8143 - val_keras_recall_metric: 0.4149 - val_keras_precision_metric: 0.6305 - val_keras_f2_metric: 0.4454\n", + "Epoch 50/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.4835 - sparse_categorical_accuracy: 0.8083 - keras_recall_metric: 0.4690 - keras_precision_metric: 0.5976 - keras_f2_metric: 0.4894 - val_loss: 0.5110 - val_sparse_categorical_accuracy: 0.8128 - val_keras_recall_metric: 0.4184 - val_keras_precision_metric: 0.6229 - val_keras_f2_metric: 0.4478\n", + "Epoch 51/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.4766 - sparse_categorical_accuracy: 0.8132 - keras_recall_metric: 0.4571 - keras_precision_metric: 0.5965 - keras_f2_metric: 0.4791 - val_loss: 0.4890 - val_sparse_categorical_accuracy: 0.8241 - val_keras_recall_metric: 0.4019 - val_keras_precision_metric: 0.6834 - val_keras_f2_metric: 0.4380\n", + "Epoch 52/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.4695 - sparse_categorical_accuracy: 0.8186 - keras_recall_metric: 0.4904 - keras_precision_metric: 0.6173 - keras_f2_metric: 0.5112 - val_loss: 0.5076 - val_sparse_categorical_accuracy: 0.8205 - val_keras_recall_metric: 0.4574 - val_keras_precision_metric: 0.6393 - val_keras_f2_metric: 0.4850\n", + "Epoch 53/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.4629 - sparse_categorical_accuracy: 0.8306 - keras_recall_metric: 0.5050 - keras_precision_metric: 0.6632 - keras_f2_metric: 0.5297 - val_loss: 0.4918 - val_sparse_categorical_accuracy: 0.8327 - val_keras_recall_metric: 0.4459 - val_keras_precision_metric: 0.6991 - val_keras_f2_metric: 0.4807\n", + "Epoch 54/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.4555 - sparse_categorical_accuracy: 0.8357 - keras_recall_metric: 0.4999 - keras_precision_metric: 0.7049 - keras_f2_metric: 0.5306 - val_loss: 0.4760 - val_sparse_categorical_accuracy: 0.8418 - val_keras_recall_metric: 0.4223 - val_keras_precision_metric: 0.7676 - val_keras_f2_metric: 0.4640\n", + "Epoch 55/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.4510 - sparse_categorical_accuracy: 0.8383 - keras_recall_metric: 0.5078 - keras_precision_metric: 0.7039 - keras_f2_metric: 0.5377 - val_loss: 0.4807 - val_sparse_categorical_accuracy: 0.8393 - val_keras_recall_metric: 0.4528 - val_keras_precision_metric: 0.7275 - val_keras_f2_metric: 0.4898\n", + "Epoch 56/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.4447 - sparse_categorical_accuracy: 0.8481 - keras_recall_metric: 0.4957 - keras_precision_metric: 0.7247 - keras_f2_metric: 0.5291 - val_loss: 0.4723 - val_sparse_categorical_accuracy: 0.8495 - val_keras_recall_metric: 0.4560 - val_keras_precision_metric: 0.7817 - val_keras_f2_metric: 0.4975\n", + "Epoch 57/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.4394 - sparse_categorical_accuracy: 0.8521 - keras_recall_metric: 0.5170 - keras_precision_metric: 0.7747 - keras_f2_metric: 0.5537 - val_loss: 0.4743 - val_sparse_categorical_accuracy: 0.8470 - val_keras_recall_metric: 0.4763 - val_keras_precision_metric: 0.7502 - val_keras_f2_metric: 0.5138\n", + "Epoch 58/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.4357 - sparse_categorical_accuracy: 0.8527 - keras_recall_metric: 0.5213 - keras_precision_metric: 0.7791 - keras_f2_metric: 0.5582 - val_loss: 0.4781 - val_sparse_categorical_accuracy: 0.8361 - val_keras_recall_metric: 0.4883 - val_keras_precision_metric: 0.6901 - val_keras_f2_metric: 0.5187\n", + "Epoch 59/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.4317 - sparse_categorical_accuracy: 0.8517 - keras_recall_metric: 0.5068 - keras_precision_metric: 0.7683 - keras_f2_metric: 0.5436 - val_loss: 0.4655 - val_sparse_categorical_accuracy: 0.8496 - val_keras_recall_metric: 0.4826 - val_keras_precision_metric: 0.7592 - val_keras_f2_metric: 0.5205\n", + "Epoch 60/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.4273 - sparse_categorical_accuracy: 0.8573 - keras_recall_metric: 0.4982 - keras_precision_metric: 0.7972 - keras_f2_metric: 0.5384 - val_loss: 0.4497 - val_sparse_categorical_accuracy: 0.8594 - val_keras_recall_metric: 0.4505 - val_keras_precision_metric: 0.8529 - val_keras_f2_metric: 0.4975\n", + "Epoch 61/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.4238 - sparse_categorical_accuracy: 0.8581 - keras_recall_metric: 0.5092 - keras_precision_metric: 0.7871 - keras_f2_metric: 0.5478 - val_loss: 0.4522 - val_sparse_categorical_accuracy: 0.8509 - val_keras_recall_metric: 0.4694 - val_keras_precision_metric: 0.7777 - val_keras_f2_metric: 0.5098\n", + "Epoch 62/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.4205 - sparse_categorical_accuracy: 0.8595 - keras_recall_metric: 0.5085 - keras_precision_metric: 0.7736 - keras_f2_metric: 0.5459 - val_loss: 0.4541 - val_sparse_categorical_accuracy: 0.8460 - val_keras_recall_metric: 0.4790 - val_keras_precision_metric: 0.7429 - val_keras_f2_metric: 0.5157\n", + "Epoch 63/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.4210 - sparse_categorical_accuracy: 0.8570 - keras_recall_metric: 0.4805 - keras_precision_metric: 0.7755 - keras_f2_metric: 0.5197 - val_loss: 0.4411 - val_sparse_categorical_accuracy: 0.8565 - val_keras_recall_metric: 0.4323 - val_keras_precision_metric: 0.8570 - val_keras_f2_metric: 0.4799\n", + "Epoch 64/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.4179 - sparse_categorical_accuracy: 0.8601 - keras_recall_metric: 0.5089 - keras_precision_metric: 0.8052 - keras_f2_metric: 0.5491 - val_loss: 0.4605 - val_sparse_categorical_accuracy: 0.8347 - val_keras_recall_metric: 0.4971 - val_keras_precision_metric: 0.6798 - val_keras_f2_metric: 0.5254\n", + "Epoch 65/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.4148 - sparse_categorical_accuracy: 0.8592 - keras_recall_metric: 0.5194 - keras_precision_metric: 0.8317 - keras_f2_metric: 0.5614 - val_loss: 0.4360 - val_sparse_categorical_accuracy: 0.8516 - val_keras_recall_metric: 0.4801 - val_keras_precision_metric: 0.7720 - val_keras_f2_metric: 0.5194\n", + "Epoch 66/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.4114 - sparse_categorical_accuracy: 0.8619 - keras_recall_metric: 0.5118 - keras_precision_metric: 0.8357 - keras_f2_metric: 0.5546 - val_loss: 0.4214 - val_sparse_categorical_accuracy: 0.8589 - val_keras_recall_metric: 0.4585 - val_keras_precision_metric: 0.8393 - val_keras_f2_metric: 0.5042\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 67/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.4079 - sparse_categorical_accuracy: 0.8630 - keras_recall_metric: 0.4978 - keras_precision_metric: 0.7896 - keras_f2_metric: 0.5373 - val_loss: 0.4422 - val_sparse_categorical_accuracy: 0.8477 - val_keras_recall_metric: 0.4959 - val_keras_precision_metric: 0.7391 - val_keras_f2_metric: 0.5308\n", + "Epoch 68/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.4044 - sparse_categorical_accuracy: 0.8646 - keras_recall_metric: 0.5125 - keras_precision_metric: 0.8244 - keras_f2_metric: 0.5544 - val_loss: 0.4298 - val_sparse_categorical_accuracy: 0.8599 - val_keras_recall_metric: 0.4648 - val_keras_precision_metric: 0.8384 - val_keras_f2_metric: 0.5103\n", + "Epoch 69/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.4013 - sparse_categorical_accuracy: 0.8673 - keras_recall_metric: 0.4813 - keras_precision_metric: 0.8006 - keras_f2_metric: 0.5230 - val_loss: 0.4246 - val_sparse_categorical_accuracy: 0.8584 - val_keras_recall_metric: 0.4689 - val_keras_precision_metric: 0.8235 - val_keras_f2_metric: 0.5131\n", + "Epoch 70/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3994 - sparse_categorical_accuracy: 0.8651 - keras_recall_metric: 0.5193 - keras_precision_metric: 0.8273 - keras_f2_metric: 0.5610 - val_loss: 0.4423 - val_sparse_categorical_accuracy: 0.8479 - val_keras_recall_metric: 0.4963 - val_keras_precision_metric: 0.7398 - val_keras_f2_metric: 0.5313\n", + "Epoch 71/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3987 - sparse_categorical_accuracy: 0.8655 - keras_recall_metric: 0.5092 - keras_precision_metric: 0.8284 - keras_f2_metric: 0.5515 - val_loss: 0.4412 - val_sparse_categorical_accuracy: 0.8491 - val_keras_recall_metric: 0.5015 - val_keras_precision_metric: 0.7421 - val_keras_f2_metric: 0.5363\n", + "Epoch 72/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3968 - sparse_categorical_accuracy: 0.8684 - keras_recall_metric: 0.5011 - keras_precision_metric: 0.8495 - keras_f2_metric: 0.5458 - val_loss: 0.4124 - val_sparse_categorical_accuracy: 0.8639 - val_keras_recall_metric: 0.4599 - val_keras_precision_metric: 0.8730 - val_keras_f2_metric: 0.5080\n", + "Epoch 73/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3946 - sparse_categorical_accuracy: 0.8682 - keras_recall_metric: 0.5219 - keras_precision_metric: 0.8564 - keras_f2_metric: 0.5659 - val_loss: 0.4375 - val_sparse_categorical_accuracy: 0.8480 - val_keras_recall_metric: 0.5034 - val_keras_precision_metric: 0.7351 - val_keras_f2_metric: 0.5373\n", + "Epoch 74/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3922 - sparse_categorical_accuracy: 0.8662 - keras_recall_metric: 0.4897 - keras_precision_metric: 0.8106 - keras_f2_metric: 0.5318 - val_loss: 0.4097 - val_sparse_categorical_accuracy: 0.8654 - val_keras_recall_metric: 0.4435 - val_keras_precision_metric: 0.9098 - val_keras_f2_metric: 0.4942\n", + "Epoch 75/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3910 - sparse_categorical_accuracy: 0.8692 - keras_recall_metric: 0.4962 - keras_precision_metric: 0.8459 - keras_f2_metric: 0.5408 - val_loss: 0.4284 - val_sparse_categorical_accuracy: 0.8451 - val_keras_recall_metric: 0.5054 - val_keras_precision_metric: 0.7206 - val_keras_f2_metric: 0.5375\n", + "Epoch 76/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.3900 - sparse_categorical_accuracy: 0.8679 - keras_recall_metric: 0.5185 - keras_precision_metric: 0.8258 - keras_f2_metric: 0.5589 - val_loss: 0.4232 - val_sparse_categorical_accuracy: 0.8593 - val_keras_recall_metric: 0.4960 - val_keras_precision_metric: 0.8005 - val_keras_f2_metric: 0.5368\n", + "Epoch 77/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3884 - sparse_categorical_accuracy: 0.8696 - keras_recall_metric: 0.5051 - keras_precision_metric: 0.8675 - keras_f2_metric: 0.5510 - val_loss: 0.4187 - val_sparse_categorical_accuracy: 0.8606 - val_keras_recall_metric: 0.4736 - val_keras_precision_metric: 0.8327 - val_keras_f2_metric: 0.5183\n", + "Epoch 78/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.3860 - sparse_categorical_accuracy: 0.8695 - keras_recall_metric: 0.4993 - keras_precision_metric: 0.8456 - keras_f2_metric: 0.5438 - val_loss: 0.4167 - val_sparse_categorical_accuracy: 0.8635 - val_keras_recall_metric: 0.4814 - val_keras_precision_metric: 0.8423 - val_keras_f2_metric: 0.5265\n", + "Epoch 79/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3837 - sparse_categorical_accuracy: 0.8715 - keras_recall_metric: 0.5226 - keras_precision_metric: 0.8580 - keras_f2_metric: 0.5659 - val_loss: 0.4441 - val_sparse_categorical_accuracy: 0.8418 - val_keras_recall_metric: 0.5212 - val_keras_precision_metric: 0.6968 - val_keras_f2_metric: 0.5489\n", + "Epoch 80/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3850 - sparse_categorical_accuracy: 0.8700 - keras_recall_metric: 0.4834 - keras_precision_metric: 0.8335 - keras_f2_metric: 0.5272 - val_loss: 0.3969 - val_sparse_categorical_accuracy: 0.8667 - val_keras_recall_metric: 0.4393 - val_keras_precision_metric: 0.9285 - val_keras_f2_metric: 0.4911\n", + "Epoch 81/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3840 - sparse_categorical_accuracy: 0.8667 - keras_recall_metric: 0.4960 - keras_precision_metric: 0.8417 - keras_f2_metric: 0.5396 - val_loss: 0.4162 - val_sparse_categorical_accuracy: 0.8480 - val_keras_recall_metric: 0.4922 - val_keras_precision_metric: 0.7434 - val_keras_f2_metric: 0.5279\n", + "Epoch 82/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3808 - sparse_categorical_accuracy: 0.8690 - keras_recall_metric: 0.5016 - keras_precision_metric: 0.8710 - keras_f2_metric: 0.5481 - val_loss: 0.3944 - val_sparse_categorical_accuracy: 0.8666 - val_keras_recall_metric: 0.4653 - val_keras_precision_metric: 0.8854 - val_keras_f2_metric: 0.5141\n", + "Epoch 83/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3802 - sparse_categorical_accuracy: 0.8700 - keras_recall_metric: 0.5173 - keras_precision_metric: 0.8586 - keras_f2_metric: 0.5617 - val_loss: 0.4106 - val_sparse_categorical_accuracy: 0.8597 - val_keras_recall_metric: 0.4957 - val_keras_precision_metric: 0.8036 - val_keras_f2_metric: 0.5369\n", + "Epoch 84/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.3766 - sparse_categorical_accuracy: 0.8703 - keras_recall_metric: 0.4996 - keras_precision_metric: 0.8752 - keras_f2_metric: 0.5465 - val_loss: 0.3978 - val_sparse_categorical_accuracy: 0.8651 - val_keras_recall_metric: 0.4824 - val_keras_precision_metric: 0.8515 - val_keras_f2_metric: 0.5282\n", + "Epoch 85/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3744 - sparse_categorical_accuracy: 0.8698 - keras_recall_metric: 0.5040 - keras_precision_metric: 0.8611 - keras_f2_metric: 0.5492 - val_loss: 0.3987 - val_sparse_categorical_accuracy: 0.8683 - val_keras_recall_metric: 0.4804 - val_keras_precision_metric: 0.8765 - val_keras_f2_metric: 0.5281\n", + "Epoch 86/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.3723 - sparse_categorical_accuracy: 0.8740 - keras_recall_metric: 0.5222 - keras_precision_metric: 0.8945 - keras_f2_metric: 0.5695 - val_loss: 0.3924 - val_sparse_categorical_accuracy: 0.8683 - val_keras_recall_metric: 0.4830 - val_keras_precision_metric: 0.8729 - val_keras_f2_metric: 0.5304\n", + "Epoch 87/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3708 - sparse_categorical_accuracy: 0.8731 - keras_recall_metric: 0.5011 - keras_precision_metric: 0.8416 - keras_f2_metric: 0.5451 - val_loss: 0.4022 - val_sparse_categorical_accuracy: 0.8627 - val_keras_recall_metric: 0.4955 - val_keras_precision_metric: 0.8214 - val_keras_f2_metric: 0.5382\n", + "Epoch 88/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3697 - sparse_categorical_accuracy: 0.8732 - keras_recall_metric: 0.5245 - keras_precision_metric: 0.8818 - keras_f2_metric: 0.5704 - val_loss: 0.3952 - val_sparse_categorical_accuracy: 0.8691 - val_keras_recall_metric: 0.4829 - val_keras_precision_metric: 0.8785 - val_keras_f2_metric: 0.5307\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 89/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3686 - sparse_categorical_accuracy: 0.8737 - keras_recall_metric: 0.4993 - keras_precision_metric: 0.8947 - keras_f2_metric: 0.5477 - val_loss: 0.3869 - val_sparse_categorical_accuracy: 0.8688 - val_keras_recall_metric: 0.4578 - val_keras_precision_metric: 0.9146 - val_keras_f2_metric: 0.5086\n", + "Epoch 90/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3693 - sparse_categorical_accuracy: 0.8719 - keras_recall_metric: 0.5099 - keras_precision_metric: 0.8579 - keras_f2_metric: 0.5542 - val_loss: 0.4111 - val_sparse_categorical_accuracy: 0.8528 - val_keras_recall_metric: 0.5199 - val_keras_precision_metric: 0.7469 - val_keras_f2_metric: 0.5536\n", + "Epoch 91/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3675 - sparse_categorical_accuracy: 0.8726 - keras_recall_metric: 0.5021 - keras_precision_metric: 0.8903 - keras_f2_metric: 0.5500 - val_loss: 0.3769 - val_sparse_categorical_accuracy: 0.8691 - val_keras_recall_metric: 0.4553 - val_keras_precision_metric: 0.9211 - val_keras_f2_metric: 0.5065\n", + "Epoch 92/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3670 - sparse_categorical_accuracy: 0.8711 - keras_recall_metric: 0.5178 - keras_precision_metric: 0.8299 - keras_f2_metric: 0.5593 - val_loss: 0.4103 - val_sparse_categorical_accuracy: 0.8515 - val_keras_recall_metric: 0.5267 - val_keras_precision_metric: 0.7362 - val_keras_f2_metric: 0.5585\n", + "Epoch 93/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3649 - sparse_categorical_accuracy: 0.8740 - keras_recall_metric: 0.4844 - keras_precision_metric: 0.8894 - keras_f2_metric: 0.5325 - val_loss: 0.3757 - val_sparse_categorical_accuracy: 0.8682 - val_keras_recall_metric: 0.4455 - val_keras_precision_metric: 0.9306 - val_keras_f2_metric: 0.4974\n", + "Epoch 94/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3672 - sparse_categorical_accuracy: 0.8718 - keras_recall_metric: 0.5480 - keras_precision_metric: 0.8251 - keras_f2_metric: 0.5871 - val_loss: 0.4317 - val_sparse_categorical_accuracy: 0.8327 - val_keras_recall_metric: 0.5543 - val_keras_precision_metric: 0.6486 - val_keras_f2_metric: 0.5709\n", + "Epoch 95/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3688 - sparse_categorical_accuracy: 0.8718 - keras_recall_metric: 0.5018 - keras_precision_metric: 0.8885 - keras_f2_metric: 0.5495 - val_loss: 0.3814 - val_sparse_categorical_accuracy: 0.8668 - val_keras_recall_metric: 0.4911 - val_keras_precision_metric: 0.8522 - val_keras_f2_metric: 0.5366\n", + "Epoch 96/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3644 - sparse_categorical_accuracy: 0.8725 - keras_recall_metric: 0.5154 - keras_precision_metric: 0.8558 - keras_f2_metric: 0.5594 - val_loss: 0.3767 - val_sparse_categorical_accuracy: 0.8695 - val_keras_recall_metric: 0.4797 - val_keras_precision_metric: 0.8861 - val_keras_f2_metric: 0.5281\n", + "Epoch 97/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3606 - sparse_categorical_accuracy: 0.8748 - keras_recall_metric: 0.5188 - keras_precision_metric: 0.8805 - keras_f2_metric: 0.5651 - val_loss: 0.3889 - val_sparse_categorical_accuracy: 0.8641 - val_keras_recall_metric: 0.5127 - val_keras_precision_metric: 0.8121 - val_keras_f2_metric: 0.5535\n", + "Epoch 98/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3587 - sparse_categorical_accuracy: 0.8752 - keras_recall_metric: 0.5237 - keras_precision_metric: 0.8848 - keras_f2_metric: 0.5703 - val_loss: 0.3803 - val_sparse_categorical_accuracy: 0.8683 - val_keras_recall_metric: 0.4821 - val_keras_precision_metric: 0.8744 - val_keras_f2_metric: 0.5296\n", + "Epoch 99/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.3575 - sparse_categorical_accuracy: 0.8747 - keras_recall_metric: 0.5207 - keras_precision_metric: 0.8753 - keras_f2_metric: 0.5665 - val_loss: 0.3833 - val_sparse_categorical_accuracy: 0.8661 - val_keras_recall_metric: 0.5115 - val_keras_precision_metric: 0.8247 - val_keras_f2_metric: 0.5536\n", + "Epoch 100/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3558 - sparse_categorical_accuracy: 0.8762 - keras_recall_metric: 0.5189 - keras_precision_metric: 0.8801 - keras_f2_metric: 0.5652 - val_loss: 0.3749 - val_sparse_categorical_accuracy: 0.8706 - val_keras_recall_metric: 0.4783 - val_keras_precision_metric: 0.8961 - val_keras_f2_metric: 0.5275\n", + "Epoch 101/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3553 - sparse_categorical_accuracy: 0.8764 - keras_recall_metric: 0.5274 - keras_precision_metric: 0.8931 - keras_f2_metric: 0.5742 - val_loss: 0.3783 - val_sparse_categorical_accuracy: 0.8669 - val_keras_recall_metric: 0.5057 - val_keras_precision_metric: 0.8361 - val_keras_f2_metric: 0.5491\n", + "Epoch 102/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3538 - sparse_categorical_accuracy: 0.8750 - keras_recall_metric: 0.5322 - keras_precision_metric: 0.8317 - keras_f2_metric: 0.5731 - val_loss: 0.3869 - val_sparse_categorical_accuracy: 0.8640 - val_keras_recall_metric: 0.5304 - val_keras_precision_metric: 0.7948 - val_keras_f2_metric: 0.5682\n", + "Epoch 103/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3546 - sparse_categorical_accuracy: 0.8769 - keras_recall_metric: 0.5134 - keras_precision_metric: 0.8921 - keras_f2_metric: 0.5610 - val_loss: 0.3759 - val_sparse_categorical_accuracy: 0.8706 - val_keras_recall_metric: 0.4876 - val_keras_precision_metric: 0.8831 - val_keras_f2_metric: 0.5356\n", + "Epoch 104/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3519 - sparse_categorical_accuracy: 0.8776 - keras_recall_metric: 0.5406 - keras_precision_metric: 0.8795 - keras_f2_metric: 0.5857 - val_loss: 0.3831 - val_sparse_categorical_accuracy: 0.8654 - val_keras_recall_metric: 0.5240 - val_keras_precision_metric: 0.8085 - val_keras_f2_metric: 0.5637\n", + "Epoch 105/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3515 - sparse_categorical_accuracy: 0.8757 - keras_recall_metric: 0.5397 - keras_precision_metric: 0.8400 - keras_f2_metric: 0.5794 - val_loss: 0.3844 - val_sparse_categorical_accuracy: 0.8651 - val_keras_recall_metric: 0.5217 - val_keras_precision_metric: 0.8088 - val_keras_f2_metric: 0.5616\n", + "Epoch 106/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3512 - sparse_categorical_accuracy: 0.8770 - keras_recall_metric: 0.5274 - keras_precision_metric: 0.9007 - keras_f2_metric: 0.5750 - val_loss: 0.3682 - val_sparse_categorical_accuracy: 0.8733 - val_keras_recall_metric: 0.4983 - val_keras_precision_metric: 0.8871 - val_keras_f2_metric: 0.5462\n", + "Epoch 107/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3496 - sparse_categorical_accuracy: 0.8775 - keras_recall_metric: 0.5341 - keras_precision_metric: 0.8310 - keras_f2_metric: 0.5750 - val_loss: 0.3774 - val_sparse_categorical_accuracy: 0.8668 - val_keras_recall_metric: 0.5093 - val_keras_precision_metric: 0.8312 - val_keras_f2_metric: 0.5520\n", + "Epoch 108/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3490 - sparse_categorical_accuracy: 0.8760 - keras_recall_metric: 0.5387 - keras_precision_metric: 0.8390 - keras_f2_metric: 0.5784 - val_loss: 0.3747 - val_sparse_categorical_accuracy: 0.8701 - val_keras_recall_metric: 0.5046 - val_keras_precision_metric: 0.8576 - val_keras_f2_metric: 0.5499\n", + "Epoch 109/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3488 - sparse_categorical_accuracy: 0.8769 - keras_recall_metric: 0.5194 - keras_precision_metric: 0.8808 - keras_f2_metric: 0.5657 - val_loss: 0.3742 - val_sparse_categorical_accuracy: 0.8711 - val_keras_recall_metric: 0.4950 - val_keras_precision_metric: 0.8766 - val_keras_f2_metric: 0.5422\n", + "Epoch 110/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3489 - sparse_categorical_accuracy: 0.8778 - keras_recall_metric: 0.5377 - keras_precision_metric: 0.8800 - keras_f2_metric: 0.5830 - val_loss: 0.3646 - val_sparse_categorical_accuracy: 0.8716 - val_keras_recall_metric: 0.5123 - val_keras_precision_metric: 0.8577 - val_keras_f2_metric: 0.5572\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 111/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3474 - sparse_categorical_accuracy: 0.8767 - keras_recall_metric: 0.5414 - keras_precision_metric: 0.8519 - keras_f2_metric: 0.5837 - val_loss: 0.3734 - val_sparse_categorical_accuracy: 0.8670 - val_keras_recall_metric: 0.5230 - val_keras_precision_metric: 0.8184 - val_keras_f2_metric: 0.5637\n", + "Epoch 112/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3452 - sparse_categorical_accuracy: 0.8758 - keras_recall_metric: 0.5369 - keras_precision_metric: 0.8543 - keras_f2_metric: 0.5799 - val_loss: 0.3636 - val_sparse_categorical_accuracy: 0.8731 - val_keras_recall_metric: 0.5184 - val_keras_precision_metric: 0.8602 - val_keras_f2_metric: 0.5632\n", + "Epoch 113/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3428 - sparse_categorical_accuracy: 0.8795 - keras_recall_metric: 0.5316 - keras_precision_metric: 0.8924 - keras_f2_metric: 0.5781 - val_loss: 0.3615 - val_sparse_categorical_accuracy: 0.8737 - val_keras_recall_metric: 0.4993 - val_keras_precision_metric: 0.8890 - val_keras_f2_metric: 0.5473\n", + "Epoch 114/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3420 - sparse_categorical_accuracy: 0.8800 - keras_recall_metric: 0.5657 - keras_precision_metric: 0.8791 - keras_f2_metric: 0.6090 - val_loss: 0.3713 - val_sparse_categorical_accuracy: 0.8671 - val_keras_recall_metric: 0.5441 - val_keras_precision_metric: 0.7994 - val_keras_f2_metric: 0.5812\n", + "Epoch 115/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3407 - sparse_categorical_accuracy: 0.8779 - keras_recall_metric: 0.5499 - keras_precision_metric: 0.8510 - keras_f2_metric: 0.5918 - val_loss: 0.3573 - val_sparse_categorical_accuracy: 0.8721 - val_keras_recall_metric: 0.5098 - val_keras_precision_metric: 0.8639 - val_keras_f2_metric: 0.5553\n", + "Epoch 116/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3409 - sparse_categorical_accuracy: 0.8762 - keras_recall_metric: 0.5458 - keras_precision_metric: 0.8520 - keras_f2_metric: 0.5880 - val_loss: 0.3586 - val_sparse_categorical_accuracy: 0.8743 - val_keras_recall_metric: 0.5231 - val_keras_precision_metric: 0.8623 - val_keras_f2_metric: 0.5677\n", + "Epoch 117/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3397 - sparse_categorical_accuracy: 0.8808 - keras_recall_metric: 0.5584 - keras_precision_metric: 0.8620 - keras_f2_metric: 0.6005 - val_loss: 0.3698 - val_sparse_categorical_accuracy: 0.8693 - val_keras_recall_metric: 0.5406 - val_keras_precision_metric: 0.8139 - val_keras_f2_metric: 0.5796\n", + "Epoch 118/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3380 - sparse_categorical_accuracy: 0.8792 - keras_recall_metric: 0.5473 - keras_precision_metric: 0.8700 - keras_f2_metric: 0.5910 - val_loss: 0.3556 - val_sparse_categorical_accuracy: 0.8749 - val_keras_recall_metric: 0.4937 - val_keras_precision_metric: 0.9058 - val_keras_f2_metric: 0.5431\n", + "Epoch 119/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.3379 - sparse_categorical_accuracy: 0.8803 - keras_recall_metric: 0.5501 - keras_precision_metric: 0.8405 - keras_f2_metric: 0.5906 - val_loss: 0.3572 - val_sparse_categorical_accuracy: 0.8725 - val_keras_recall_metric: 0.5204 - val_keras_precision_metric: 0.8541 - val_keras_f2_metric: 0.5645\n", + "Epoch 120/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3376 - sparse_categorical_accuracy: 0.8782 - keras_recall_metric: 0.5613 - keras_precision_metric: 0.8138 - keras_f2_metric: 0.5983 - val_loss: 0.3588 - val_sparse_categorical_accuracy: 0.8735 - val_keras_recall_metric: 0.5275 - val_keras_precision_metric: 0.8519 - val_keras_f2_metric: 0.5710\n", + "Epoch 121/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3377 - sparse_categorical_accuracy: 0.8797 - keras_recall_metric: 0.5494 - keras_precision_metric: 0.8797 - keras_f2_metric: 0.5940 - val_loss: 0.3611 - val_sparse_categorical_accuracy: 0.8745 - val_keras_recall_metric: 0.5065 - val_keras_precision_metric: 0.8846 - val_keras_f2_metric: 0.5538\n", + "Epoch 122/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3371 - sparse_categorical_accuracy: 0.8797 - keras_recall_metric: 0.5632 - keras_precision_metric: 0.8423 - keras_f2_metric: 0.6031 - val_loss: 0.3655 - val_sparse_categorical_accuracy: 0.8659 - val_keras_recall_metric: 0.5366 - val_keras_precision_metric: 0.7997 - val_keras_f2_metric: 0.5744\n", + "Epoch 123/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3358 - sparse_categorical_accuracy: 0.8769 - keras_recall_metric: 0.5680 - keras_precision_metric: 0.8631 - keras_f2_metric: 0.6096 - val_loss: 0.3558 - val_sparse_categorical_accuracy: 0.8743 - val_keras_recall_metric: 0.5136 - val_keras_precision_metric: 0.8736 - val_keras_f2_metric: 0.5597\n", + "Epoch 124/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3339 - sparse_categorical_accuracy: 0.8813 - keras_recall_metric: 0.5555 - keras_precision_metric: 0.8743 - keras_f2_metric: 0.5988 - val_loss: 0.3573 - val_sparse_categorical_accuracy: 0.8730 - val_keras_recall_metric: 0.5399 - val_keras_precision_metric: 0.8357 - val_keras_f2_metric: 0.5811\n", + "Epoch 125/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3327 - sparse_categorical_accuracy: 0.8806 - keras_recall_metric: 0.5631 - keras_precision_metric: 0.8116 - keras_f2_metric: 0.5994 - val_loss: 0.3704 - val_sparse_categorical_accuracy: 0.8678 - val_keras_recall_metric: 0.5498 - val_keras_precision_metric: 0.7976 - val_keras_f2_metric: 0.5862\n", + "Epoch 126/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3336 - sparse_categorical_accuracy: 0.8810 - keras_recall_metric: 0.5590 - keras_precision_metric: 0.8684 - keras_f2_metric: 0.6015 - val_loss: 0.3564 - val_sparse_categorical_accuracy: 0.8724 - val_keras_recall_metric: 0.5258 - val_keras_precision_metric: 0.8469 - val_keras_f2_metric: 0.5690\n", + "Epoch 127/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3317 - sparse_categorical_accuracy: 0.8802 - keras_recall_metric: 0.5695 - keras_precision_metric: 0.8285 - keras_f2_metric: 0.6070 - val_loss: 0.3526 - val_sparse_categorical_accuracy: 0.8739 - val_keras_recall_metric: 0.5247 - val_keras_precision_metric: 0.8579 - val_keras_f2_metric: 0.5689\n", + "Epoch 128/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3306 - sparse_categorical_accuracy: 0.8808 - keras_recall_metric: 0.5918 - keras_precision_metric: 0.8560 - keras_f2_metric: 0.6304 - val_loss: 0.3655 - val_sparse_categorical_accuracy: 0.8690 - val_keras_recall_metric: 0.5531 - val_keras_precision_metric: 0.8012 - val_keras_f2_metric: 0.5896\n", + "Epoch 129/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3289 - sparse_categorical_accuracy: 0.8820 - keras_recall_metric: 0.5707 - keras_precision_metric: 0.8599 - keras_f2_metric: 0.6117 - val_loss: 0.3528 - val_sparse_categorical_accuracy: 0.8749 - val_keras_recall_metric: 0.5236 - val_keras_precision_metric: 0.8654 - val_keras_f2_metric: 0.5685\n", + "Epoch 130/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3277 - sparse_categorical_accuracy: 0.8822 - keras_recall_metric: 0.5920 - keras_precision_metric: 0.8594 - keras_f2_metric: 0.6312 - val_loss: 0.3669 - val_sparse_categorical_accuracy: 0.8645 - val_keras_recall_metric: 0.5645 - val_keras_precision_metric: 0.7701 - val_keras_f2_metric: 0.5964\n", + "Epoch 131/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3285 - sparse_categorical_accuracy: 0.8799 - keras_recall_metric: 0.5790 - keras_precision_metric: 0.8244 - keras_f2_metric: 0.6144 - val_loss: 0.3572 - val_sparse_categorical_accuracy: 0.8728 - val_keras_recall_metric: 0.5317 - val_keras_precision_metric: 0.8429 - val_keras_f2_metric: 0.5741\n", + "Epoch 132/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.3274 - sparse_categorical_accuracy: 0.8835 - keras_recall_metric: 0.5822 - keras_precision_metric: 0.8843 - keras_f2_metric: 0.6245 - val_loss: 0.3571 - val_sparse_categorical_accuracy: 0.8714 - val_keras_recall_metric: 0.5423 - val_keras_precision_metric: 0.8244 - val_keras_f2_metric: 0.5821\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 133/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3262 - sparse_categorical_accuracy: 0.8839 - keras_recall_metric: 0.5727 - keras_precision_metric: 0.8789 - keras_f2_metric: 0.6153 - val_loss: 0.3485 - val_sparse_categorical_accuracy: 0.8729 - val_keras_recall_metric: 0.5287 - val_keras_precision_metric: 0.8468 - val_keras_f2_metric: 0.5716\n", + "Epoch 134/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.3273 - sparse_categorical_accuracy: 0.8763 - keras_recall_metric: 0.5896 - keras_precision_metric: 0.8211 - keras_f2_metric: 0.6247 - val_loss: 0.3568 - val_sparse_categorical_accuracy: 0.8708 - val_keras_recall_metric: 0.5553 - val_keras_precision_metric: 0.8086 - val_keras_f2_metric: 0.5924\n", + "Epoch 135/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3259 - sparse_categorical_accuracy: 0.8824 - keras_recall_metric: 0.5808 - keras_precision_metric: 0.8648 - keras_f2_metric: 0.6216 - val_loss: 0.3445 - val_sparse_categorical_accuracy: 0.8750 - val_keras_recall_metric: 0.5313 - val_keras_precision_metric: 0.8572 - val_keras_f2_metric: 0.5750\n", + "Epoch 136/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3251 - sparse_categorical_accuracy: 0.8806 - keras_recall_metric: 0.5724 - keras_precision_metric: 0.8236 - keras_f2_metric: 0.6091 - val_loss: 0.3545 - val_sparse_categorical_accuracy: 0.8693 - val_keras_recall_metric: 0.5498 - val_keras_precision_metric: 0.8057 - val_keras_f2_metric: 0.5871\n", + "Epoch 137/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3244 - sparse_categorical_accuracy: 0.8814 - keras_recall_metric: 0.5892 - keras_precision_metric: 0.8574 - keras_f2_metric: 0.6282 - val_loss: 0.3546 - val_sparse_categorical_accuracy: 0.8708 - val_keras_recall_metric: 0.5589 - val_keras_precision_metric: 0.8056 - val_keras_f2_metric: 0.5954\n", + "Epoch 138/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3245 - sparse_categorical_accuracy: 0.8819 - keras_recall_metric: 0.5756 - keras_precision_metric: 0.8603 - keras_f2_metric: 0.6163 - val_loss: 0.3480 - val_sparse_categorical_accuracy: 0.8703 - val_keras_recall_metric: 0.5045 - val_keras_precision_metric: 0.8592 - val_keras_f2_metric: 0.5499\n", + "Epoch 139/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3239 - sparse_categorical_accuracy: 0.8810 - keras_recall_metric: 0.5754 - keras_precision_metric: 0.8268 - keras_f2_metric: 0.6124 - val_loss: 0.3489 - val_sparse_categorical_accuracy: 0.8703 - val_keras_recall_metric: 0.5453 - val_keras_precision_metric: 0.8154 - val_keras_f2_metric: 0.5840\n", + "Epoch 140/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3223 - sparse_categorical_accuracy: 0.8811 - keras_recall_metric: 0.5749 - keras_precision_metric: 0.8558 - keras_f2_metric: 0.6146 - val_loss: 0.3412 - val_sparse_categorical_accuracy: 0.8749 - val_keras_recall_metric: 0.5314 - val_keras_precision_metric: 0.8562 - val_keras_f2_metric: 0.5750\n", + "Epoch 141/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3202 - sparse_categorical_accuracy: 0.8849 - keras_recall_metric: 0.5760 - keras_precision_metric: 0.8495 - keras_f2_metric: 0.6156 - val_loss: 0.3401 - val_sparse_categorical_accuracy: 0.8743 - val_keras_recall_metric: 0.5213 - val_keras_precision_metric: 0.8646 - val_keras_f2_metric: 0.5663\n", + "Epoch 142/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3194 - sparse_categorical_accuracy: 0.8846 - keras_recall_metric: 0.5998 - keras_precision_metric: 0.8572 - keras_f2_metric: 0.6381 - val_loss: 0.3441 - val_sparse_categorical_accuracy: 0.8726 - val_keras_recall_metric: 0.5564 - val_keras_precision_metric: 0.8170 - val_keras_f2_metric: 0.5943\n", + "Epoch 143/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3185 - sparse_categorical_accuracy: 0.8840 - keras_recall_metric: 0.5906 - keras_precision_metric: 0.8482 - keras_f2_metric: 0.6287 - val_loss: 0.3399 - val_sparse_categorical_accuracy: 0.8748 - val_keras_recall_metric: 0.5306 - val_keras_precision_metric: 0.8567 - val_keras_f2_metric: 0.5743\n", + "Epoch 144/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3173 - sparse_categorical_accuracy: 0.8860 - keras_recall_metric: 0.6227 - keras_precision_metric: 0.8587 - keras_f2_metric: 0.6586 - val_loss: 0.3634 - val_sparse_categorical_accuracy: 0.8632 - val_keras_recall_metric: 0.5896 - val_keras_precision_metric: 0.7472 - val_keras_f2_metric: 0.6156\n", + "Epoch 145/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3194 - sparse_categorical_accuracy: 0.8811 - keras_recall_metric: 0.5838 - keras_precision_metric: 0.8515 - keras_f2_metric: 0.6226 - val_loss: 0.3388 - val_sparse_categorical_accuracy: 0.8746 - val_keras_recall_metric: 0.5211 - val_keras_precision_metric: 0.8664 - val_keras_f2_metric: 0.5662\n", + "Epoch 146/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3172 - sparse_categorical_accuracy: 0.8841 - keras_recall_metric: 0.5769 - keras_precision_metric: 0.8194 - keras_f2_metric: 0.6131 - val_loss: 0.3376 - val_sparse_categorical_accuracy: 0.8739 - val_keras_recall_metric: 0.5209 - val_keras_precision_metric: 0.8622 - val_keras_f2_metric: 0.5657\n", + "Epoch 147/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3175 - sparse_categorical_accuracy: 0.8852 - keras_recall_metric: 0.5956 - keras_precision_metric: 0.8198 - keras_f2_metric: 0.6297 - val_loss: 0.3500 - val_sparse_categorical_accuracy: 0.8711 - val_keras_recall_metric: 0.5717 - val_keras_precision_metric: 0.7962 - val_keras_f2_metric: 0.6059\n", + "Epoch 148/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3176 - sparse_categorical_accuracy: 0.8827 - keras_recall_metric: 0.6103 - keras_precision_metric: 0.8076 - keras_f2_metric: 0.6391 - val_loss: 0.3529 - val_sparse_categorical_accuracy: 0.8703 - val_keras_recall_metric: 0.5691 - val_keras_precision_metric: 0.7941 - val_keras_f2_metric: 0.6033\n", + "Epoch 149/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3174 - sparse_categorical_accuracy: 0.8846 - keras_recall_metric: 0.6001 - keras_precision_metric: 0.8480 - keras_f2_metric: 0.6370 - val_loss: 0.3557 - val_sparse_categorical_accuracy: 0.8698 - val_keras_recall_metric: 0.5690 - val_keras_precision_metric: 0.7916 - val_keras_f2_metric: 0.6029\n", + "Epoch 150/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3163 - sparse_categorical_accuracy: 0.8849 - keras_recall_metric: 0.5898 - keras_precision_metric: 0.8577 - keras_f2_metric: 0.6291 - val_loss: 0.3347 - val_sparse_categorical_accuracy: 0.8738 - val_keras_recall_metric: 0.5246 - val_keras_precision_metric: 0.8570 - val_keras_f2_metric: 0.5688\n", + "Epoch 151/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3165 - sparse_categorical_accuracy: 0.8821 - keras_recall_metric: 0.5909 - keras_precision_metric: 0.8158 - keras_f2_metric: 0.6246 - val_loss: 0.3498 - val_sparse_categorical_accuracy: 0.8693 - val_keras_recall_metric: 0.5659 - val_keras_precision_metric: 0.7921 - val_keras_f2_metric: 0.6002\n", + "Epoch 152/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3160 - sparse_categorical_accuracy: 0.8853 - keras_recall_metric: 0.5936 - keras_precision_metric: 0.8620 - keras_f2_metric: 0.6330 - val_loss: 0.3381 - val_sparse_categorical_accuracy: 0.8722 - val_keras_recall_metric: 0.5728 - val_keras_precision_metric: 0.8004 - val_keras_f2_metric: 0.6073\n", + "Epoch 153/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3153 - sparse_categorical_accuracy: 0.8806 - keras_recall_metric: 0.5892 - keras_precision_metric: 0.8231 - keras_f2_metric: 0.6242 - val_loss: 0.3254 - val_sparse_categorical_accuracy: 0.8726 - val_keras_recall_metric: 0.4907 - val_keras_precision_metric: 0.8929 - val_keras_f2_metric: 0.5393\n", + "Epoch 154/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3181 - sparse_categorical_accuracy: 0.8776 - keras_recall_metric: 0.6137 - keras_precision_metric: 0.8156 - keras_f2_metric: 0.6444 - val_loss: 0.3577 - val_sparse_categorical_accuracy: 0.8603 - val_keras_recall_metric: 0.5960 - val_keras_precision_metric: 0.7312 - val_keras_f2_metric: 0.6189\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 155/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.3147 - sparse_categorical_accuracy: 0.8836 - keras_recall_metric: 0.6280 - keras_precision_metric: 0.8369 - keras_f2_metric: 0.6605 - val_loss: 0.3474 - val_sparse_categorical_accuracy: 0.8640 - val_keras_recall_metric: 0.5869 - val_keras_precision_metric: 0.7521 - val_keras_f2_metric: 0.6139\n", + "Epoch 156/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3169 - sparse_categorical_accuracy: 0.8779 - keras_recall_metric: 0.5753 - keras_precision_metric: 0.7808 - keras_f2_metric: 0.6069 - val_loss: 0.3357 - val_sparse_categorical_accuracy: 0.8708 - val_keras_recall_metric: 0.5512 - val_keras_precision_metric: 0.8126 - val_keras_f2_metric: 0.5891\n", + "Epoch 157/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3177 - sparse_categorical_accuracy: 0.8821 - keras_recall_metric: 0.6006 - keras_precision_metric: 0.8519 - keras_f2_metric: 0.6374 - val_loss: 0.3325 - val_sparse_categorical_accuracy: 0.8730 - val_keras_recall_metric: 0.5400 - val_keras_precision_metric: 0.8357 - val_keras_f2_metric: 0.5811\n", + "Epoch 158/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.3165 - sparse_categorical_accuracy: 0.8816 - keras_recall_metric: 0.6089 - keras_precision_metric: 0.8275 - keras_f2_metric: 0.6423 - val_loss: 0.3515 - val_sparse_categorical_accuracy: 0.8667 - val_keras_recall_metric: 0.6007 - val_keras_precision_metric: 0.7549 - val_keras_f2_metric: 0.6263\n", + "Epoch 159/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3139 - sparse_categorical_accuracy: 0.8830 - keras_recall_metric: 0.6260 - keras_precision_metric: 0.8369 - keras_f2_metric: 0.6589 - val_loss: 0.3401 - val_sparse_categorical_accuracy: 0.8724 - val_keras_recall_metric: 0.5738 - val_keras_precision_metric: 0.8005 - val_keras_f2_metric: 0.6082\n", + "Epoch 160/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3122 - sparse_categorical_accuracy: 0.8855 - keras_recall_metric: 0.5968 - keras_precision_metric: 0.8642 - keras_f2_metric: 0.6360 - val_loss: 0.3347 - val_sparse_categorical_accuracy: 0.8717 - val_keras_recall_metric: 0.5710 - val_keras_precision_metric: 0.7996 - val_keras_f2_metric: 0.6057\n", + "Epoch 161/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3113 - sparse_categorical_accuracy: 0.8834 - keras_recall_metric: 0.6094 - keras_precision_metric: 0.8214 - keras_f2_metric: 0.6424 - val_loss: 0.3329 - val_sparse_categorical_accuracy: 0.8714 - val_keras_recall_metric: 0.5791 - val_keras_precision_metric: 0.7915 - val_keras_f2_metric: 0.6119\n", + "Epoch 162/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3109 - sparse_categorical_accuracy: 0.8836 - keras_recall_metric: 0.6171 - keras_precision_metric: 0.8440 - keras_f2_metric: 0.6521 - val_loss: 0.3307 - val_sparse_categorical_accuracy: 0.8726 - val_keras_recall_metric: 0.5638 - val_keras_precision_metric: 0.8104 - val_keras_f2_metric: 0.6003\n", + "Epoch 163/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.3095 - sparse_categorical_accuracy: 0.8861 - keras_recall_metric: 0.6232 - keras_precision_metric: 0.8478 - keras_f2_metric: 0.6580 - val_loss: 0.3453 - val_sparse_categorical_accuracy: 0.8628 - val_keras_recall_metric: 0.6143 - val_keras_precision_metric: 0.7309 - val_keras_f2_metric: 0.6345\n", + "Epoch 164/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3097 - sparse_categorical_accuracy: 0.8849 - keras_recall_metric: 0.6027 - keras_precision_metric: 0.8353 - keras_f2_metric: 0.6382 - val_loss: 0.3294 - val_sparse_categorical_accuracy: 0.8730 - val_keras_recall_metric: 0.5361 - val_keras_precision_metric: 0.8395 - val_keras_f2_metric: 0.5779\n", + "Epoch 165/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.3110 - sparse_categorical_accuracy: 0.8849 - keras_recall_metric: 0.6256 - keras_precision_metric: 0.8465 - keras_f2_metric: 0.6596 - val_loss: 0.3683 - val_sparse_categorical_accuracy: 0.8456 - val_keras_recall_metric: 0.6348 - val_keras_precision_metric: 0.6626 - val_keras_f2_metric: 0.6402\n", + "Epoch 166/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3123 - sparse_categorical_accuracy: 0.8806 - keras_recall_metric: 0.5883 - keras_precision_metric: 0.8516 - keras_f2_metric: 0.6263 - val_loss: 0.3258 - val_sparse_categorical_accuracy: 0.8737 - val_keras_recall_metric: 0.5415 - val_keras_precision_metric: 0.8379 - val_keras_f2_metric: 0.5828\n", + "Epoch 167/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.3094 - sparse_categorical_accuracy: 0.8855 - keras_recall_metric: 0.6252 - keras_precision_metric: 0.7941 - keras_f2_metric: 0.6521 - val_loss: 0.3350 - val_sparse_categorical_accuracy: 0.8702 - val_keras_recall_metric: 0.5664 - val_keras_precision_metric: 0.7959 - val_keras_f2_metric: 0.6011\n", + "Epoch 168/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3116 - sparse_categorical_accuracy: 0.8840 - keras_recall_metric: 0.5944 - keras_precision_metric: 0.8738 - keras_f2_metric: 0.6347 - val_loss: 0.3530 - val_sparse_categorical_accuracy: 0.8568 - val_keras_recall_metric: 0.6245 - val_keras_precision_metric: 0.7037 - val_keras_f2_metric: 0.6389\n", + "Epoch 169/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3099 - sparse_categorical_accuracy: 0.8835 - keras_recall_metric: 0.6247 - keras_precision_metric: 0.8095 - keras_f2_metric: 0.6543 - val_loss: 0.3274 - val_sparse_categorical_accuracy: 0.8716 - val_keras_recall_metric: 0.5671 - val_keras_precision_metric: 0.8025 - val_keras_f2_metric: 0.6024\n", + "Epoch 170/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3077 - sparse_categorical_accuracy: 0.8821 - keras_recall_metric: 0.6276 - keras_precision_metric: 0.8423 - keras_f2_metric: 0.6612 - val_loss: 0.3447 - val_sparse_categorical_accuracy: 0.8647 - val_keras_recall_metric: 0.5988 - val_keras_precision_metric: 0.7477 - val_keras_f2_metric: 0.6236\n", + "Epoch 171/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.3067 - sparse_categorical_accuracy: 0.8865 - keras_recall_metric: 0.6090 - keras_precision_metric: 0.8154 - keras_f2_metric: 0.6408 - val_loss: 0.3358 - val_sparse_categorical_accuracy: 0.8706 - val_keras_recall_metric: 0.5924 - val_keras_precision_metric: 0.7778 - val_keras_f2_metric: 0.6221\n", + "Epoch 172/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3070 - sparse_categorical_accuracy: 0.8877 - keras_recall_metric: 0.6039 - keras_precision_metric: 0.8651 - keras_f2_metric: 0.6425 - val_loss: 0.3253 - val_sparse_categorical_accuracy: 0.8705 - val_keras_recall_metric: 0.5784 - val_keras_precision_metric: 0.7877 - val_keras_f2_metric: 0.6109\n", + "Epoch 173/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3071 - sparse_categorical_accuracy: 0.8785 - keras_recall_metric: 0.6239 - keras_precision_metric: 0.7645 - keras_f2_metric: 0.6477 - val_loss: 0.3251 - val_sparse_categorical_accuracy: 0.8706 - val_keras_recall_metric: 0.5555 - val_keras_precision_metric: 0.8074 - val_keras_f2_metric: 0.5924\n", + "Epoch 174/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3068 - sparse_categorical_accuracy: 0.8844 - keras_recall_metric: 0.5840 - keras_precision_metric: 0.8218 - keras_f2_metric: 0.6196 - val_loss: 0.3322 - val_sparse_categorical_accuracy: 0.8695 - val_keras_recall_metric: 0.5784 - val_keras_precision_metric: 0.7829 - val_keras_f2_metric: 0.6102\n", + "Epoch 175/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3050 - sparse_categorical_accuracy: 0.8850 - keras_recall_metric: 0.6279 - keras_precision_metric: 0.8389 - keras_f2_metric: 0.6611 - val_loss: 0.3388 - val_sparse_categorical_accuracy: 0.8668 - val_keras_recall_metric: 0.5829 - val_keras_precision_metric: 0.7674 - val_keras_f2_metric: 0.6123\n", + "Epoch 176/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3045 - sparse_categorical_accuracy: 0.8840 - keras_recall_metric: 0.6205 - keras_precision_metric: 0.8305 - keras_f2_metric: 0.6531 - val_loss: 0.3270 - val_sparse_categorical_accuracy: 0.8712 - val_keras_recall_metric: 0.5821 - val_keras_precision_metric: 0.7881 - val_keras_f2_metric: 0.6142\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 177/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3024 - sparse_categorical_accuracy: 0.8834 - keras_recall_metric: 0.6162 - keras_precision_metric: 0.8360 - keras_f2_metric: 0.6500 - val_loss: 0.3219 - val_sparse_categorical_accuracy: 0.8719 - val_keras_recall_metric: 0.5479 - val_keras_precision_metric: 0.8215 - val_keras_f2_metric: 0.5870\n", + "Epoch 178/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3018 - sparse_categorical_accuracy: 0.8832 - keras_recall_metric: 0.6323 - keras_precision_metric: 0.8345 - keras_f2_metric: 0.6643 - val_loss: 0.3356 - val_sparse_categorical_accuracy: 0.8676 - val_keras_recall_metric: 0.6072 - val_keras_precision_metric: 0.7544 - val_keras_f2_metric: 0.6319\n", + "Epoch 179/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3004 - sparse_categorical_accuracy: 0.8858 - keras_recall_metric: 0.6176 - keras_precision_metric: 0.8084 - keras_f2_metric: 0.6481 - val_loss: 0.3191 - val_sparse_categorical_accuracy: 0.8727 - val_keras_recall_metric: 0.5201 - val_keras_precision_metric: 0.8553 - val_keras_f2_metric: 0.5644\n", + "Epoch 180/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3003 - sparse_categorical_accuracy: 0.8872 - keras_recall_metric: 0.6172 - keras_precision_metric: 0.8324 - keras_f2_metric: 0.6504 - val_loss: 0.3243 - val_sparse_categorical_accuracy: 0.8719 - val_keras_recall_metric: 0.5795 - val_keras_precision_metric: 0.7938 - val_keras_f2_metric: 0.6125\n", + "Epoch 181/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.3006 - sparse_categorical_accuracy: 0.8855 - keras_recall_metric: 0.6514 - keras_precision_metric: 0.8088 - keras_f2_metric: 0.6767 - val_loss: 0.3394 - val_sparse_categorical_accuracy: 0.8673 - val_keras_recall_metric: 0.5944 - val_keras_precision_metric: 0.7614 - val_keras_f2_metric: 0.6216\n", + "Epoch 182/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3016 - sparse_categorical_accuracy: 0.8841 - keras_recall_metric: 0.6108 - keras_precision_metric: 0.8409 - keras_f2_metric: 0.6460 - val_loss: 0.3276 - val_sparse_categorical_accuracy: 0.8700 - val_keras_recall_metric: 0.5718 - val_keras_precision_metric: 0.7906 - val_keras_f2_metric: 0.6053\n", + "Epoch 183/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3008 - sparse_categorical_accuracy: 0.8817 - keras_recall_metric: 0.6378 - keras_precision_metric: 0.8197 - keras_f2_metric: 0.6670 - val_loss: 0.3233 - val_sparse_categorical_accuracy: 0.8717 - val_keras_recall_metric: 0.5745 - val_keras_precision_metric: 0.7965 - val_keras_f2_metric: 0.6084\n", + "Epoch 184/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.3002 - sparse_categorical_accuracy: 0.8821 - keras_recall_metric: 0.6331 - keras_precision_metric: 0.8157 - keras_f2_metric: 0.6620 - val_loss: 0.3334 - val_sparse_categorical_accuracy: 0.8682 - val_keras_recall_metric: 0.6016 - val_keras_precision_metric: 0.7606 - val_keras_f2_metric: 0.6279\n", + "Epoch 185/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.2985 - sparse_categorical_accuracy: 0.8873 - keras_recall_metric: 0.6436 - keras_precision_metric: 0.8286 - keras_f2_metric: 0.6736 - val_loss: 0.3204 - val_sparse_categorical_accuracy: 0.8719 - val_keras_recall_metric: 0.5656 - val_keras_precision_metric: 0.8052 - val_keras_f2_metric: 0.6014\n", + "Epoch 186/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.2968 - sparse_categorical_accuracy: 0.8851 - keras_recall_metric: 0.6567 - keras_precision_metric: 0.8189 - keras_f2_metric: 0.6837 - val_loss: 0.3279 - val_sparse_categorical_accuracy: 0.8712 - val_keras_recall_metric: 0.5861 - val_keras_precision_metric: 0.7852 - val_keras_f2_metric: 0.6174\n", + "Epoch 187/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.2956 - sparse_categorical_accuracy: 0.8864 - keras_recall_metric: 0.6261 - keras_precision_metric: 0.8086 - keras_f2_metric: 0.6557 - val_loss: 0.3251 - val_sparse_categorical_accuracy: 0.8712 - val_keras_recall_metric: 0.5371 - val_keras_precision_metric: 0.8283 - val_keras_f2_metric: 0.5777\n", + "Epoch 188/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.2967 - sparse_categorical_accuracy: 0.8876 - keras_recall_metric: 0.6107 - keras_precision_metric: 0.8218 - keras_f2_metric: 0.6437 - val_loss: 0.3204 - val_sparse_categorical_accuracy: 0.8712 - val_keras_recall_metric: 0.5360 - val_keras_precision_metric: 0.8293 - val_keras_f2_metric: 0.5768\n", + "Epoch 189/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.2958 - sparse_categorical_accuracy: 0.8872 - keras_recall_metric: 0.6474 - keras_precision_metric: 0.8031 - keras_f2_metric: 0.6732 - val_loss: 0.3273 - val_sparse_categorical_accuracy: 0.8686 - val_keras_recall_metric: 0.5722 - val_keras_precision_metric: 0.7836 - val_keras_f2_metric: 0.6048\n", + "Epoch 190/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.2949 - sparse_categorical_accuracy: 0.8868 - keras_recall_metric: 0.6674 - keras_precision_metric: 0.8381 - keras_f2_metric: 0.6953 - val_loss: 0.3232 - val_sparse_categorical_accuracy: 0.8707 - val_keras_recall_metric: 0.5894 - val_keras_precision_metric: 0.7801 - val_keras_f2_metric: 0.6197\n", + "Epoch 191/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.2932 - sparse_categorical_accuracy: 0.8875 - keras_recall_metric: 0.6441 - keras_precision_metric: 0.8323 - keras_f2_metric: 0.6745 - val_loss: 0.3260 - val_sparse_categorical_accuracy: 0.8686 - val_keras_recall_metric: 0.5872 - val_keras_precision_metric: 0.7721 - val_keras_f2_metric: 0.6167\n", + "Epoch 192/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.2933 - sparse_categorical_accuracy: 0.8863 - keras_recall_metric: 0.6633 - keras_precision_metric: 0.8058 - keras_f2_metric: 0.6875 - val_loss: 0.3242 - val_sparse_categorical_accuracy: 0.8711 - val_keras_recall_metric: 0.5639 - val_keras_precision_metric: 0.8024 - val_keras_f2_metric: 0.5995\n", + "Epoch 193/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.2928 - sparse_categorical_accuracy: 0.8884 - keras_recall_metric: 0.6514 - keras_precision_metric: 0.8151 - keras_f2_metric: 0.6785 - val_loss: 0.3239 - val_sparse_categorical_accuracy: 0.8699 - val_keras_recall_metric: 0.5720 - val_keras_precision_metric: 0.7898 - val_keras_f2_metric: 0.6054\n", + "Epoch 194/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.2935 - sparse_categorical_accuracy: 0.8865 - keras_recall_metric: 0.6406 - keras_precision_metric: 0.8357 - keras_f2_metric: 0.6711 - val_loss: 0.3274 - val_sparse_categorical_accuracy: 0.8658 - val_keras_recall_metric: 0.5461 - val_keras_precision_metric: 0.7907 - val_keras_f2_metric: 0.5821\n", + "Epoch 195/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.2924 - sparse_categorical_accuracy: 0.8870 - keras_recall_metric: 0.6763 - keras_precision_metric: 0.8151 - keras_f2_metric: 0.6997 - val_loss: 0.3245 - val_sparse_categorical_accuracy: 0.8689 - val_keras_recall_metric: 0.5910 - val_keras_precision_metric: 0.7710 - val_keras_f2_metric: 0.6200\n", + "Epoch 196/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.2904 - sparse_categorical_accuracy: 0.8889 - keras_recall_metric: 0.6537 - keras_precision_metric: 0.8197 - keras_f2_metric: 0.6813 - val_loss: 0.3249 - val_sparse_categorical_accuracy: 0.8667 - val_keras_recall_metric: 0.5569 - val_keras_precision_metric: 0.7865 - val_keras_f2_metric: 0.5914\n", + "Epoch 197/200\n", + "100/100 [==============================] - 1s 8ms/sample - loss: 0.2895 - sparse_categorical_accuracy: 0.8913 - keras_recall_metric: 0.6722 - keras_precision_metric: 0.8246 - keras_f2_metric: 0.6978 - val_loss: 0.3267 - val_sparse_categorical_accuracy: 0.8674 - val_keras_recall_metric: 0.5938 - val_keras_precision_metric: 0.7625 - val_keras_f2_metric: 0.6213\n", + "Epoch 198/200\n", + "100/100 [==============================] - 1s 9ms/sample - loss: 0.2893 - sparse_categorical_accuracy: 0.8863 - keras_recall_metric: 0.6741 - keras_precision_metric: 0.7852 - keras_f2_metric: 0.6933 - val_loss: 0.3309 - val_sparse_categorical_accuracy: 0.8675 - val_keras_recall_metric: 0.5647 - val_keras_precision_metric: 0.7841 - val_keras_f2_metric: 0.5981\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 199/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.2905 - sparse_categorical_accuracy: 0.8918 - keras_recall_metric: 0.6461 - keras_precision_metric: 0.8384 - keras_f2_metric: 0.6769 - val_loss: 0.3290 - val_sparse_categorical_accuracy: 0.8681 - val_keras_recall_metric: 0.5869 - val_keras_precision_metric: 0.7701 - val_keras_f2_metric: 0.6162\n", + "Epoch 200/200\n", + "100/100 [==============================] - 1s 7ms/sample - loss: 0.2893 - sparse_categorical_accuracy: 0.8913 - keras_recall_metric: 0.6540 - keras_precision_metric: 0.8040 - keras_f2_metric: 0.6793 - val_loss: 0.3146 - val_sparse_categorical_accuracy: 0.8685 - val_keras_recall_metric: 0.5236 - val_keras_precision_metric: 0.8262 - val_keras_f2_metric: 0.5650\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 70, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#cb = keras.callbacks.TensorBoard(log_dir=\"./\",\n", + "# histogram_freq=10, write_images=True)\n", + "trainingStopCallback = haltCallback()\n", + "amp_phs_model.fit(\n", + " [train_data_amp,train_data_phs],\n", + " train_flag,\n", + " validation_data=([test_data_amp, test_data_phs], test_flag),\n", + " epochs=200,\n", + " batch_size=32\n", + ")" + ] + }, + { + "cell_type": "code", + "execution_count": 71, + "metadata": {}, + "outputs": [], + "source": [ + "flags = amp_phs_model.predict([test_data_amp, test_data_phs])\n", + "flags_out = keras_unpad_flags(flags)[:,:,:,None]" + ] + }, + { + "cell_type": "code", + "execution_count": 72, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0.5, 1.0, '11.89% ML Flags not Manual Flags')" + ] + }, + "execution_count": 72, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, axes = plt.subplots(figsize=(12,12), ncols=2, nrows=2)\n", + "ax = axes[0,0]\n", + "nan_array = np.ones_like(test_flag).astype(np.float64)\n", + "nan_array[test_flag == 1] = np.nan\n", + "ax.imshow(test_data_amp[0,:,:,0], aspect='auto')\n", + "ax.set_xlabel(\"Frequency Channels\", fontsize=15)\n", + "ax.set_ylabel(\"Time Integrations\", fontsize=15)\n", + "ax.set_title(\"Manual Flags\")\n", + "\n", + "ax = axes[0,1]\n", + "nan_array = np.ones_like(flags_out).astype(np.float64)\n", + "nan_array[flags_out == 1] = np.nan\n", + "ax.imshow((test_data_amp*nan_array)[0,:,:,0], aspect='auto')\n", + "ax.set_xlabel(\"Frequency Channels\", fontsize=15)\n", + "ax.set_ylabel(\"Time Integrations\", fontsize=15)\n", + "ax.set_title(\"ML Flags\")\n", + "\n", + "ax = axes[1,0]\n", + "ax.imshow(test_flag[0,:,:,0]*(1-flags_out[0,:,:,0]), aspect='auto')\n", + "ax.set_xlabel(\"Frequency Channels\", fontsize=15)\n", + "ax.set_ylabel(\"Time Integrations\", fontsize=15)\n", + "recall = np.sum(test_flag[0,:,:,0]*flags_out[0,:,:,0])/np.sum(test_flag[0,:,:,0])\n", + "ax.set_title(\"{0:.2f}% Manual Flags not ML Flags\".format((1-recall)*100))\n", + "\n", + "ax = axes[1,1]\n", + "ax.imshow((1-test_flag[0,:,:,0])*flags_out[0,:,:,0], aspect='auto')\n", + "ax.set_xlabel(\"Frequency Channels\", fontsize=15)\n", + "ax.set_ylabel(\"Time Integrations\", fontsize=15)\n", + "precision = np.sum(test_flag[0,:,:,0]*flags_out[0,:,:,0])/np.sum(flags_out[0,:,:,0])\n", + "ax.set_title(\"{0:.2f}% ML Flags not Manual Flags\".format((1-precision)*100))" + ] + }, + { + "cell_type": "code", + "execution_count": 56, + "metadata": {}, + "outputs": [], + "source": [ + "#val_keras_recall_metric: 0.4739 - val_keras_precision_metric: 0.8898 - val_keras_f2_metric: 0.5228 200" + ] + }, + { + "cell_type": "code", + "execution_count": 57, + "metadata": {}, + "outputs": [], + "source": [ + "#val_keras_recall_metric: 0.4549 - val_keras_precision_metric: 0.8606 - val_keras_f2_metric: 0.5022, 200" + ] + }, + { + "cell_type": "code", + "execution_count": 58, + "metadata": {}, + "outputs": [], + "source": [ + "#val_keras_recall_metric: 0.5805 - val_keras_precision_metric: 0.8900 - val_keras_f2_metric: 0.6238 144" + ] + }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [], + "source": [ + "#val_keras_recall_metric: 0.6017 - val_keras_precision_metric: 0.8835 - val_keras_f2_metric: 0.6426, 42" + ] + }, + { + "cell_type": "code", + "execution_count": 60, + "metadata": {}, + "outputs": [], + "source": [ + "#val_keras_recall_metric: 0.6141 - val_keras_precision_metric: 0.8073 - val_keras_f2_metric: 0.6449, 47" + ] + }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [], + "source": [ + "#val_keras_recall_metric: 0.4301 - val_keras_precision_metric: 0.7619 - val_keras_f2_metric: 0.4711, 105" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "\"\"\"\n", + "recall = [0.4431, 0.4739, 0.4549, 0.5805, 0.6017 , 0.6141,0.4301 ]\n", + "precision = [0.8231,0.8898,0.8606,0.8900,0.8835,0.8073,0.7619 ]\n", + "f2 = [0.4881, 0.5228, 0.5022, 0.6238, 0.6426, 0.6449, 0.4711 ]\n", + "Epoch = [200,200,200,144,42,47,105]\n", + "names = [\"one layer\", \"one layer \\n with more \\n LeakyRelu\", \"one layer \\n with one \\n more conv\", \"two layer\", \"three layer\", \"four layer\", \"five layer\"]\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "Text(0, 0.5, 'Epochs to reach 0.15 loss')" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "\"\"\"\n", + "fig, ax = plt.subplots()\n", + "ax.plot(recall, marker=\"*\", label=\"recall\")\n", + "ax.plot(precision,marker=\"*\",label=\"precision\")\n", + "ax.plot(f2,marker=\"*\",label='f2')\n", + "ax.set_ylim(0,1)\n", + "ax.set_ylabel(\"Metric\",fontsize=15)\n", + "ax.legend()\n", + "ax.set_xticks([0,1,2,3,4,5,6])\n", + "ax.set_xticklabels(names, fontsize=8)\n", + "axt = ax.twinx()\n", + "axt.plot(Epoch,marker=\"*\",label=\"epoch\",c='r')\n", + "axt.legend()\n", + "axt.set_ylabel(\"Epochs to reach 0.15 loss\",fontsize=15)\n", + "\"\"\"" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.9" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/ml_rfi/helper_functions.py b/ml_rfi/helper_functions.py index 650b885..ece6a6d 100644 --- a/ml_rfi/helper_functions.py +++ b/ml_rfi/helper_functions.py @@ -1241,6 +1241,7 @@ def train_model( metrics=["accuracy"], tb_callback=True, epochs=200, + patience=10, batch_size=32, verbose=False, ): @@ -1279,6 +1280,8 @@ def train_model( working directory. epochs : int The number of epochs to train the model for. + patience : int + The number of patience of epochs when calling an early stopping. batch_size : int The batch size to use during training. verbose : bool @@ -1323,7 +1326,8 @@ def train_model( callbacks = [tb] else: callbacks = [] - + es = keras.callbacks.EarlyStopping(monitor='val_loss', mode='min', verbose=1, patience=patience) + callbacks.append(es) # fit model model.fit( [self.train_data_amp, self.train_data_phs],