Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save imohitmayank/757a2d878a1510180f134a8c7f45d6dc to your computer and use it in GitHub Desktop.
Save imohitmayank/757a2d878a1510180f134a8c7f45d6dc to your computer and use it in GitHub Desktop.
Complimentary code for "Guide to Custom Recurrent Modeling in Keras" article by Mohit Mayank
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "_FahhKA0MQBo"
},
"source": [
"## Guide to Custom Recurrent Modeling in Keras\n",
"\n",
"Complimentary code for \"Guide to Custom Recurrent Modeling in Keras\" article by Mohit Mayank. \n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"id": "ToayEr6WMdNl"
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"# !pip install tensorflow==2.3.0\n",
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"from tensorflow.keras import activations\n",
"import matplotlib.pyplot as plt\n",
"from tensorflow.keras import layers"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "44mtHOFERFft"
},
"source": [
"### Load and Process the dataset\n",
"\n",
"Dataset used: IMDB movie review sentiment classification dataset\n",
"\n",
"Link: https://keras.io/api/datasets/imdb/#getwordindex-function"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "5uYCeT7aQesG",
"outputId": "6c2fa5e4-e0f0-4c84-c220-6000cacae62c"
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"<string>:6: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray\n",
"C:\\Users\\1316723\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\tensorflow\\python\\keras\\datasets\\imdb.py:159: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray\n",
" x_train, y_train = np.array(xs[:idx]), np.array(labels[:idx])\n",
"C:\\Users\\1316723\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\tensorflow\\python\\keras\\datasets\\imdb.py:160: VisibleDeprecationWarning: Creating an ndarray from ragged nested sequences (which is a list-or-tuple of lists-or-tuples-or ndarrays with different lengths or shapes) is deprecated. If you meant to do this, you must specify 'dtype=object' when creating the ndarray\n",
" x_test, y_test = np.array(xs[idx:]), np.array(labels[idx:])\n"
]
}
],
"source": [
"num_words = 5000\n",
"maxlen = 100\n",
"(x_train, y_train), (x_test, y_test) = tf.keras.datasets.imdb.load_data(num_words=num_words, \n",
" maxlen=maxlen, seed=0)"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"id": "poHIxdHoT9tX"
},
"outputs": [],
"source": [
"## perform padding\n",
"x_train = tf.keras.preprocessing.sequence.pad_sequences(x_train, padding=\"pre\")\n",
"x_test = tf.keras.preprocessing.sequence.pad_sequences(x_test, padding=\"pre\")"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "I5yaP0tdfP3A"
},
"source": [
"## Base test class"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"id": "OBYt5lOhfS7p"
},
"outputs": [],
"source": [
"class baseTestModel():\n",
" \"\"\"The base class for testing model\n",
" \"\"\"\n",
" def __init__(self):\n",
" self.model = None\n",
" self.stats = {}\n",
" self.accuracies = []\n",
" self.history = []\n",
" \n",
" def compile_and_test(self, num_test=3, batch_size=64, epochs=2, validation_split=0.2):\n",
" # compile the model\n",
" self.model.compile(\n",
" loss=keras.losses.BinaryCrossentropy(from_logits=False),\n",
" optimizer=keras.optimizers.Adam(),\n",
" metrics=[\"accuracy\"],\n",
" )\n",
" # get the weights\n",
" self.model.save_weights('pretrain_weights.h5')\n",
" # Perform test\n",
" for random_seed in range(0, num_test):\n",
" # reset the weights\n",
" self.model.load_weights('pretrain_weights.h5')\n",
" # Set seed before training\n",
" tf.random.set_seed(random_seed)\n",
" # Training\n",
" history = self.model.fit(x_train, y_train, batch_size=batch_size, epochs=epochs, validation_split=validation_split)\n",
" self.history.append(history)\n",
" # eval on test dataset\n",
" test_scores = self.model.evaluate(x_test, y_test, verbose=2)\n",
" # store the weights\n",
" self.accuracies.append(test_scores[1])\n",
" # print\n",
" print(f\"Accuracy: {test_scores[1]}; Loss: {test_scores[0]}\")\n",
" # create stats of the accuracies\n",
" self.stats = {\n",
" 'model_name': [self.model.name],\n",
" 'num_tests': [num_test],\n",
" 'epochs': [epochs],\n",
" 'avg_accuracy': [np.mean(self.accuracies)],\n",
" 'std': [np.std(self.accuracies)],\n",
" 'max_accuracy': [max(self.accuracies)],\n",
" 'min_accuracy': [min(self.accuracies)]\n",
" }\n",
" # save stats\n",
" self.saveStats()\n",
" # print stats\n",
" print(self.stats)\n",
" \n",
" def summary(self):\n",
" print(self.model.summary())\n",
"\n",
" def plot(self):\n",
" display(keras.utils.plot_model(self.model))\n",
" \n",
" def saveStats(self):\n",
" self.stats['count_params'] = [self.model.count_params()]\n",
" pd.DataFrame(self.stats).to_csv(\"modelTrainingStats_e=5.csv\", mode=\"a\", index=False, header=False)\n",
" \n",
" def plotLoss(self, epoch_no=0):\n",
" plt.plot(self.history[epoch_no].history['loss'])\n",
" plt.plot(self.history[epoch_no].history['val_loss'])\n",
" plt.legend(['train', 'val'], loc='upper left')\n",
" plt.show()\n",
" \n",
" def plotAccuracy(self, epoch_no=0):\n",
" plt.plot(self.history[epoch_no].history['accuracy'])\n",
" plt.plot(self.history[epoch_no].history['val_accuracy'])\n",
" plt.legend(['train', 'val'], loc='upper left')\n",
" plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"## Code setting\n",
"num_tests = 5\n",
"epochs = 5"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "EBSGMlCgT0dC"
},
"source": [
"## Single Stack Layer model tests"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "MhvPqydXd-l9"
},
"source": [
"### Model 1: Single Stack - Return Sequence False - LSTM"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"id": "z2hmkTqrX2hz"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/5\n",
"35/35 [==============================] - 5s 135ms/step - loss: 0.6520 - accuracy: 0.6258 - val_loss: 0.5390 - val_accuracy: 0.7784\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 124ms/step - loss: 0.3040 - accuracy: 0.8765 - val_loss: 0.3485 - val_accuracy: 0.8450\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 126ms/step - loss: 0.1409 - accuracy: 0.9482 - val_loss: 0.4143 - val_accuracy: 0.8541\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 124ms/step - loss: 0.0536 - accuracy: 0.9842 - val_loss: 0.5107 - val_accuracy: 0.8450\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 124ms/step - loss: 0.0268 - accuracy: 0.9910 - val_loss: 0.5410 - val_accuracy: 0.8486\n",
"93/93 - 2s - loss: 0.6563 - accuracy: 0.8070\n",
"Accuracy: 0.8069524168968201; Loss: 0.6563424468040466\n",
"Epoch 1/5\n",
"35/35 [==============================] - 5s 129ms/step - loss: 0.6890 - accuracy: 0.5464 - val_loss: 0.6875 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 124ms/step - loss: 0.6846 - accuracy: 0.5555 - val_loss: 0.6854 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 125ms/step - loss: 0.6753 - accuracy: 0.5600 - val_loss: 0.6730 - val_accuracy: 0.5622\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 126ms/step - loss: 0.5595 - accuracy: 0.6997 - val_loss: 0.5556 - val_accuracy: 0.7081\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 125ms/step - loss: 0.3247 - accuracy: 0.8778 - val_loss: 0.4444 - val_accuracy: 0.8018\n",
"93/93 - 2s - loss: 0.5033 - accuracy: 0.7813\n",
"Accuracy: 0.7813027501106262; Loss: 0.5033120512962341\n",
"Epoch 1/5\n",
"35/35 [==============================] - 4s 128ms/step - loss: 0.6890 - accuracy: 0.5491 - val_loss: 0.6871 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 126ms/step - loss: 0.6827 - accuracy: 0.5555 - val_loss: 0.6832 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 124ms/step - loss: 0.6652 - accuracy: 0.5726 - val_loss: 0.6526 - val_accuracy: 0.6216\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 124ms/step - loss: 0.4940 - accuracy: 0.7759 - val_loss: 0.4752 - val_accuracy: 0.7694\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 128ms/step - loss: 0.2559 - accuracy: 0.8995 - val_loss: 0.5180 - val_accuracy: 0.7550\n",
"93/93 - 2s - loss: 0.5672 - accuracy: 0.7084\n",
"Accuracy: 0.7084036469459534; Loss: 0.5671756863594055\n",
"Epoch 1/5\n",
"35/35 [==============================] - 5s 132ms/step - loss: 0.6884 - accuracy: 0.5532 - val_loss: 0.6876 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 124ms/step - loss: 0.6844 - accuracy: 0.5555 - val_loss: 0.6857 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 127ms/step - loss: 0.6784 - accuracy: 0.5559 - val_loss: 0.6792 - val_accuracy: 0.5550\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 126ms/step - loss: 0.6461 - accuracy: 0.6019 - val_loss: 0.6257 - val_accuracy: 0.6685\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 125ms/step - loss: 0.4002 - accuracy: 0.8332 - val_loss: 0.4962 - val_accuracy: 0.7658\n",
"93/93 - 2s - loss: 0.5253 - accuracy: 0.7422\n",
"Accuracy: 0.7421532273292542; Loss: 0.5252822637557983\n",
"Epoch 1/5\n",
"35/35 [==============================] - 4s 127ms/step - loss: 0.6912 - accuracy: 0.5117 - val_loss: 0.6876 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 121ms/step - loss: 0.6838 - accuracy: 0.5555 - val_loss: 0.6843 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 121ms/step - loss: 0.6738 - accuracy: 0.5604 - val_loss: 0.6724 - val_accuracy: 0.5622\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 122ms/step - loss: 0.5986 - accuracy: 0.7119 - val_loss: 0.4924 - val_accuracy: 0.7514\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 121ms/step - loss: 0.3440 - accuracy: 0.8593 - val_loss: 0.4464 - val_accuracy: 0.8018\n",
"93/93 - 2s - loss: 0.5208 - accuracy: 0.7587\n",
"Accuracy: 0.7586905360221863; Loss: 0.5207726359367371\n",
"{'model_name': ['SS_RSF_LSTM'], 'num_tests': [5], 'epochs': [5], 'avg_accuracy': [0.759500515460968], 'std': [0.03358420709158762], 'max_accuracy': [0.8069524168968201], 'min_accuracy': [0.7084036469459534], 'count_params': [427137]}\n"
]
}
],
"source": [
"class SS_RSF_LSTM(baseTestModel):\n",
" def __init__(self):\n",
" # inherit\n",
" super().__init__()\n",
" # build model\n",
" inputs = keras.Input(shape=(99, ))\n",
" embedding = layers.Embedding(num_words, 64)(inputs)\n",
" rl = layers.LSTM(128)(embedding)\n",
" dense = layers.Dense(64)(rl)\n",
" output = layers.Dense(1, activation='sigmoid')(dense)\n",
" self.model = keras.Model(inputs=inputs, outputs=output, name=\"SS_RSF_LSTM\")\n",
"# initialize and train\n",
"model = SS_RSF_LSTM()\n",
"model.compile_and_test(num_test=num_tests, epochs=epochs)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "abPCeq9HHmS_"
},
"source": [
"### Model 2: Single Stack - Return Sequence False - GRU "
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "wJ67nkr9Hl8J",
"outputId": "818a41e4-577f-4fd9-f7c5-88f1b00e1cb2"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/5\n",
"35/35 [==============================] - 4s 123ms/step - loss: 0.6790 - accuracy: 0.5676 - val_loss: 0.6406 - val_accuracy: 0.6378\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 112ms/step - loss: 0.4390 - accuracy: 0.8034 - val_loss: 0.4527 - val_accuracy: 0.7892\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 111ms/step - loss: 0.1856 - accuracy: 0.9283 - val_loss: 0.3980 - val_accuracy: 0.8306\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 111ms/step - loss: 0.0807 - accuracy: 0.9793 - val_loss: 0.5214 - val_accuracy: 0.8072\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 110ms/step - loss: 0.0997 - accuracy: 0.9666 - val_loss: 0.5907 - val_accuracy: 0.7514\n",
"93/93 - 1s - loss: 0.7086 - accuracy: 0.7128\n",
"Accuracy: 0.7127910852432251; Loss: 0.7085798382759094\n",
"Epoch 1/5\n",
"35/35 [==============================] - 4s 113ms/step - loss: 0.6892 - accuracy: 0.5410 - val_loss: 0.6865 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 111ms/step - loss: 0.6806 - accuracy: 0.5577 - val_loss: 0.6795 - val_accuracy: 0.5568\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 110ms/step - loss: 0.6331 - accuracy: 0.6348 - val_loss: 0.6173 - val_accuracy: 0.6631\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 111ms/step - loss: 0.4283 - accuracy: 0.8025 - val_loss: 0.5748 - val_accuracy: 0.7189\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 111ms/step - loss: 0.2370 - accuracy: 0.9040 - val_loss: 0.6252 - val_accuracy: 0.7225\n",
"93/93 - 1s - loss: 0.7094 - accuracy: 0.6905\n",
"Accuracy: 0.6905163526535034; Loss: 0.7093851566314697\n",
"Epoch 1/5\n",
"35/35 [==============================] - 4s 114ms/step - loss: 0.6895 - accuracy: 0.5482 - val_loss: 0.6866 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 111ms/step - loss: 0.6829 - accuracy: 0.5555 - val_loss: 0.6826 - val_accuracy: 0.5514\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 113ms/step - loss: 0.6644 - accuracy: 0.5789 - val_loss: 0.6618 - val_accuracy: 0.6216\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 111ms/step - loss: 0.5601 - accuracy: 0.7317 - val_loss: 0.6118 - val_accuracy: 0.6577\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 113ms/step - loss: 0.3644 - accuracy: 0.8363 - val_loss: 0.6310 - val_accuracy: 0.7640\n",
"93/93 - 1s - loss: 0.7020 - accuracy: 0.7212\n",
"Accuracy: 0.7212284803390503; Loss: 0.7019672393798828\n",
"Epoch 1/5\n",
"35/35 [==============================] - 4s 116ms/step - loss: 0.6900 - accuracy: 0.5401 - val_loss: 0.6866 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 112ms/step - loss: 0.6834 - accuracy: 0.5555 - val_loss: 0.6830 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 112ms/step - loss: 0.6708 - accuracy: 0.5667 - val_loss: 0.6666 - val_accuracy: 0.5766\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 112ms/step - loss: 0.5906 - accuracy: 0.6844 - val_loss: 0.5942 - val_accuracy: 0.6721\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 113ms/step - loss: 0.3654 - accuracy: 0.8445 - val_loss: 0.5937 - val_accuracy: 0.6991\n",
"93/93 - 1s - loss: 0.6841 - accuracy: 0.6682\n",
"Accuracy: 0.6682416200637817; Loss: 0.6841462850570679\n",
"Epoch 1/5\n",
"35/35 [==============================] - 4s 115ms/step - loss: 0.6900 - accuracy: 0.5505 - val_loss: 0.6868 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 109ms/step - loss: 0.6828 - accuracy: 0.5555 - val_loss: 0.6831 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 111ms/step - loss: 0.6675 - accuracy: 0.5730 - val_loss: 0.6648 - val_accuracy: 0.5946\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 112ms/step - loss: 0.5724 - accuracy: 0.7092 - val_loss: 0.6014 - val_accuracy: 0.6685\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 111ms/step - loss: 0.3627 - accuracy: 0.8363 - val_loss: 0.6293 - val_accuracy: 0.7351\n",
"93/93 - 1s - loss: 0.6936 - accuracy: 0.7138\n",
"Accuracy: 0.7138035893440247; Loss: 0.6936304569244385\n",
"{'model_name': ['SS_RSF_GRU'], 'num_tests': [5], 'epochs': [5], 'avg_accuracy': [0.7013162255287171], 'std': [0.019466234011421092], 'max_accuracy': [0.7212284803390503], 'min_accuracy': [0.6682416200637817], 'count_params': [402817]}\n"
]
}
],
"source": [
"class SS_RSF_GRU(baseTestModel):\n",
" def __init__(self):\n",
" # inherit\n",
" super().__init__()\n",
" # build model\n",
" inputs = keras.Input(shape=(99, ))\n",
" embedding = layers.Embedding(num_words, 64)(inputs)\n",
" rl = layers.GRU(128)(embedding)\n",
" dense = layers.Dense(64)(rl)\n",
" output = layers.Dense(1, activation='sigmoid')(dense)\n",
" self.model = keras.Model(inputs=inputs, outputs=output, name=\"SS_RSF_GRU\")\n",
"model = SS_RSF_GRU()\n",
"model.compile_and_test(num_test=num_tests, epochs=epochs)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "2y5gY5pdKPa5"
},
"source": [
"### Model 3: Single Stack - Return Seq True - LSTM"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "j6znSk3nKPr9",
"outputId": "6032281b-269d-44ae-c4c4-9c26d052cc70"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/5\n",
"35/35 [==============================] - 5s 137ms/step - loss: 0.6772 - accuracy: 0.5735 - val_loss: 0.6695 - val_accuracy: 0.6162\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 123ms/step - loss: 0.5398 - accuracy: 0.7178 - val_loss: 0.4192 - val_accuracy: 0.8252\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 123ms/step - loss: 0.2799 - accuracy: 0.9008 - val_loss: 0.4075 - val_accuracy: 0.8198\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 122ms/step - loss: 0.1297 - accuracy: 0.9599 - val_loss: 0.4267 - val_accuracy: 0.8468\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 124ms/step - loss: 0.0602 - accuracy: 0.9815 - val_loss: 0.4756 - val_accuracy: 0.8468\n",
"93/93 - 2s - loss: 0.5554 - accuracy: 0.8299\n",
"Accuracy: 0.8299021124839783; Loss: 0.555377721786499\n",
"Epoch 1/5\n",
"35/35 [==============================] - 5s 130ms/step - loss: 0.6882 - accuracy: 0.5564 - val_loss: 0.6882 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 127ms/step - loss: 0.6860 - accuracy: 0.5555 - val_loss: 0.6879 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 128ms/step - loss: 0.6847 - accuracy: 0.5555 - val_loss: 0.6876 - val_accuracy: 0.5495\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 125ms/step - loss: 0.6827 - accuracy: 0.5555 - val_loss: 0.6864 - val_accuracy: 0.5495\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 126ms/step - loss: 0.6761 - accuracy: 0.5591 - val_loss: 0.6793 - val_accuracy: 0.5676\n",
"93/93 - 2s - loss: 0.6791 - accuracy: 0.5650\n",
"Accuracy: 0.564967930316925; Loss: 0.6790855526924133\n",
"Epoch 1/5\n",
"35/35 [==============================] - 5s 129ms/step - loss: 0.6868 - accuracy: 0.5577 - val_loss: 0.6881 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 126ms/step - loss: 0.6768 - accuracy: 0.5771 - val_loss: 0.6765 - val_accuracy: 0.5856\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 125ms/step - loss: 0.5735 - accuracy: 0.7250 - val_loss: 0.5162 - val_accuracy: 0.7568\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 126ms/step - loss: 0.3776 - accuracy: 0.8445 - val_loss: 0.4932 - val_accuracy: 0.8018\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 127ms/step - loss: 0.2064 - accuracy: 0.9274 - val_loss: 0.3871 - val_accuracy: 0.8216\n",
"93/93 - 2s - loss: 0.4416 - accuracy: 0.7958\n",
"Accuracy: 0.7958150506019592; Loss: 0.44155246019363403\n",
"Epoch 1/5\n",
"35/35 [==============================] - 4s 129ms/step - loss: 0.6878 - accuracy: 0.5550 - val_loss: 0.6883 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 123ms/step - loss: 0.6846 - accuracy: 0.5555 - val_loss: 0.6876 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 124ms/step - loss: 0.6818 - accuracy: 0.5555 - val_loss: 0.6866 - val_accuracy: 0.5495\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 125ms/step - loss: 0.6762 - accuracy: 0.5694 - val_loss: 0.6798 - val_accuracy: 0.6054\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 126ms/step - loss: 0.6381 - accuracy: 0.6474 - val_loss: 0.6307 - val_accuracy: 0.5820\n",
"93/93 - 2s - loss: 0.6362 - accuracy: 0.5710\n",
"Accuracy: 0.5710428357124329; Loss: 0.6362468004226685\n",
"Epoch 1/5\n",
"35/35 [==============================] - 5s 130ms/step - loss: 0.6904 - accuracy: 0.5135 - val_loss: 0.6873 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 127ms/step - loss: 0.6834 - accuracy: 0.5555 - val_loss: 0.6860 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 128ms/step - loss: 0.6788 - accuracy: 0.5555 - val_loss: 0.6822 - val_accuracy: 0.5495\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 126ms/step - loss: 0.6493 - accuracy: 0.6069 - val_loss: 0.6088 - val_accuracy: 0.6703\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 126ms/step - loss: 0.5948 - accuracy: 0.6628 - val_loss: 0.5729 - val_accuracy: 0.7297\n",
"93/93 - 2s - loss: 0.5742 - accuracy: 0.7283\n",
"Accuracy: 0.7283158898353577; Loss: 0.5741933584213257\n",
"{'model_name': ['SS_RST_LSTM'], 'num_tests': [5], 'epochs': [5], 'avg_accuracy': [0.6980087637901307], 'std': [0.11108614434086024], 'max_accuracy': [0.8299021124839783], 'min_accuracy': [0.564967930316925], 'count_params': [427137]}\n"
]
}
],
"source": [
"class SS_RST_LSTM(baseTestModel):\n",
" def __init__(self):\n",
" # inherit\n",
" super().__init__()\n",
" # build model\n",
" inputs = keras.Input(shape=(99, ))\n",
" embedding = layers.Embedding(num_words, 64)(inputs)\n",
" rl = layers.LSTM(128, return_sequences=True)(embedding)\n",
" avg = tf.keras.layers.AveragePooling1D(pool_size=99)(rl)\n",
" dense = layers.Dense(64)(avg)\n",
" output = layers.Dense(1, activation='sigmoid')(dense)\n",
" self.model = keras.Model(inputs=inputs, outputs=output, name=\"SS_RST_LSTM\")\n",
"model = SS_RST_LSTM()\n",
"model.compile_and_test(num_test=num_tests, epochs=epochs)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "EQCHAWaBPXoA"
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "6bb5B4qjQ920"
},
"source": [
"### Model 4: Single Stack - Return Seq True - GRU"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "kYYbkakxPXjX",
"outputId": "15efb7ec-f35f-4ea5-d1d0-4ea05dfa73a3"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/5\n",
"35/35 [==============================] - 4s 126ms/step - loss: 0.6804 - accuracy: 0.5717 - val_loss: 0.6650 - val_accuracy: 0.6144\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 114ms/step - loss: 0.4469 - accuracy: 0.7980 - val_loss: 0.3675 - val_accuracy: 0.8450\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 111ms/step - loss: 0.1818 - accuracy: 0.9297 - val_loss: 0.3424 - val_accuracy: 0.8649\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 114ms/step - loss: 0.0820 - accuracy: 0.9739 - val_loss: 0.4539 - val_accuracy: 0.8486\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 114ms/step - loss: 0.0357 - accuracy: 0.9896 - val_loss: 0.6319 - val_accuracy: 0.8180\n",
"93/93 - 1s - loss: 0.7111 - accuracy: 0.8242\n",
"Accuracy: 0.8241646885871887; Loss: 0.7110700011253357\n",
"Epoch 1/5\n",
"35/35 [==============================] - 4s 115ms/step - loss: 0.6871 - accuracy: 0.5564 - val_loss: 0.6887 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 111ms/step - loss: 0.6852 - accuracy: 0.5555 - val_loss: 0.6874 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 111ms/step - loss: 0.6828 - accuracy: 0.5555 - val_loss: 0.6865 - val_accuracy: 0.5495\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 110ms/step - loss: 0.6779 - accuracy: 0.5582 - val_loss: 0.6826 - val_accuracy: 0.5694\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 112ms/step - loss: 0.6570 - accuracy: 0.6357 - val_loss: 0.6513 - val_accuracy: 0.6180\n",
"93/93 - 1s - loss: 0.6468 - accuracy: 0.6237\n",
"Accuracy: 0.6236922144889832; Loss: 0.6467635631561279\n",
"Epoch 1/5\n",
"35/35 [==============================] - 4s 118ms/step - loss: 0.6837 - accuracy: 0.5600 - val_loss: 0.6844 - val_accuracy: 0.5532\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 116ms/step - loss: 0.6354 - accuracy: 0.6465 - val_loss: 0.6162 - val_accuracy: 0.6090\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 114ms/step - loss: 0.3734 - accuracy: 0.8530 - val_loss: 0.3674 - val_accuracy: 0.8342\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 116ms/step - loss: 0.1516 - accuracy: 0.9405 - val_loss: 0.3802 - val_accuracy: 0.8468\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 115ms/step - loss: 0.0727 - accuracy: 0.9766 - val_loss: 0.4396 - val_accuracy: 0.8486\n",
"93/93 - 1s - loss: 0.5081 - accuracy: 0.8319\n",
"Accuracy: 0.8319271206855774; Loss: 0.5080862045288086\n",
"Epoch 1/5\n",
"35/35 [==============================] - 4s 116ms/step - loss: 0.6881 - accuracy: 0.5550 - val_loss: 0.6884 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 113ms/step - loss: 0.6848 - accuracy: 0.5555 - val_loss: 0.6879 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 113ms/step - loss: 0.6826 - accuracy: 0.5555 - val_loss: 0.6871 - val_accuracy: 0.5495\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 112ms/step - loss: 0.6790 - accuracy: 0.5604 - val_loss: 0.6837 - val_accuracy: 0.5784\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 114ms/step - loss: 0.6671 - accuracy: 0.6100 - val_loss: 0.6739 - val_accuracy: 0.6072\n",
"93/93 - 1s - loss: 0.6729 - accuracy: 0.6048\n",
"Accuracy: 0.6047924160957336; Loss: 0.6728642582893372\n",
"Epoch 1/5\n",
"35/35 [==============================] - 4s 117ms/step - loss: 0.6871 - accuracy: 0.5559 - val_loss: 0.6876 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 113ms/step - loss: 0.6814 - accuracy: 0.5555 - val_loss: 0.6857 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 115ms/step - loss: 0.6731 - accuracy: 0.5794 - val_loss: 0.6796 - val_accuracy: 0.5874\n",
"Epoch 4/5\n",
"35/35 [==============================] - 4s 114ms/step - loss: 0.6195 - accuracy: 0.6830 - val_loss: 0.5430 - val_accuracy: 0.7171\n",
"Epoch 5/5\n",
"35/35 [==============================] - 4s 114ms/step - loss: 0.5536 - accuracy: 0.7696 - val_loss: 0.5449 - val_accuracy: 0.7333\n",
"93/93 - 1s - loss: 0.5431 - accuracy: 0.7442\n",
"Accuracy: 0.7441781759262085; Loss: 0.5431165099143982\n",
"{'model_name': ['SS_RST_GRU'], 'num_tests': [5], 'epochs': [5], 'avg_accuracy': [0.7257509231567383], 'std': [0.09627581029300097], 'max_accuracy': [0.8319271206855774], 'min_accuracy': [0.6047924160957336], 'count_params': [402817]}\n"
]
}
],
"source": [
"class SS_RST_GRU(baseTestModel):\n",
" def __init__(self):\n",
" # inherit\n",
" super().__init__()\n",
" # build model\n",
" inputs = keras.Input(shape=(99, ))\n",
" embedding = layers.Embedding(num_words, 64)(inputs)\n",
" rl = layers.GRU(128, return_sequences=True)(embedding)\n",
" avg = tf.keras.layers.AveragePooling1D(pool_size=99)(rl)\n",
" dense = layers.Dense(64)(avg)\n",
" output = layers.Dense(1, activation='sigmoid')(dense)\n",
" self.model = keras.Model(inputs=inputs, outputs=output, name=\"SS_RST_GRU\")\n",
"# create and test\n",
"model = SS_RST_GRU()\n",
"model.compile_and_test(num_test=num_tests, epochs=epochs)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "GVvwAl8qRIMC"
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "qM49y2GSdynL"
},
"source": [
"## Multiple Stack Layer model tests"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "jxOwUTUEeGsQ"
},
"source": [
"### Model 5: Multiple Stack - Return Sequence False - LSTM"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"id": "RHWljpwtRIQt"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/5\n",
"35/35 [==============================] - 10s 291ms/step - loss: 0.6750 - accuracy: 0.5830 - val_loss: 0.6526 - val_accuracy: 0.6883\n",
"Epoch 2/5\n",
"35/35 [==============================] - 9s 267ms/step - loss: 0.4498 - accuracy: 0.8251 - val_loss: 0.4514 - val_accuracy: 0.7982\n",
"Epoch 3/5\n",
"35/35 [==============================] - 9s 269ms/step - loss: 0.2061 - accuracy: 0.9166 - val_loss: 0.4256 - val_accuracy: 0.8306\n",
"Epoch 4/5\n",
"35/35 [==============================] - 9s 268ms/step - loss: 0.0660 - accuracy: 0.9802 - val_loss: 0.5606 - val_accuracy: 0.8432\n",
"Epoch 5/5\n",
"35/35 [==============================] - 9s 269ms/step - loss: 0.0137 - accuracy: 0.9973 - val_loss: 0.7189 - val_accuracy: 0.8108\n",
"93/93 - 5s - loss: 0.8619 - accuracy: 0.7951\n",
"Accuracy: 0.7951400876045227; Loss: 0.861894428730011\n",
"Epoch 1/5\n",
"35/35 [==============================] - 10s 272ms/step - loss: 0.6887 - accuracy: 0.5528 - val_loss: 0.6876 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 9s 266ms/step - loss: 0.6858 - accuracy: 0.5555 - val_loss: 0.6863 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 9s 265ms/step - loss: 0.6811 - accuracy: 0.5555 - val_loss: 0.6801 - val_accuracy: 0.5514\n",
"Epoch 4/5\n",
"35/35 [==============================] - 9s 268ms/step - loss: 0.6026 - accuracy: 0.6456 - val_loss: 0.4903 - val_accuracy: 0.7766\n",
"Epoch 5/5\n",
"35/35 [==============================] - 9s 263ms/step - loss: 0.3001 - accuracy: 0.8706 - val_loss: 0.4052 - val_accuracy: 0.8252\n",
"93/93 - 5s - loss: 0.4557 - accuracy: 0.7978\n",
"Accuracy: 0.7978399991989136; Loss: 0.4557492733001709\n",
"Epoch 1/5\n",
"35/35 [==============================] - 10s 275ms/step - loss: 0.6891 - accuracy: 0.5532 - val_loss: 0.6877 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 9s 271ms/step - loss: 0.6857 - accuracy: 0.5555 - val_loss: 0.6867 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 9s 266ms/step - loss: 0.6818 - accuracy: 0.5555 - val_loss: 0.6823 - val_accuracy: 0.5495\n",
"Epoch 4/5\n",
"35/35 [==============================] - 9s 265ms/step - loss: 0.6344 - accuracy: 0.6105 - val_loss: 0.5349 - val_accuracy: 0.7225\n",
"Epoch 5/5\n",
"35/35 [==============================] - 9s 266ms/step - loss: 0.3760 - accuracy: 0.8363 - val_loss: 0.4076 - val_accuracy: 0.8252\n",
"93/93 - 5s - loss: 0.4668 - accuracy: 0.7827\n",
"Accuracy: 0.782652735710144; Loss: 0.46676069498062134\n",
"Epoch 1/5\n",
"35/35 [==============================] - 10s 274ms/step - loss: 0.6891 - accuracy: 0.5496 - val_loss: 0.6874 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 9s 269ms/step - loss: 0.6846 - accuracy: 0.5555 - val_loss: 0.6855 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 9s 262ms/step - loss: 0.6760 - accuracy: 0.5559 - val_loss: 0.6726 - val_accuracy: 0.5568\n",
"Epoch 4/5\n",
"35/35 [==============================] - 9s 264ms/step - loss: 0.5654 - accuracy: 0.6957 - val_loss: 0.4387 - val_accuracy: 0.7982\n",
"Epoch 5/5\n",
"35/35 [==============================] - 9s 267ms/step - loss: 0.2931 - accuracy: 0.8846 - val_loss: 0.4179 - val_accuracy: 0.8054\n",
"93/93 - 5s - loss: 0.5091 - accuracy: 0.7661\n",
"Accuracy: 0.7661154270172119; Loss: 0.5090879201889038\n",
"Epoch 1/5\n",
"35/35 [==============================] - 9s 271ms/step - loss: 0.6894 - accuracy: 0.5555 - val_loss: 0.6876 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 9s 265ms/step - loss: 0.6851 - accuracy: 0.5555 - val_loss: 0.6865 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 9s 266ms/step - loss: 0.6804 - accuracy: 0.5555 - val_loss: 0.6808 - val_accuracy: 0.5514\n",
"Epoch 4/5\n",
"35/35 [==============================] - 9s 267ms/step - loss: 0.6191 - accuracy: 0.6483 - val_loss: 0.5626 - val_accuracy: 0.7225\n",
"Epoch 5/5\n",
"35/35 [==============================] - 9s 261ms/step - loss: 0.3723 - accuracy: 0.8490 - val_loss: 0.4850 - val_accuracy: 0.8144\n",
"93/93 - 5s - loss: 0.5663 - accuracy: 0.7962\n",
"Accuracy: 0.7961525321006775; Loss: 0.5662786364555359\n",
"{'model_name': ['MS_RSF_LSTM'], 'num_tests': [5], 'epochs': [5], 'avg_accuracy': [0.787580156326294], 'std': [0.012007636248323376], 'max_accuracy': [0.7978399991989136], 'min_accuracy': [0.7661154270172119], 'count_params': [558721]}\n"
]
}
],
"source": [
"class MS_RSF_LSTM(baseTestModel):\n",
" def __init__(self):\n",
" # inherit\n",
" super().__init__()\n",
" # build model\n",
" inputs = keras.Input(shape=(99, ))\n",
" embedding = layers.Embedding(num_words, 64)(inputs)\n",
" rl = layers.LSTM(128, return_sequences=True)(embedding)\n",
" rl = layers.LSTM(128)(rl)\n",
" dense = layers.Dense(64)(rl)\n",
" output = layers.Dense(1, activation='sigmoid')(dense)\n",
" self.model = keras.Model(inputs=inputs, outputs=output, name=\"MS_RSF_LSTM\")\n",
"# call\n",
"model = MS_RSF_LSTM()\n",
"model.compile_and_test(num_test=num_tests, epochs=epochs)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "vbyS6JmlfeD7"
},
"source": [
"### Model 6: Multiple Stack - Return Sequence False - GRU"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "5mcD37OGRIJk",
"outputId": "7deeec34-3503-427d-a6d1-bb6278984f25"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/5\n",
"35/35 [==============================] - 9s 251ms/step - loss: 0.6565 - accuracy: 0.6069 - val_loss: 0.6069 - val_accuracy: 0.6703\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 234ms/step - loss: 0.4423 - accuracy: 0.8052 - val_loss: 0.5189 - val_accuracy: 0.7622\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 235ms/step - loss: 0.2193 - accuracy: 0.9148 - val_loss: 0.5496 - val_accuracy: 0.7604\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 236ms/step - loss: 0.1385 - accuracy: 0.9495 - val_loss: 0.6211 - val_accuracy: 0.8270\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 239ms/step - loss: 0.0419 - accuracy: 0.9869 - val_loss: 0.7644 - val_accuracy: 0.8090\n",
"93/93 - 2s - loss: 0.9709 - accuracy: 0.7762\n",
"Accuracy: 0.7762402892112732; Loss: 0.9708958268165588\n",
"Epoch 1/5\n",
"35/35 [==============================] - 9s 250ms/step - loss: 0.6877 - accuracy: 0.5518 - val_loss: 0.6875 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 241ms/step - loss: 0.6827 - accuracy: 0.5573 - val_loss: 0.6815 - val_accuracy: 0.5604\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 241ms/step - loss: 0.6162 - accuracy: 0.6434 - val_loss: 0.8291 - val_accuracy: 0.6685\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 243ms/step - loss: 0.4031 - accuracy: 0.8233 - val_loss: 0.5233 - val_accuracy: 0.7459\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 240ms/step - loss: 0.2057 - accuracy: 0.9234 - val_loss: 0.5961 - val_accuracy: 0.7495\n",
"93/93 - 2s - loss: 0.7141 - accuracy: 0.7081\n",
"Accuracy: 0.7080661654472351; Loss: 0.7140775322914124\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 237ms/step - loss: 0.6882 - accuracy: 0.5514 - val_loss: 0.6870 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 228ms/step - loss: 0.6823 - accuracy: 0.5559 - val_loss: 0.6823 - val_accuracy: 0.5532\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 229ms/step - loss: 0.6450 - accuracy: 0.6258 - val_loss: 0.6165 - val_accuracy: 0.6288\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 234ms/step - loss: 0.4416 - accuracy: 0.7940 - val_loss: 0.5816 - val_accuracy: 0.7225\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 233ms/step - loss: 0.2326 - accuracy: 0.9116 - val_loss: 0.5986 - val_accuracy: 0.7369\n",
"93/93 - 2s - loss: 0.7333 - accuracy: 0.7027\n",
"Accuracy: 0.7026662230491638; Loss: 0.733278214931488\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 242ms/step - loss: 0.6892 - accuracy: 0.5528 - val_loss: 0.6879 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 233ms/step - loss: 0.6850 - accuracy: 0.5555 - val_loss: 0.6863 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 231ms/step - loss: 0.6768 - accuracy: 0.5613 - val_loss: 0.6761 - val_accuracy: 0.5622\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 230ms/step - loss: 0.5679 - accuracy: 0.6934 - val_loss: 0.6410 - val_accuracy: 0.6486\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 232ms/step - loss: 0.3310 - accuracy: 0.8548 - val_loss: 0.4820 - val_accuracy: 0.7748\n",
"93/93 - 2s - loss: 0.5498 - accuracy: 0.7445\n",
"Accuracy: 0.7445157170295715; Loss: 0.5498335957527161\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 242ms/step - loss: 0.6884 - accuracy: 0.5509 - val_loss: 0.6860 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 235ms/step - loss: 0.6744 - accuracy: 0.5649 - val_loss: 0.6640 - val_accuracy: 0.6054\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 236ms/step - loss: 0.5255 - accuracy: 0.7444 - val_loss: 0.5271 - val_accuracy: 0.7405\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 234ms/step - loss: 0.2490 - accuracy: 0.9076 - val_loss: 0.4373 - val_accuracy: 0.8018\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 233ms/step - loss: 0.1214 - accuracy: 0.9608 - val_loss: 0.8815 - val_accuracy: 0.7928\n",
"93/93 - 2s - loss: 0.9785 - accuracy: 0.7557\n",
"Accuracy: 0.7556530833244324; Loss: 0.9785320162773132\n",
"{'model_name': ['MS_RSF_GRU'], 'num_tests': [5], 'epochs': [5], 'avg_accuracy': [0.7374282956123352], 'std': [0.0281399419094638], 'max_accuracy': [0.7762402892112732], 'min_accuracy': [0.7026662230491638], 'count_params': [501889]}\n"
]
}
],
"source": [
"class MS_RSF_GRU(baseTestModel):\n",
" def __init__(self):\n",
" # inherit\n",
" super().__init__()\n",
" # build model\n",
" inputs = keras.Input(shape=(99, ))\n",
" embedding = layers.Embedding(num_words, 64)(inputs)\n",
" rl = layers.GRU(128, return_sequences=True)(embedding)\n",
" rl = layers.GRU(128)(rl)\n",
" dense = layers.Dense(64)(rl)\n",
" output = layers.Dense(1, activation='sigmoid')(dense)\n",
" self.model = keras.Model(inputs=inputs, outputs=output, name=\"MS_RSF_GRU\")\n",
"# call\n",
"model = MS_RSF_GRU()\n",
"model.compile_and_test(num_test=num_tests, epochs=epochs)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "JTYZcWcujN2e"
},
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "K-yvrON5jOJP"
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "0NkA5wthgORH"
},
"source": [
"### Model 7: Multiple Stack - Return Sequence False - biLSTM"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ioJhVfAJcCyh",
"outputId": "8b1a60f8-d17c-4fd7-8c2c-509b149733ea"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/5\n",
"35/35 [==============================] - 8s 242ms/step - loss: 0.6614 - accuracy: 0.6150 - val_loss: 0.5138 - val_accuracy: 0.7514\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 222ms/step - loss: 0.5645 - accuracy: 0.7583 - val_loss: 0.5473 - val_accuracy: 0.7333\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 223ms/step - loss: 0.2899 - accuracy: 0.8900 - val_loss: 0.4394 - val_accuracy: 0.8018\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 226ms/step - loss: 0.1433 - accuracy: 0.9463 - val_loss: 0.3817 - val_accuracy: 0.8468\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 225ms/step - loss: 0.0566 - accuracy: 0.9833 - val_loss: 0.4094 - val_accuracy: 0.8505\n",
"93/93 - 4s - loss: 0.4915 - accuracy: 0.8319\n",
"Accuracy: 0.8319271206855774; Loss: 0.491454541683197\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 231ms/step - loss: 0.6879 - accuracy: 0.5559 - val_loss: 0.6869 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 225ms/step - loss: 0.6863 - accuracy: 0.5564 - val_loss: 0.6863 - val_accuracy: 0.5514\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 227ms/step - loss: 0.6832 - accuracy: 0.5573 - val_loss: 0.6832 - val_accuracy: 0.5550\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 224ms/step - loss: 0.6729 - accuracy: 0.5667 - val_loss: 0.6701 - val_accuracy: 0.5748\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 224ms/step - loss: 0.5622 - accuracy: 0.7326 - val_loss: 0.4584 - val_accuracy: 0.7532\n",
"93/93 - 3s - loss: 0.4613 - accuracy: 0.7746\n",
"Accuracy: 0.7745528221130371; Loss: 0.4612716734409332\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 236ms/step - loss: 0.6857 - accuracy: 0.5550 - val_loss: 0.6833 - val_accuracy: 0.5514\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 229ms/step - loss: 0.6749 - accuracy: 0.5618 - val_loss: 0.6743 - val_accuracy: 0.6108\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 225ms/step - loss: 0.6259 - accuracy: 0.6835 - val_loss: 0.5708 - val_accuracy: 0.7315\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 221ms/step - loss: 0.3363 - accuracy: 0.8778 - val_loss: 0.4838 - val_accuracy: 0.8144\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 220ms/step - loss: 0.1504 - accuracy: 0.9441 - val_loss: 0.4537 - val_accuracy: 0.8378\n",
"93/93 - 3s - loss: 0.5130 - accuracy: 0.8181\n",
"Accuracy: 0.8180897831916809; Loss: 0.5130214095115662\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 228ms/step - loss: 0.6890 - accuracy: 0.5555 - val_loss: 0.6877 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 217ms/step - loss: 0.6855 - accuracy: 0.5555 - val_loss: 0.6861 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 219ms/step - loss: 0.6835 - accuracy: 0.5582 - val_loss: 0.6841 - val_accuracy: 0.5532\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 219ms/step - loss: 0.6779 - accuracy: 0.5681 - val_loss: 0.6793 - val_accuracy: 0.5712\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 219ms/step - loss: 0.6581 - accuracy: 0.6060 - val_loss: 0.6523 - val_accuracy: 0.6072\n",
"93/93 - 3s - loss: 0.6600 - accuracy: 0.6031\n",
"Accuracy: 0.6031049489974976; Loss: 0.6600413918495178\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 224ms/step - loss: 0.6873 - accuracy: 0.5555 - val_loss: 0.6844 - val_accuracy: 0.5514\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 222ms/step - loss: 0.6765 - accuracy: 0.5564 - val_loss: 0.6755 - val_accuracy: 0.5604\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 218ms/step - loss: 0.6386 - accuracy: 0.6416 - val_loss: 0.6188 - val_accuracy: 0.6631\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 220ms/step - loss: 0.4094 - accuracy: 0.8372 - val_loss: 0.4568 - val_accuracy: 0.7856\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 221ms/step - loss: 0.1834 - accuracy: 0.9310 - val_loss: 0.4463 - val_accuracy: 0.8234\n",
"93/93 - 3s - loss: 0.5096 - accuracy: 0.8053\n",
"Accuracy: 0.805264949798584; Loss: 0.509585440158844\n",
"{'model_name': ['MS_RSF_biLSTM'], 'num_tests': [5], 'epochs': [5], 'avg_accuracy': [0.7665879249572753], 'std': [0.08391386913491777], 'max_accuracy': [0.8319271206855774], 'min_accuracy': [0.6031049489974976], 'count_params': [534145]}\n"
]
}
],
"source": [
"class MS_RSF_biLSTM(baseTestModel):\n",
" def __init__(self):\n",
" # inherit\n",
" super().__init__()\n",
" # build model\n",
" inputs = keras.Input(shape=(99, ))\n",
" embedding = layers.Embedding(num_words, 64)(inputs)\n",
" rl = layers.Bidirectional(layers.LSTM(128))(embedding)\n",
" dense = layers.Dense(64)(rl)\n",
" output = layers.Dense(1, activation='sigmoid')(dense)\n",
" self.model = keras.Model(inputs=inputs, outputs=output, name=\"MS_RSF_biLSTM\")\n",
"# call\n",
"model = MS_RSF_biLSTM()\n",
"model.compile_and_test(num_test=num_tests, epochs=epochs)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "vDG4V9OT3Cap"
},
"source": [
"### Model 8: Multiple Stack - Return Sequence False - biGRU"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "5oBZDvll3H15",
"outputId": "d48e1414-50f1-47bb-b1b0-e09b3f51ddb7"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/5\n",
"35/35 [==============================] - 8s 226ms/step - loss: 0.6740 - accuracy: 0.5789 - val_loss: 0.5835 - val_accuracy: 0.6955\n",
"Epoch 2/5\n",
"35/35 [==============================] - 7s 209ms/step - loss: 0.4455 - accuracy: 0.8129 - val_loss: 0.5077 - val_accuracy: 0.7604\n",
"Epoch 3/5\n",
"35/35 [==============================] - 7s 211ms/step - loss: 0.2276 - accuracy: 0.9112 - val_loss: 0.4556 - val_accuracy: 0.8396\n",
"Epoch 4/5\n",
"35/35 [==============================] - 7s 212ms/step - loss: 0.0808 - accuracy: 0.9716 - val_loss: 0.4890 - val_accuracy: 0.8324\n",
"Epoch 5/5\n",
"35/35 [==============================] - 7s 210ms/step - loss: 0.0489 - accuracy: 0.9874 - val_loss: 0.6019 - val_accuracy: 0.8252\n",
"93/93 - 2s - loss: 0.7139 - accuracy: 0.8107\n",
"Accuracy: 0.8106648921966553; Loss: 0.7138943076133728\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 218ms/step - loss: 0.6874 - accuracy: 0.5555 - val_loss: 0.6866 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 7s 210ms/step - loss: 0.6835 - accuracy: 0.5600 - val_loss: 0.6827 - val_accuracy: 0.5640\n",
"Epoch 3/5\n",
"35/35 [==============================] - 7s 212ms/step - loss: 0.6584 - accuracy: 0.6145 - val_loss: 0.6464 - val_accuracy: 0.6144\n",
"Epoch 4/5\n",
"35/35 [==============================] - 7s 209ms/step - loss: 0.4998 - accuracy: 0.7701 - val_loss: 0.6002 - val_accuracy: 0.6955\n",
"Epoch 5/5\n",
"35/35 [==============================] - 7s 211ms/step - loss: 0.3065 - accuracy: 0.8760 - val_loss: 0.5950 - val_accuracy: 0.7117\n",
"93/93 - 2s - loss: 0.6769 - accuracy: 0.6784\n",
"Accuracy: 0.6783665418624878; Loss: 0.6768783330917358\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 219ms/step - loss: 0.6880 - accuracy: 0.5500 - val_loss: 0.6862 - val_accuracy: 0.5514\n",
"Epoch 2/5\n",
"35/35 [==============================] - 7s 211ms/step - loss: 0.6845 - accuracy: 0.5586 - val_loss: 0.6851 - val_accuracy: 0.5604\n",
"Epoch 3/5\n",
"35/35 [==============================] - 7s 213ms/step - loss: 0.6762 - accuracy: 0.5717 - val_loss: 0.6756 - val_accuracy: 0.5694\n",
"Epoch 4/5\n",
"35/35 [==============================] - 7s 211ms/step - loss: 0.6264 - accuracy: 0.6614 - val_loss: 0.6237 - val_accuracy: 0.6414\n",
"Epoch 5/5\n",
"35/35 [==============================] - 7s 210ms/step - loss: 0.4218 - accuracy: 0.8097 - val_loss: 0.5865 - val_accuracy: 0.7369\n",
"93/93 - 2s - loss: 0.6746 - accuracy: 0.7081\n",
"Accuracy: 0.7080661654472351; Loss: 0.6745641231536865\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 222ms/step - loss: 0.6883 - accuracy: 0.5555 - val_loss: 0.6877 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 7s 210ms/step - loss: 0.6846 - accuracy: 0.5573 - val_loss: 0.6842 - val_accuracy: 0.5514\n",
"Epoch 3/5\n",
"35/35 [==============================] - 7s 211ms/step - loss: 0.6774 - accuracy: 0.5595 - val_loss: 0.6749 - val_accuracy: 0.5568\n",
"Epoch 4/5\n",
"35/35 [==============================] - 7s 212ms/step - loss: 0.6368 - accuracy: 0.6280 - val_loss: 0.6220 - val_accuracy: 0.6883\n",
"Epoch 5/5\n",
"35/35 [==============================] - 7s 209ms/step - loss: 0.4419 - accuracy: 0.8016 - val_loss: 0.7162 - val_accuracy: 0.7135\n",
"93/93 - 2s - loss: 0.7624 - accuracy: 0.7071\n",
"Accuracy: 0.7070536613464355; Loss: 0.7623787522315979\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 220ms/step - loss: 0.6890 - accuracy: 0.5573 - val_loss: 0.6871 - val_accuracy: 0.5514\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 215ms/step - loss: 0.6811 - accuracy: 0.5568 - val_loss: 0.6840 - val_accuracy: 0.5802\n",
"Epoch 3/5\n",
"35/35 [==============================] - 7s 211ms/step - loss: 0.6584 - accuracy: 0.6091 - val_loss: 0.6544 - val_accuracy: 0.6180\n",
"Epoch 4/5\n",
"35/35 [==============================] - 7s 213ms/step - loss: 0.4941 - accuracy: 0.7858 - val_loss: 0.5613 - val_accuracy: 0.6973\n",
"Epoch 5/5\n",
"35/35 [==============================] - 7s 214ms/step - loss: 0.2794 - accuracy: 0.8832 - val_loss: 0.5326 - val_accuracy: 0.7748\n",
"93/93 - 2s - loss: 0.6206 - accuracy: 0.7415\n",
"Accuracy: 0.7414782047271729; Loss: 0.6206212639808655\n",
"{'model_name': ['MS_RSF_biGRU'], 'num_tests': [5], 'epochs': [5], 'avg_accuracy': [0.7291258931159973], 'std': [0.04540571606673319], 'max_accuracy': [0.8106648921966553], 'min_accuracy': [0.6783665418624878], 'count_params': [485505]}\n"
]
}
],
"source": [
"class MS_RSF_biGRU(baseTestModel):\n",
" def __init__(self):\n",
" # inherit\n",
" super().__init__()\n",
" # build model\n",
" inputs = keras.Input(shape=(99, ))\n",
" embedding = layers.Embedding(num_words, 64)(inputs)\n",
" rl = layers.Bidirectional(layers.GRU(128))(embedding)\n",
" dense = layers.Dense(64)(rl)\n",
" output = layers.Dense(1, activation='sigmoid')(dense)\n",
" self.model = keras.Model(inputs=inputs, outputs=output, name=\"MS_RSF_biGRU\")\n",
"# call\n",
"model = MS_RSF_biGRU()\n",
"model.compile_and_test(num_test=num_tests, epochs=epochs)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "ESo7cO_83Id0"
},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "QsXmVLx03IIU"
},
"source": [
"### Model 9: Multiple Stack - Return Sequence True - LSTM"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "LjSmAxXA3ViN",
"outputId": "29626fd0-891b-4cda-997b-51bc233d4554"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/5\n",
"35/35 [==============================] - 10s 287ms/step - loss: 0.6692 - accuracy: 0.5870 - val_loss: 0.6705 - val_accuracy: 0.6162\n",
"Epoch 2/5\n",
"35/35 [==============================] - 9s 264ms/step - loss: 0.4361 - accuracy: 0.8079 - val_loss: 0.3919 - val_accuracy: 0.8631\n",
"Epoch 3/5\n",
"35/35 [==============================] - 9s 266ms/step - loss: 0.1848 - accuracy: 0.9351 - val_loss: 0.4518 - val_accuracy: 0.8541\n",
"Epoch 4/5\n",
"35/35 [==============================] - 9s 263ms/step - loss: 0.0908 - accuracy: 0.9720 - val_loss: 0.4028 - val_accuracy: 0.8486\n",
"Epoch 5/5\n",
"35/35 [==============================] - 9s 263ms/step - loss: 0.0399 - accuracy: 0.9883 - val_loss: 0.6355 - val_accuracy: 0.8162\n",
"93/93 - 5s - loss: 0.7267 - accuracy: 0.8117\n",
"Accuracy: 0.8116773366928101; Loss: 0.7266573309898376\n",
"Epoch 1/5\n",
"35/35 [==============================] - 10s 274ms/step - loss: 0.6874 - accuracy: 0.5546 - val_loss: 0.6892 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 9s 265ms/step - loss: 0.6854 - accuracy: 0.5555 - val_loss: 0.6876 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 9s 265ms/step - loss: 0.6824 - accuracy: 0.5582 - val_loss: 0.6856 - val_accuracy: 0.5604\n",
"Epoch 4/5\n",
"35/35 [==============================] - 9s 267ms/step - loss: 0.6546 - accuracy: 0.6118 - val_loss: 0.6382 - val_accuracy: 0.6775\n",
"Epoch 5/5\n",
"35/35 [==============================] - 9s 265ms/step - loss: 0.4793 - accuracy: 0.7746 - val_loss: 0.4596 - val_accuracy: 0.7946\n",
"93/93 - 5s - loss: 0.4860 - accuracy: 0.7894\n",
"Accuracy: 0.7894026041030884; Loss: 0.4859684705734253\n",
"Epoch 1/5\n",
"35/35 [==============================] - 10s 272ms/step - loss: 0.6891 - accuracy: 0.5419 - val_loss: 0.6885 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 9s 265ms/step - loss: 0.6845 - accuracy: 0.5555 - val_loss: 0.6882 - val_accuracy: 0.5568\n",
"Epoch 3/5\n",
"35/35 [==============================] - 9s 265ms/step - loss: 0.6796 - accuracy: 0.5803 - val_loss: 0.6867 - val_accuracy: 0.5838\n",
"Epoch 4/5\n",
"35/35 [==============================] - 9s 266ms/step - loss: 0.5703 - accuracy: 0.7133 - val_loss: 0.6207 - val_accuracy: 0.7586\n",
"Epoch 5/5\n",
"35/35 [==============================] - 9s 266ms/step - loss: 0.2448 - accuracy: 0.9062 - val_loss: 0.4720 - val_accuracy: 0.8306\n",
"93/93 - 5s - loss: 0.5284 - accuracy: 0.8113\n",
"Accuracy: 0.8113398551940918; Loss: 0.5284426212310791\n",
"Epoch 1/5\n",
"35/35 [==============================] - 9s 271ms/step - loss: 0.6877 - accuracy: 0.5568 - val_loss: 0.6885 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 9s 266ms/step - loss: 0.6826 - accuracy: 0.5586 - val_loss: 0.6889 - val_accuracy: 0.5604\n",
"Epoch 3/5\n",
"35/35 [==============================] - 9s 260ms/step - loss: 0.6683 - accuracy: 0.6010 - val_loss: 0.6942 - val_accuracy: 0.6090\n",
"Epoch 4/5\n",
"35/35 [==============================] - 9s 260ms/step - loss: 0.6083 - accuracy: 0.6979 - val_loss: 0.6594 - val_accuracy: 0.6595\n",
"Epoch 5/5\n",
"35/35 [==============================] - 9s 261ms/step - loss: 0.4273 - accuracy: 0.8390 - val_loss: 0.3984 - val_accuracy: 0.8162\n",
"93/93 - 5s - loss: 0.4238 - accuracy: 0.8144\n",
"Accuracy: 0.8143773078918457; Loss: 0.42380499839782715\n",
"Epoch 1/5\n",
"35/35 [==============================] - 9s 266ms/step - loss: 0.6883 - accuracy: 0.5537 - val_loss: 0.6878 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 9s 263ms/step - loss: 0.6843 - accuracy: 0.5555 - val_loss: 0.6875 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 9s 270ms/step - loss: 0.6815 - accuracy: 0.5555 - val_loss: 0.6866 - val_accuracy: 0.5495\n",
"Epoch 4/5\n",
"35/35 [==============================] - 9s 268ms/step - loss: 0.6591 - accuracy: 0.6177 - val_loss: 0.6070 - val_accuracy: 0.6649\n",
"Epoch 5/5\n",
"35/35 [==============================] - 9s 269ms/step - loss: 0.5654 - accuracy: 0.7042 - val_loss: 0.4821 - val_accuracy: 0.7802\n",
"93/93 - 5s - loss: 0.5110 - accuracy: 0.7786\n",
"Accuracy: 0.7786027789115906; Loss: 0.5109680891036987\n",
"{'model_name': ['MS_RST_LSTM'], 'num_tests': [5], 'epochs': [5], 'avg_accuracy': [0.8010799765586853], 'std': [0.014394260061168488], 'max_accuracy': [0.8143773078918457], 'min_accuracy': [0.7786027789115906], 'count_params': [558721]}\n"
]
}
],
"source": [
"class MS_RST_LSTM(baseTestModel):\n",
" def __init__(self):\n",
" # inherit\n",
" super().__init__()\n",
" # build model\n",
" inputs = keras.Input(shape=(99, ))\n",
" embedding = layers.Embedding(num_words, 64)(inputs)\n",
" rl = layers.LSTM(128, return_sequences=True)(embedding)\n",
" rl = layers.LSTM(128, return_sequences=True)(rl)\n",
" avg = tf.keras.layers.AveragePooling1D(pool_size=99)(rl)\n",
" dense = layers.Dense(64)(avg)\n",
" output = layers.Dense(1, activation='sigmoid')(dense)\n",
" self.model = keras.Model(inputs=inputs, outputs=output, name=\"MS_RST_LSTM\")\n",
"# call\n",
"model = MS_RST_LSTM()\n",
"model.compile_and_test(num_test=num_tests, epochs=epochs)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "v1CIQ3bY31R6"
},
"source": [
"### Model 10: Multiple Stack - Return Sequence True - GRU"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "wnopRP6Y318D",
"outputId": "3588cc24-c8ac-4c63-9026-615d68f5fd13"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/5\n",
"35/35 [==============================] - 9s 248ms/step - loss: 0.6771 - accuracy: 0.5803 - val_loss: 0.7053 - val_accuracy: 0.6180\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 226ms/step - loss: 0.4484 - accuracy: 0.8197 - val_loss: 0.4128 - val_accuracy: 0.8450\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 222ms/step - loss: 0.1813 - accuracy: 0.9270 - val_loss: 0.3474 - val_accuracy: 0.8703\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 222ms/step - loss: 0.0759 - accuracy: 0.9739 - val_loss: 0.4985 - val_accuracy: 0.8396\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 223ms/step - loss: 0.0308 - accuracy: 0.9937 - val_loss: 0.6851 - val_accuracy: 0.8378\n",
"93/93 - 2s - loss: 0.7343 - accuracy: 0.8309\n",
"Accuracy: 0.8309146165847778; Loss: 0.7342560887336731\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 238ms/step - loss: 0.6877 - accuracy: 0.5564 - val_loss: 0.6891 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 234ms/step - loss: 0.6862 - accuracy: 0.5555 - val_loss: 0.6880 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 234ms/step - loss: 0.6842 - accuracy: 0.5555 - val_loss: 0.6872 - val_accuracy: 0.5495\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 233ms/step - loss: 0.6781 - accuracy: 0.5721 - val_loss: 0.6819 - val_accuracy: 0.5784\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 232ms/step - loss: 0.6001 - accuracy: 0.6839 - val_loss: 0.5106 - val_accuracy: 0.7640\n",
"93/93 - 2s - loss: 0.4990 - accuracy: 0.7769\n",
"Accuracy: 0.7769153118133545; Loss: 0.4990116059780121\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 238ms/step - loss: 0.6854 - accuracy: 0.5555 - val_loss: 0.6873 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 230ms/step - loss: 0.6784 - accuracy: 0.5564 - val_loss: 0.6820 - val_accuracy: 0.5874\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 230ms/step - loss: 0.6458 - accuracy: 0.6497 - val_loss: 0.6096 - val_accuracy: 0.6613\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 232ms/step - loss: 0.5341 - accuracy: 0.7701 - val_loss: 0.3961 - val_accuracy: 0.8270\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 232ms/step - loss: 0.1997 - accuracy: 0.9193 - val_loss: 0.3969 - val_accuracy: 0.8414\n",
"93/93 - 2s - loss: 0.4079 - accuracy: 0.8262\n",
"Accuracy: 0.8261896967887878; Loss: 0.40792012214660645\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 233ms/step - loss: 0.6890 - accuracy: 0.5555 - val_loss: 0.6883 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 231ms/step - loss: 0.6860 - accuracy: 0.5555 - val_loss: 0.6882 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 228ms/step - loss: 0.6849 - accuracy: 0.5555 - val_loss: 0.6879 - val_accuracy: 0.5495\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 231ms/step - loss: 0.6836 - accuracy: 0.5555 - val_loss: 0.6867 - val_accuracy: 0.5495\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 233ms/step - loss: 0.6788 - accuracy: 0.5600 - val_loss: 0.6838 - val_accuracy: 0.5532\n",
"93/93 - 2s - loss: 0.6840 - accuracy: 0.5451\n",
"Accuracy: 0.5450556874275208; Loss: 0.684045135974884\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 239ms/step - loss: 0.6887 - accuracy: 0.5550 - val_loss: 0.6882 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 230ms/step - loss: 0.6848 - accuracy: 0.5555 - val_loss: 0.6882 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 232ms/step - loss: 0.6828 - accuracy: 0.5555 - val_loss: 0.6881 - val_accuracy: 0.5495\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 233ms/step - loss: 0.6750 - accuracy: 0.5803 - val_loss: 0.6801 - val_accuracy: 0.5892\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 233ms/step - loss: 0.5985 - accuracy: 0.6961 - val_loss: 0.4799 - val_accuracy: 0.7658\n",
"93/93 - 2s - loss: 0.4796 - accuracy: 0.7678\n",
"Accuracy: 0.767802894115448; Loss: 0.4795869290828705\n",
"{'model_name': ['MS_RST_GRU'], 'num_tests': [5], 'epochs': [5], 'avg_accuracy': [0.7493756413459778], 'std': [0.10525554071865936], 'max_accuracy': [0.8309146165847778], 'min_accuracy': [0.5450556874275208], 'count_params': [501889]}\n"
]
}
],
"source": [
"class MS_RST_GRU(baseTestModel):\n",
" def __init__(self):\n",
" # inherit\n",
" super().__init__()\n",
" # build model\n",
" inputs = keras.Input(shape=(99, ))\n",
" embedding = layers.Embedding(num_words, 64)(inputs)\n",
" rl = layers.GRU(128, return_sequences=True)(embedding)\n",
" rl = layers.GRU(128, return_sequences=True)(rl)\n",
" avg = tf.keras.layers.AveragePooling1D(pool_size=99)(rl)\n",
" dense = layers.Dense(64)(avg)\n",
" output = layers.Dense(1, activation='sigmoid')(dense)\n",
" self.model = keras.Model(inputs=inputs, outputs=output, name=\"MS_RST_GRU\")\n",
"# call\n",
"model = MS_RST_GRU()\n",
"model.compile_and_test(num_test=num_tests, epochs=epochs)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"# model.plotAccuracy(2)"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [],
"source": [
"# model.plotLoss(1)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "i543BmA44R3x"
},
"source": [
"### Model 11: Multiple Stack - Return Sequence True - biLSTM"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "O35Hk2VG4Uph",
"outputId": "ecb54a44-b5e0-458d-a331-2233142a6cb6"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/5\n",
"35/35 [==============================] - 8s 242ms/step - loss: 0.6397 - accuracy: 0.6141 - val_loss: 0.5701 - val_accuracy: 0.6991\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 223ms/step - loss: 0.3272 - accuracy: 0.8697 - val_loss: 0.3673 - val_accuracy: 0.8234\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 221ms/step - loss: 0.1734 - accuracy: 0.9463 - val_loss: 0.5311 - val_accuracy: 0.8090\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 222ms/step - loss: 0.1180 - accuracy: 0.9621 - val_loss: 0.5107 - val_accuracy: 0.8613\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 220ms/step - loss: 0.0399 - accuracy: 0.9919 - val_loss: 0.5296 - val_accuracy: 0.8523\n",
"93/93 - 3s - loss: 0.6445 - accuracy: 0.8164\n",
"Accuracy: 0.8164023160934448; Loss: 0.6445032358169556\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 231ms/step - loss: 0.6868 - accuracy: 0.5537 - val_loss: 0.6901 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 224ms/step - loss: 0.6846 - accuracy: 0.5555 - val_loss: 0.6879 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 225ms/step - loss: 0.6819 - accuracy: 0.5613 - val_loss: 0.6866 - val_accuracy: 0.5730\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 221ms/step - loss: 0.6618 - accuracy: 0.6055 - val_loss: 0.6440 - val_accuracy: 0.6739\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 222ms/step - loss: 0.4864 - accuracy: 0.7922 - val_loss: 0.5714 - val_accuracy: 0.7658\n",
"93/93 - 4s - loss: 0.5750 - accuracy: 0.7587\n",
"Accuracy: 0.7586905360221863; Loss: 0.5750015377998352\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 229ms/step - loss: 0.6868 - accuracy: 0.5528 - val_loss: 0.6883 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 224ms/step - loss: 0.6820 - accuracy: 0.5555 - val_loss: 0.6866 - val_accuracy: 0.5568\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 220ms/step - loss: 0.6756 - accuracy: 0.5974 - val_loss: 0.6815 - val_accuracy: 0.5856\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 218ms/step - loss: 0.5683 - accuracy: 0.6903 - val_loss: 0.4546 - val_accuracy: 0.7892\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 221ms/step - loss: 0.2689 - accuracy: 0.8900 - val_loss: 0.4280 - val_accuracy: 0.8378\n",
"93/93 - 3s - loss: 0.4958 - accuracy: 0.8086\n",
"Accuracy: 0.8086398839950562; Loss: 0.4957908093929291\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 229ms/step - loss: 0.6881 - accuracy: 0.5532 - val_loss: 0.6885 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 223ms/step - loss: 0.6841 - accuracy: 0.5555 - val_loss: 0.6882 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 222ms/step - loss: 0.6821 - accuracy: 0.5555 - val_loss: 0.6878 - val_accuracy: 0.5495\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 219ms/step - loss: 0.6797 - accuracy: 0.5586 - val_loss: 0.6855 - val_accuracy: 0.5676\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 217ms/step - loss: 0.6726 - accuracy: 0.5924 - val_loss: 0.6813 - val_accuracy: 0.5964\n",
"93/93 - 3s - loss: 0.6807 - accuracy: 0.5764\n",
"Accuracy: 0.5764427781105042; Loss: 0.680689811706543\n",
"Epoch 1/5\n",
"35/35 [==============================] - 8s 226ms/step - loss: 0.6882 - accuracy: 0.5518 - val_loss: 0.6882 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 8s 222ms/step - loss: 0.6832 - accuracy: 0.5555 - val_loss: 0.6885 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 8s 222ms/step - loss: 0.6804 - accuracy: 0.5568 - val_loss: 0.6887 - val_accuracy: 0.5532\n",
"Epoch 4/5\n",
"35/35 [==============================] - 8s 218ms/step - loss: 0.6638 - accuracy: 0.6154 - val_loss: 0.6623 - val_accuracy: 0.6180\n",
"Epoch 5/5\n",
"35/35 [==============================] - 8s 216ms/step - loss: 0.5748 - accuracy: 0.7078 - val_loss: 0.4780 - val_accuracy: 0.7784\n",
"93/93 - 3s - loss: 0.4766 - accuracy: 0.7891\n",
"Accuracy: 0.7890651226043701; Loss: 0.47663846611976624\n",
"{'model_name': ['MS_RST_biLSTM'], 'num_tests': [5], 'epochs': [5], 'avg_accuracy': [0.7498481273651123], 'std': [0.08896235916553512], 'max_accuracy': [0.8164023160934448], 'min_accuracy': [0.5764427781105042], 'count_params': [534145]}\n"
]
}
],
"source": [
"class MS_RST_biLSTM(baseTestModel):\n",
" def __init__(self):\n",
" # inherit\n",
" super().__init__()\n",
" # build model\n",
" inputs = keras.Input(shape=(99, ))\n",
" embedding = layers.Embedding(num_words, 64)(inputs)\n",
" rl = layers.Bidirectional(layers.LSTM(128, return_sequences=True))(embedding)\n",
" avg = tf.keras.layers.AveragePooling1D(pool_size=99)(rl)\n",
" dense = layers.Dense(64)(avg)\n",
" output = layers.Dense(1, activation='sigmoid')(dense)\n",
" self.model = keras.Model(inputs=inputs, outputs=output, name=\"MS_RST_biLSTM\")\n",
"# call\n",
"model = MS_RST_biLSTM()\n",
"model.compile_and_test(num_test=num_tests, epochs=epochs)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "2chc3K0k4TqS"
},
"source": [
"### Model 12: Multiple Stack - Return Sequence True - biGRU"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "2WJ1horh4VN8",
"outputId": "7430f07a-b9bc-428d-ba5d-f95c81da9716"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Epoch 1/5\n",
"35/35 [==============================] - 5s 135ms/step - loss: 0.6751 - accuracy: 0.5789 - val_loss: 0.6592 - val_accuracy: 0.6378\n",
"Epoch 2/5\n",
"35/35 [==============================] - 4s 127ms/step - loss: 0.3816 - accuracy: 0.8408 - val_loss: 0.3631 - val_accuracy: 0.8577\n",
"Epoch 3/5\n",
"35/35 [==============================] - 4s 114ms/step - loss: 0.1518 - accuracy: 0.9418 - val_loss: 0.3846 - val_accuracy: 0.8631\n",
"Epoch 4/5\n",
"35/35 [==============================] - 5s 131ms/step - loss: 0.0608 - accuracy: 0.9806 - val_loss: 0.4649 - val_accuracy: 0.8541\n",
"Epoch 5/5\n",
"35/35 [==============================] - 5s 140ms/step - loss: 0.0426 - accuracy: 0.9937 - val_loss: 0.3909 - val_accuracy: 0.8523\n",
"93/93 - 2s - loss: 0.4391 - accuracy: 0.8333\n",
"Accuracy: 0.8332771062850952; Loss: 0.4390754699707031\n",
"Epoch 1/5\n",
"35/35 [==============================] - 5s 140ms/step - loss: 0.6863 - accuracy: 0.5491 - val_loss: 0.6894 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 5s 131ms/step - loss: 0.6836 - accuracy: 0.5573 - val_loss: 0.6870 - val_accuracy: 0.5514\n",
"Epoch 3/5\n",
"35/35 [==============================] - 5s 131ms/step - loss: 0.6780 - accuracy: 0.5753 - val_loss: 0.6823 - val_accuracy: 0.5964\n",
"Epoch 4/5\n",
"35/35 [==============================] - 5s 133ms/step - loss: 0.6195 - accuracy: 0.6659 - val_loss: 2.6965 - val_accuracy: 0.5423\n",
"Epoch 5/5\n",
"35/35 [==============================] - 5s 147ms/step - loss: 0.5631 - accuracy: 0.7633 - val_loss: 0.4637 - val_accuracy: 0.7928\n",
"93/93 - 2s - loss: 0.4602 - accuracy: 0.7864\n",
"Accuracy: 0.7863651514053345; Loss: 0.4602035880088806\n",
"Epoch 1/5\n",
"35/35 [==============================] - 6s 161ms/step - loss: 0.6849 - accuracy: 0.5582 - val_loss: 0.6865 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 5s 137ms/step - loss: 0.6668 - accuracy: 0.5924 - val_loss: 0.6549 - val_accuracy: 0.5910\n",
"Epoch 3/5\n",
"35/35 [==============================] - 5s 142ms/step - loss: 0.4377 - accuracy: 0.8079 - val_loss: 0.3503 - val_accuracy: 0.8450\n",
"Epoch 4/5\n",
"35/35 [==============================] - 5s 136ms/step - loss: 0.1519 - accuracy: 0.9491 - val_loss: 0.3815 - val_accuracy: 0.8342\n",
"Epoch 5/5\n",
"35/35 [==============================] - 5s 136ms/step - loss: 0.0665 - accuracy: 0.9842 - val_loss: 0.5463 - val_accuracy: 0.8505\n",
"93/93 - 2s - loss: 0.6572 - accuracy: 0.8198\n",
"Accuracy: 0.819777250289917; Loss: 0.6571560502052307\n",
"Epoch 1/5\n",
"35/35 [==============================] - 5s 137ms/step - loss: 0.6890 - accuracy: 0.5559 - val_loss: 0.6884 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 5s 137ms/step - loss: 0.6854 - accuracy: 0.5555 - val_loss: 0.6883 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 5s 133ms/step - loss: 0.6839 - accuracy: 0.5555 - val_loss: 0.6878 - val_accuracy: 0.5495\n",
"Epoch 4/5\n",
"35/35 [==============================] - 5s 132ms/step - loss: 0.6820 - accuracy: 0.5555 - val_loss: 0.6862 - val_accuracy: 0.5514\n",
"Epoch 5/5\n",
"35/35 [==============================] - 5s 133ms/step - loss: 0.6761 - accuracy: 0.5775 - val_loss: 0.6822 - val_accuracy: 0.5946\n",
"93/93 - 2s - loss: 0.6825 - accuracy: 0.5700\n",
"Accuracy: 0.5700303912162781; Loss: 0.6825418472290039\n",
"Epoch 1/5\n",
"35/35 [==============================] - 5s 142ms/step - loss: 0.6878 - accuracy: 0.5523 - val_loss: 0.6881 - val_accuracy: 0.5495\n",
"Epoch 2/5\n",
"35/35 [==============================] - 5s 139ms/step - loss: 0.6833 - accuracy: 0.5555 - val_loss: 0.6875 - val_accuracy: 0.5495\n",
"Epoch 3/5\n",
"35/35 [==============================] - 5s 140ms/step - loss: 0.6796 - accuracy: 0.5568 - val_loss: 0.6857 - val_accuracy: 0.5514\n",
"Epoch 4/5\n",
"35/35 [==============================] - 5s 135ms/step - loss: 0.6675 - accuracy: 0.6136 - val_loss: 0.6719 - val_accuracy: 0.6162\n",
"Epoch 5/5\n",
"35/35 [==============================] - 5s 138ms/step - loss: 0.5731 - accuracy: 0.7232 - val_loss: 0.4294 - val_accuracy: 0.8180\n",
"93/93 - 2s - loss: 0.4342 - accuracy: 0.8026\n",
"Accuracy: 0.8025649785995483; Loss: 0.43415024876594543\n",
"{'model_name': ['MS_RST_biGRU'], 'num_tests': [5], 'epochs': [5], 'avg_accuracy': [0.7624029755592346], 'std': [0.09747751881669507], 'max_accuracy': [0.8332771062850952], 'min_accuracy': [0.5700303912162781], 'count_params': [485505]}\n"
]
}
],
"source": [
"class MS_RST_biGRU(baseTestModel):\n",
" def __init__(self):\n",
" # inherit\n",
" super().__init__()\n",
" # build model\n",
" inputs = keras.Input(shape=(99, ))\n",
" embedding = layers.Embedding(num_words, 64)(inputs)\n",
" rl = layers.Bidirectional(layers.GRU(128, return_sequences=True))(embedding)\n",
" avg = tf.keras.layers.AveragePooling1D(pool_size=99)(rl)\n",
" dense = layers.Dense(64)(avg)\n",
" output = layers.Dense(1, activation='sigmoid')(dense)\n",
" self.model = keras.Model(inputs=inputs, outputs=output, name=\"MS_RST_biGRU\")\n",
"# call\n",
"model = MS_RST_biGRU()\n",
"model.compile_and_test(num_test=num_tests, epochs=epochs)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": "true",
"id": "Mj7tGM5AQlYp"
},
"source": [
"## Extras: Average pooling"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"id": "GFXdDsZrhGcw"
},
"outputs": [],
"source": [
"A=np.array([[1,2,3],[4,5,6],[0,0,0],[0,0,0],[0,0,0]])\n",
"B=np.array([[1,3,0],[4,0,0],[0,0,1],[0,0,0],[0,0,0]])\n",
"C=np.array([A,B]).astype(\"float32\")"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "e-1w_c5FOCND",
"outputId": "4a96169b-9e17-4186-e134-0eb98e037ab6"
},
"outputs": [
{
"data": {
"text/plain": [
"array([[1. , 1.4, 1.8],\n",
" [1. , 0.6, 0.2]], dtype=float32)"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.mean(C, axis=1)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"id": "wQ7PNUkTOCr2"
},
"outputs": [],
"source": [
"model = keras.models.Sequential(\n",
" tf.keras.layers.AveragePooling1D(pool_size=5)\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "85cnZqLUQCWZ",
"outputId": "51cf1081-c7cb-4c96-bcac-7c024fae15d8"
},
"outputs": [
{
"data": {
"text/plain": [
"(2, 1, 3)"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.predict(C).shape"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "CRD96NtdQIiC",
"outputId": "5ef8661e-d39b-45b2-fa9c-d7fb9d7afaf0"
},
"outputs": [
{
"data": {
"text/plain": [
"(2, 1, 3)"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.predict(C).shape"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"colab": {
"collapsed_sections": [
"EBSGMlCgT0dC",
"MhvPqydXd-l9",
"abPCeq9HHmS_",
"2y5gY5pdKPa5",
"6bb5B4qjQ920",
"jxOwUTUEeGsQ",
"vbyS6JmlfeD7",
"0NkA5wthgORH",
"vDG4V9OT3Cap",
"QsXmVLx03IIU",
"v1CIQ3bY31R6",
"Mj7tGM5AQlYp"
],
"name": "Ultimate showdown LSTM vs GRU.ipynb",
"provenance": []
},
"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.7.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment