{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"accelerator": "GPU",
"colab": {
"name": "Final DeepLearning - Sentiment Analysis.ipynb",
"provenance": [],
"collapsed_sections": []
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
}
},
"cells": [
{
"cell_type": "code",
"metadata": {
"id": "vRp2wAZyUiUo"
},
"source": [
"import math\r\n",
"import numpy as np\r\n",
"import tensorflow as tf\r\n",
"from tensorflow.keras import layers, Model\r\n",
"from tensorflow.keras.optimizers import Adam, RMSprop\r\n",
"from tensorflow.keras.utils import plot_model\r\n",
"from tensorflow.python.keras.regularizers import l2 # import regularizer\r\n",
"from keras.datasets import imdb\r\n",
"from keras.preprocessing import sequence\r\n",
"from tensorflow.keras.callbacks import ModelCheckpoint, LearningRateScheduler\r\n",
"from tensorflow.keras.preprocessing.sequence import pad_sequences\r\n",
"from matplotlib import pyplot as plt"
],
"execution_count": 1,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "mwX1VylL95sZ"
},
"source": [
"#HYPER PARAMETERS\n",
"\n",
"EMBEDDING_DIM = 32\n",
"VOCABULARY_SIZE = 10000 #len(vocabulary)\n",
"SEQ_LENGTH = 500 # size of each review\n",
"INIT_LR = 1e-2 # Initial learning rate\n",
"LR_REDUCE = 0.1 # Learning rate Decay factor\n",
"BATCH_SIZE = 64 # mini-batch, between 16 & 128\n",
"NUM_EPOCHS = 50 # Arbitary Number\n",
"VAL_DATA = 0.20 # 20% of the train data"
],
"execution_count": 2,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "z9aVQeL-BbOy"
},
"source": [
"def download_datasets( vocabulary_size):\r\n",
" ( x_train, y_train), (x_test,y_test) = imdb.load_data(num_words = vocabulary_size)\r\n",
" return ( x_train, y_train), (x_test,y_test)"
],
"execution_count": 3,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "1Vu328vaCAfq"
},
"source": [
"def preprocessing(x_train,x_test, seq_length):\r\n",
" x_train = sequence.pad_sequences(x_train, maxlen= seq_length, padding= 'post', value = 0)\r\n",
" x_test = sequence.pad_sequences(x_test, maxlen= seq_length, padding= 'post', value = 0)\r\n",
" return x_train, x_test"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "4UN4kAu8IqC2",
"outputId": "b1ebbb71-ac9e-487b-cf5e-3adcac7b8762"
},
"source": [
"( x_train, y_train), (x_test,y_test) = download_datasets( VOCABULARY_SIZE)\n",
"x_train, x_test = preprocessing(x_train,x_test, SEQ_LENGTH)"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/imdb.npz\n",
"17465344/17464789 [==============================] - 0s 0us/step\n"
],
"name": "stdout"
},
{
"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",
"/usr/local/lib/python3.6/dist-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",
"/usr/local/lib/python3.6/dist-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"
],
"name": "stderr"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "SRV67uTF9zl2"
},
"source": [
"def get_model(vocabulary_size, embedding_dim, input_length, summary=True):\n",
" inputs = layers.Input(shape=(input_length))\n",
" x = layers.Embedding(vocabulary_size, embedding_dim)(inputs)\n",
" b1 = layers.Conv1D(128, kernel_size=(3),padding='same',kernel_regularizer=l2(0.01), activation='relu')(x)\n",
" b1 = layers.MaxPool1D(pool_size=(2))(b1)\n",
" b1 = layers.Dropout(0.5)(b1)\n",
" b1 = layers.BatchNormalization()(b1)\n",
" b1 = layers.LSTM(128, return_sequences=False)(b1)\n",
"\n",
" b2 = layers.Conv1D(128, kernel_size=(5),padding='same',kernel_regularizer=l2(0.01), activation='relu')(x)\n",
" b2 = layers.MaxPool1D(pool_size=(2))(b2)\n",
" b2 = layers.Dropout(0.5)(b2)\n",
" b2 = layers.BatchNormalization()(b2)\n",
" b2 = layers.LSTM(128, return_sequences=False)(b2)\n",
"\n",
"\n",
" b3 = layers.Conv1D(128, kernel_size=(7),padding='same',kernel_regularizer=l2(0.01), activation='relu')(x)\n",
" b3 = layers.MaxPool1D(pool_size=(2))(b3)\n",
" b3 = layers.Dropout(0.5)(b3)\n",
" b3 = layers.BatchNormalization()(b3)\n",
" b3 = layers.LSTM(128, return_sequences=False)(b3)\n",
"\n",
" b4 = layers.Conv1D(128, kernel_size=(9),padding='same',kernel_regularizer=l2(0.01), activation='relu')(x)\n",
" b4 = layers.MaxPool1D(pool_size=(2))(b4)\n",
" b4 = layers.Dropout(0.5)(b4)\n",
" b4 = layers.BatchNormalization()(b4)\n",
" b4 = layers.LSTM(128, return_sequences=False)(b4)\n",
"\n",
" concat = layers.concatenate([b1, b2, b3, b4], name='Concatenate')\n",
"\n",
" out = layers.Dense(1, activation='sigmoid')(concat)\n",
"\n",
"\n",
" model = Model(inputs, out, name='CNN-LSTM_with_Combined_Kernels_from_mltiple_branches')\n",
" model.compile(loss='binary_crossentropy', optimizer=RMSprop(learning_rate=INIT_LR), metrics='accuracy')\n",
" \n",
" if summary:\n",
" print(model.summary())\n",
" \n",
" return model"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "dvmic1xlIhQp",
"outputId": "0f0080f4-e91e-45d9-815e-e616846df80d"
},
"source": [
"multi_branch_model = get_model(VOCABULARY_SIZE, EMBEDDING_DIM, SEQ_LENGTH)"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Model: \"CNN-LSTM_with_Combined_Kernels_from_mltiple_branches\"\n",
"__________________________________________________________________________________________________\n",
"Layer (type) Output Shape Param # Connected to \n",
"==================================================================================================\n",
"input_1 (InputLayer) [(None, 500)] 0 \n",
"__________________________________________________________________________________________________\n",
"embedding (Embedding) (None, 500, 32) 320000 input_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv1d (Conv1D) (None, 500, 128) 12416 embedding[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv1d_1 (Conv1D) (None, 500, 128) 20608 embedding[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv1d_2 (Conv1D) (None, 500, 128) 28800 embedding[0][0] \n",
"__________________________________________________________________________________________________\n",
"conv1d_3 (Conv1D) (None, 500, 128) 36992 embedding[0][0] \n",
"__________________________________________________________________________________________________\n",
"max_pooling1d (MaxPooling1D) (None, 250, 128) 0 conv1d[0][0] \n",
"__________________________________________________________________________________________________\n",
"max_pooling1d_1 (MaxPooling1D) (None, 250, 128) 0 conv1d_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"max_pooling1d_2 (MaxPooling1D) (None, 250, 128) 0 conv1d_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"max_pooling1d_3 (MaxPooling1D) (None, 250, 128) 0 conv1d_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"dropout (Dropout) (None, 250, 128) 0 max_pooling1d[0][0] \n",
"__________________________________________________________________________________________________\n",
"dropout_1 (Dropout) (None, 250, 128) 0 max_pooling1d_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"dropout_2 (Dropout) (None, 250, 128) 0 max_pooling1d_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"dropout_3 (Dropout) (None, 250, 128) 0 max_pooling1d_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization (BatchNorma (None, 250, 128) 512 dropout[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_1 (BatchNor (None, 250, 128) 512 dropout_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_2 (BatchNor (None, 250, 128) 512 dropout_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"batch_normalization_3 (BatchNor (None, 250, 128) 512 dropout_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"lstm (LSTM) (None, 128) 131584 batch_normalization[0][0] \n",
"__________________________________________________________________________________________________\n",
"lstm_1 (LSTM) (None, 128) 131584 batch_normalization_1[0][0] \n",
"__________________________________________________________________________________________________\n",
"lstm_2 (LSTM) (None, 128) 131584 batch_normalization_2[0][0] \n",
"__________________________________________________________________________________________________\n",
"lstm_3 (LSTM) (None, 128) 131584 batch_normalization_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"Concatenate (Concatenate) (None, 512) 0 lstm[0][0] \n",
" lstm_1[0][0] \n",
" lstm_2[0][0] \n",
" lstm_3[0][0] \n",
"__________________________________________________________________________________________________\n",
"dense (Dense) (None, 1) 513 Concatenate[0][0] \n",
"==================================================================================================\n",
"Total params: 947,713\n",
"Trainable params: 946,689\n",
"Non-trainable params: 1,024\n",
"__________________________________________________________________________________________________\n",
"None\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Z98mzxiM-e6t"
},
"source": [
"\n",
"train_steps = np.ceil(int(np.round(len(x_train) * (1 - VAL_DATA))) / BATCH_SIZE)\n",
"val_steps = np.ceil(int(np.round(len(x_train) * VAL_DATA)) / BATCH_SIZE)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "FB-X_9PcHXqn"
},
"source": [
"def step_decay(epoch):\n",
"\tinitial_lrate = 0.01\n",
"\tdrop = 0.1\n",
"\tepochs_drop = 1.0\n",
" \n",
"\tlrate = initial_lrate * math.pow(drop, math.floor((1+epoch)/epochs_drop))\n",
"\treturn lrate\n",
"\n",
"StopCbk = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=10, restore_best_weights=True,verbose=1)\n",
"reduce_lr_on_plateu = tf.keras.callbacks.ReduceLROnPlateau(monitor='val_loss',\n",
" factor=0.1,\n",
" patience=5,\n",
" min_lr=1e-5)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "tHDVSezGHZnB",
"outputId": "95de5c1a-4ddf-41fc-f6eb-2411706f0dcc"
},
"source": [
"history = multi_branch_model.fit(x_train, y_train, \n",
" epochs=NUM_EPOCHS,\n",
" batch_size=BATCH_SIZE,\n",
" callbacks=[StopCbk, reduce_lr_on_plateu],\n",
" validation_split= VAL_DATA,\n",
" verbose=1)"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Epoch 1/50\n",
"313/313 [==============================] - 41s 91ms/step - loss: 1.0271 - accuracy: 0.5012 - val_loss: 0.7967 - val_accuracy: 0.5062\n",
"Epoch 2/50\n",
"313/313 [==============================] - 27s 86ms/step - loss: 0.7270 - accuracy: 0.5000 - val_loss: 0.7462 - val_accuracy: 0.5098\n",
"Epoch 3/50\n",
"313/313 [==============================] - 27s 87ms/step - loss: 0.7309 - accuracy: 0.5097 - val_loss: 0.7331 - val_accuracy: 0.5090\n",
"Epoch 4/50\n",
"313/313 [==============================] - 27s 87ms/step - loss: 0.7381 - accuracy: 0.5171 - val_loss: 0.7606 - val_accuracy: 0.5084\n",
"Epoch 5/50\n",
"313/313 [==============================] - 27s 87ms/step - loss: 0.7451 - accuracy: 0.5097 - val_loss: 0.7499 - val_accuracy: 0.4754\n",
"Epoch 6/50\n",
"313/313 [==============================] - 27s 88ms/step - loss: 0.7543 - accuracy: 0.5655 - val_loss: 0.7048 - val_accuracy: 0.7526\n",
"Epoch 7/50\n",
"313/313 [==============================] - 27s 88ms/step - loss: 0.6543 - accuracy: 0.7539 - val_loss: 0.5342 - val_accuracy: 0.8406\n",
"Epoch 8/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.4938 - accuracy: 0.8505 - val_loss: 0.6252 - val_accuracy: 0.7914\n",
"Epoch 9/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.4301 - accuracy: 0.8791 - val_loss: 0.4104 - val_accuracy: 0.8860\n",
"Epoch 10/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.3964 - accuracy: 0.8891 - val_loss: 0.7820 - val_accuracy: 0.7102\n",
"Epoch 11/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.3801 - accuracy: 0.8958 - val_loss: 0.5700 - val_accuracy: 0.8504\n",
"Epoch 12/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.3596 - accuracy: 0.9046 - val_loss: 0.4157 - val_accuracy: 0.8832\n",
"Epoch 13/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.3471 - accuracy: 0.9113 - val_loss: 0.6555 - val_accuracy: 0.7732\n",
"Epoch 14/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.3278 - accuracy: 0.9216 - val_loss: 0.6548 - val_accuracy: 0.7866\n",
"Epoch 15/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.2864 - accuracy: 0.9192 - val_loss: 0.3056 - val_accuracy: 0.8946\n",
"Epoch 16/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.2149 - accuracy: 0.9360 - val_loss: 0.2963 - val_accuracy: 0.8982\n",
"Epoch 17/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.1847 - accuracy: 0.9439 - val_loss: 0.3019 - val_accuracy: 0.9034\n",
"Epoch 18/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.1848 - accuracy: 0.9458 - val_loss: 0.2894 - val_accuracy: 0.9002\n",
"Epoch 19/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.1815 - accuracy: 0.9449 - val_loss: 0.3010 - val_accuracy: 0.9016\n",
"Epoch 20/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.1771 - accuracy: 0.9449 - val_loss: 0.3071 - val_accuracy: 0.8946\n",
"Epoch 21/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.1679 - accuracy: 0.9506 - val_loss: 0.3004 - val_accuracy: 0.8960\n",
"Epoch 22/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.1743 - accuracy: 0.9477 - val_loss: 0.2937 - val_accuracy: 0.9012\n",
"Epoch 23/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.1648 - accuracy: 0.9487 - val_loss: 0.2967 - val_accuracy: 0.8986\n",
"Epoch 24/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.1504 - accuracy: 0.9558 - val_loss: 0.2941 - val_accuracy: 0.8980\n",
"Epoch 25/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.1515 - accuracy: 0.9553 - val_loss: 0.2928 - val_accuracy: 0.8978\n",
"Epoch 26/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.1589 - accuracy: 0.9521 - val_loss: 0.2961 - val_accuracy: 0.8976\n",
"Epoch 27/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.1546 - accuracy: 0.9550 - val_loss: 0.2956 - val_accuracy: 0.8974\n",
"Epoch 28/50\n",
"313/313 [==============================] - 28s 88ms/step - loss: 0.1452 - accuracy: 0.9553 - val_loss: 0.2943 - val_accuracy: 0.8990\n",
"Restoring model weights from the end of the best epoch.\n",
"Epoch 00028: early stopping\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Gb0MPnH2--Ix"
},
"source": [
"multi_branch_model.save_weights(filepath='/final_weight.h5')"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 210
},
"id": "_d17Kxtw1Za4",
"outputId": "ab7c9db0-577f-4e60-db71-f07bdebbe23c"
},
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"def showAccuracyHistory(history):\n",
" history_dict = history.history\n",
" acc = history_dict['accuracy']\n",
" val_acc = history_dict['val_accuracy']\n",
" epochs = range(1, len(acc) + 1)\n",
"\n",
" plt.figure(figsize=(20,5))\n",
" plt.plot(epochs, acc, label = 'accuracy')\n",
" plt.plot(epochs, val_acc, label = 'val_acc')\n",
" plt.xlabel('epoch')\n",
" plt.ylabel('accuracy')\n",
" plt.title('Accuracy during training')\n",
" plt.show()\n",
"\n",
"showAccuracyHistory(history)"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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IiIi0vkYY34KDLHWXn7Ai9uAaI+i9cBXrbUzva7nYBhjhgMfAWmNzI0lIiIibYR6HomIiEinFB3mNgX4q9e17I8x5kvGmLzoXEU/xPXqWnCAl7VJxpjzjTFpxpguwG+Afyg4EhERafsUHomIiEinY4yZhptQ+1/W2jle13MAE3Gr023HDek7Lzrkrj26Hjd8cCVuzqwbvC1HREREmkLD1kREREREREREpFHqeSQiIiIiIiIiIo1SeCQiIiIiIiIiIo0KeF1Ac+Xn59t+/fp5XYaIiIiIiIiISIexZMmS7dbagobOtbvwqF+/fixevNjrMkREREREREREOgxjzBeNndOwNRERERERERERaZTCIxERERERERERaZTCIxERERERERERaZTCIxERERERERERaZTCIxERERERERERaZTCIxERERERERERaZTCIxERERERERERaZTCIxERERERERERaZTCIxERERERERERaVTA6wJEREREREREpOOz1lIVjlAVilAdtlSF3H7tsdr9mm3seCiCBXwGjDEYwGcMxtRujTHuPNFtM64leq72OqDmPm7rMwYauFf//CxS/B27b47CIxEREREREWk3QuEIpZUhSipC7KmoZk95iJKKakoq4raVbn9PRajmeFUoAkQDBUzcfpQxNfvxx2PhQzQ3cK+t2a97vGbf1H0eu8++r4kFELXhhM8XCytqj5maYCMadvjqBhr1r9nnnqbePX21IUhDbVioE9pUhiNUhyxV4XB020jAs5/gpyrsAqOO6J0fnkRhTrrXZSSUwiMRERERERFJipYGP/HbsqrwAdtJC/jITk8hJz1AdnqA7PQUuma6niGx+MJaG7df9zh1jltih2LP419jrbupJVLvuK1pr+b11D6xcfeLRCBiXTsRa+vtN3bOtdHYNbXna8+1VGrAR6rfV7NNCZjocz+pfkNqwEdaio9geqDOdakB90ipf8zvI8Vv3OsDbj8t/lp/7X78cWOo+Rqtjdsn/lj0a4++r7Hv377X1n8fa6+Nfy9j38vYtfHtxO6Vk5HS8je3nVB4JCIiIiIi0gBrLZWhCOVVYSpDkX2Gr/iMwfjA32jPj9reJl5/HdVhS3U4Qijseo2EIq4nSXXEHasOR6IPSyjag6TmeMQdi52vc5+wJRSpe31VKBINgFov+Omek05OekrN8+y4czkNHEsN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\n",
"text/plain": [
"<Figure size 1440x360 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xh0jqr9hgmQm"
},
"source": [
"##Confusion Matrix Calculation\r\n",
"###Using Sklearn "
]
},
{
"cell_type": "code",
"metadata": {
"id": "6g0txw1ug5dL"
},
"source": [
"import numpy as np\r\n",
"from sklearn.metrics import confusion_matrix\r\n",
"import itertools\r\n",
"\r\n",
"predictions = list(multi_branch_model.predict(x_test))\r\n",
"predictions = list(map(int, list(map(np.round, predictions))))\r\n",
"\r\n",
"cm = confusion_matrix(y_test, predictions)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "YuX9QNnNgYSF"
},
"source": [
"def plot_confusion_matrix(cm, classes,\r\n",
" normalize=False,\r\n",
" title='Confusion matrix',\r\n",
" cmap=plt.cm.Blues):\r\n",
" \"\"\"\r\n",
" This function prints and plots the confusion matrix.\r\n",
" Normalization can be applied by setting `normalize=True`.\r\n",
" \"\"\"\r\n",
" plt.imshow(cm, interpolation='nearest', cmap=cmap)\r\n",
" plt.title(title)\r\n",
" plt.colorbar()\r\n",
" tick_marks = np.arange(len(classes))\r\n",
" plt.xticks(tick_marks, classes, rotation=45)\r\n",
" plt.yticks(tick_marks, classes)\r\n",
"\r\n",
" if normalize:\r\n",
" cm = np.round(cm.astype('float') / cm.sum(axis=1)[:, np.newaxis], 2)\r\n",
" print(\"Normalized confusion matrix\")\r\n",
" else:\r\n",
" print('Confusion matrix, without normalization')\r\n",
"\r\n",
" print(cm)\r\n",
"\r\n",
" thresh = cm.max() / 2.\r\n",
" for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\r\n",
" plt.text(j, i, cm[i, j],\r\n",
" horizontalalignment=\"center\",\r\n",
" color=\"white\" if cm[i, j] > thresh else \"black\")\r\n",
"\r\n",
" plt.tight_layout()\r\n",
" plt.ylabel('True label')\r\n",
" plt.xlabel('Predicted label')\r\n",
" plt.show()\r\n",
"\r\n"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "WTNIkj-oj2_e",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 362
},
"outputId": "0b413a27-f61f-4d00-bfc8-b8865a3cfdbd"
},
"source": [
"plot_confusion_matrix(cm, ['Positive feedback', 'Negative feedback'])"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Confusion matrix, without normalization\n",
"[[11278 1222]\n",
" [ 1600 10900]]\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "LKHt6BdXsP7q",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "8efdd733-a700-4147-9db6-204f3eac1d9b"
},
"source": [
"print(\"Test data accuracy:\", (cm[0,0]+cm[1,1])/np.sum(cm)*100,\"%\")\r\n"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"Test data accuracy: 88.712 %\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "Xc_N2YriHeJK",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "cfd3a74f-0912-402d-b84b-156b5dc9e585"
},
"source": [
"history_dict = history.history\n",
"history_dict.keys()"
],
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"dict_keys(['loss', 'accuracy', 'val_loss', 'val_accuracy', 'lr'])"
]
},
"metadata": {
"tags": []
},
"execution_count": 17
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "81mmUMNkN2XI"
},
"source": [
"def plot_history(history):\n",
" fig, (ax1, ax2) = plt.subplots(2,1, sharex=True, dpi=150)\n",
" ax1.plot(history.history['loss'], label='training')\n",
" ax1.plot(history.history['val_loss'], label='validation')\n",
" ax1.set_ylabel('Cross-Entropy Loss')\n",
" ax1.set_yscale('log')\n",
" if history.history.__contains__('lr'):\n",
" ax1b = ax1.twinx()\n",
" ax1b.plot(history.history['lr'], 'g-', linewidth=1)\n",
" ax1b.set_yscale('log')\n",
" ax1b.set_ylabel('Learning Rate', color='g')\n",
"\n",
" ax2.plot(history.history['accuracy'], label='training')\n",
" ax2.plot(history.history['val_accuracy'], label='validation')\n",
" ax2.set_ylabel('Accuracy')\n",
" ax2.set_xlabel('Epochs')\n",
" ax2.legend()\n",
" plt.show() "
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "MaMoHWQSN5pm"
},
"source": [
"plot_history(history)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "0KE9LhEEHgVB",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 295
},
"outputId": "8a0c80fc-85c1-4aae-82b1-5d080662aee6"
},
"source": [
"import matplotlib.pyplot as plt\n",
"history_dict = history.history\n",
"loss_values = history_dict['loss']\n",
"val_loss_values = history_dict['val_loss']\n",
"acc = history_dict['accuracy']\n",
"val_acc = history_dict['val_accuracy']\n",
"epochs = range(1, len(acc) + 1)\n",
"plt.plot(epochs, loss_values, 'bo', label='Training Loss')\n",
"plt.plot(epochs, val_loss_values, 'b', label='Validation Loss')\n",
"plt.title('Training and Validation Loss')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Loss')\n",
"plt.legend()\n",
"plt.show()"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "TWmvTr2aHibC",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 295
},
"outputId": "94866f69-34fb-4898-c2c2-f077906059db"
},
"source": [
"plt.clf()\n",
"plt.plot(epochs, acc, 'bo', label='Training Acc')\n",
"plt.plot(epochs, val_acc, 'b', label='Validation Acc')\n",
"plt.title('Training and Validation Accuracy')\n",
"plt.xlabel('Epochs')\n",
"plt.ylabel('Accuracy')\n",
"plt.legend()\n",
"plt.show()"
],
"execution_count": null,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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q6urVVV1+/btdXcGL730kl5wwQWqqlpWVqbnnntu3WfHjh2re/bs0crKSu3evbvu27dPVVU7duxYl79Lly66bt06ramp0a985Sv6+uuv6+7du7Vv3766cuVKVVWdNGlS3X4jffvb39ZHH31Ut2/frr179677josvvljvuusuVVWtrq7Wbdu26ZIlS3TQoEFaWVmpqqpbtmxp1t/H7ghSw4+qkyBeiSdajtbQRhDKn0itRCpqMbCqoQNSVd8WS3ggePjhh+vS165dq+eff74OGzZMjz76aB0yZIiqNgwEt912W91n8vPzdd26dapaPxCcfvrpdXmuuuoqfeyxx/Sdd97Rk08+uS59zpw5UQPB3r17tXfv3rpjxw5VVZ04caLOmzdPVVV79uype/bsqZf/3nvv1RtuuCH5P0gECwTR+VXN0lrquf0qR6In4NBnUt1WkWjedGgsEGRd1VAit3DN1bFjx7rXP/vZzxg3bhxLlixh3rx5MfvTH3zwwXWvc3JyqK6uTipPLC+++CLbtm1j+PDh5OXl8cYbb9SrHjItz89qlkSqThLJm+j/o0SqNxLJW1QEs2bBgAEg4p5nzXLpsRQVwerVUFvrntORt7XJukDQIvVtUWzfvp0+ffoA8PDDD6d8/0OGDGHlypWsXr0agCeffDJqvieeeIIHH3yQ1atXs3r1alatWsVLL71EVVUVp512Gvfffz8ANTU1bN++nVNPPZWnn36aLVu2APD555+nvOzZLpETO/h3wvaznjuRE3aiJ/cgn4Bbi6wLBMlcQaTCddddx/XXX8+IESMSuoKPV4cOHbjvvvs466yzGDVqFJ07d+aQQw6pl6eqqooXXniBc889ty6tY8eOnHjiicybN4977rmHsrIyhg8fzqhRo1i2bBnDhg3jxhtv5JRTTqGgoIAf/vCHKS97poq34dXPBs9suBI3KRCrzqi1PlrjOILWYufOnaqqWltbq9OnT9c777wzzSVqKFt+Kz8bXv1smGzt9dwmeVhjcXa48847taCgQI866ii95JJL9Isvvkh3kRrIlt+qNTV4GqPaeCAQ935wjB49WiOXqvzggw846qij0lQik4hs+a3atHGn9EgirrojUnGxaxNYu9ZV8cycadUhJrVEZLGqjo72XkZMQ21Ma9O/v+v9Ey09mqIiO/Gb9Mm6xmJjWkK6eqcZkwwLBMYk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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": [],
"needs_background": "light"
}
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "t8PoTwkzHmiu",
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "3b2b6842-d426-44cd-f69c-f6284576005b"
},
"source": [
"# Test the model\n",
"test_results = multi_branch_model.evaluate(x_test, y_test, verbose=True)\n",
"print(f'Output of Test --> Loss: {test_results[0]} - Accuracy: {100*test_results[1]}%')"
],
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"text": [
"782/782 [==============================] - 17s 21ms/step - loss: 0.3216 - accuracy: 0.8871\n",
"Output of Test --> Loss: 0.32163211703300476 - Accuracy: 88.7120008468628%\n"
],
"name": "stdout"
}
]
}
]
}