{ "nbformat": 4, "nbformat_minor": 0, "metadata": { "colab": { "provenance": [], "gpuType": "T4" }, "kernelspec": { "name": "python3", "display_name": "Python 3" }, "language_info": { "name": "python" }, "accelerator": "GPU" }, "cells": [ { "cell_type": "code", "execution_count": null, "metadata": { "id": "AmGaG6suq50T" }, "outputs": [], "source": [ "# pip install streamlit pyngrok\n" ] }, { "cell_type": "code", "source": [], "metadata": { "id": "YQxCGhoa-SoL" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# pip install streamlit" ], "metadata": { "id": "29dA_nh9rgCX" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# Import necessary libraries\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "pd.set_option('display.max_colwidth', None)\n", "import os\n", "import re\n", "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F # Import F for activation functions\n", "from torch.utils.data import TensorDataset, DataLoader\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import (accuracy_score, precision_score, recall_score,\n", " f1_score, confusion_matrix, roc_curve, roc_auc_score,\n", " precision_recall_curve, average_precision_score,\n", " classification_report)\n", "import seaborn as sns\n", "import pickle\n", "import warnings\n", "warnings.filterwarnings(\"ignore\")\n", "\n", "# Set random seeds for reproducibility\n", "np.random.seed(1)\n", "torch.manual_seed(1)\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "UI7Xiljtrjy0", "outputId": "7a6898b4-8e8a-4ef5-eabf-b21c5b5e0502" }, "execution_count": null, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 52 } ] }, { "cell_type": "code", "source": [ "# Load data\n", "train = pd.read_csv('/content/train.csv')\n", "test = pd.read_csv('/content/test.csv')\n", "\n", "# Shuffle data\n", "train = train.sample(frac=1, random_state=1).reset_index(drop=True)\n", "test = test.sample(frac=1, random_state=1).reset_index(drop=True)\n", "\n", "# Drop unnecessary columns\n", "train.drop(['keyword', 'location'], axis=1, inplace=True)\n", "test.drop(['keyword', 'location'], axis=1, inplace=True)\n" ], "metadata": { "id": "2-v0_Xqes02u" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# Clean text function\n", "def clean_text(text):\n", " # Remove unknown characters (emojis, etc.)\n", " emoji_pattern = re.compile(\"[\"\n", " u\"\\U0001F600-\\U0001F64F\" # emoticons\n", " u\"\\U0001F300-\\U0001F5FF\" # symbols & pictographs\n", " u\"\\U0001F680-\\U0001F6FF\" # transport & map symbols\n", " u\"\\U0001F1E0-\\U0001F1FF\" # flags\n", " u\"\\U00002702-\\U000027B0\"\n", " u\"\\U000024C2-\\U0001F251\"\n", " \"]+\", flags=re.UNICODE)\n", " text = emoji_pattern.sub(r'', text)\n", "\n", " # Remove URLs\n", " url = re.compile(r'https?://\\S+|www\\.\\S+')\n", " text = url.sub(r'', text)\n", "\n", " # Remove hashtags and mentions\n", " text = text.replace('#', ' ')\n", " text = text.replace('@', ' ')\n", "\n", " # Remove special characters\n", " symbols = re.compile(r'[^A-Za-z0-9 ]')\n", " text = symbols.sub(r'', text)\n", "\n", " # Convert to lowercase\n", " text = text.lower()\n", "\n", " return text\n", "\n", "# Apply text cleaning\n", "train['text'] = train['text'].apply(lambda x: clean_text(x))\n", "test['text'] = test['text'].apply(lambda x: clean_text(x))\n" ], "metadata": { "id": "XflpUSUGs3-S" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# Load GloVe embeddings\n", "embeddings_index = {}\n", "with open('/content/glove.6B.50d.txt', 'r', encoding='utf8') as f:\n", " for line in f:\n", " values = line.strip().split()\n", " word = values[0]\n", " coefs = np.array(values[1:], dtype='float32')\n", " embeddings_index[word] = coefs\n", "print(f'Found {len(embeddings_index)} word vectors.')\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "U9kfcgx_s6da", "outputId": "68c6b237-c6f0-4e7c-955f-b1893ab4e5fc" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Found 169500 word vectors.\n" ] } ] }, { "cell_type": "code", "source": [ "# Prepare embeddings and word indices\n", "word2idx = {}\n", "new_embedding_index = {}\n", "\n", "# Build vocabulary and embedding matrix\n", "index = 1 # Start indexing from 1\n", "for dataset in [train, test]:\n", " for x in dataset['text']:\n", " words = x.split()\n", " for word in words:\n", " if word not in word2idx:\n", " word2idx[word] = index\n", " if word in embeddings_index:\n", " new_embedding_index[index] = embeddings_index[word]\n", " else:\n", " new_embedding_index[index] = np.random.normal(scale=0.6, size=(50,)).astype(np.float32)\n", " index += 1\n", "\n", "# Add zero vector for padding index\n", "new_embedding_index[0] = np.zeros(50, dtype=np.float32)\n" ], "metadata": { "id": "AbgVn-yAvHnU" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# Save word2idx for later use\n", "with open('word2idx.pkl', 'wb') as f:\n", " pickle.dump(word2idx, f)\n" ], "metadata": { "id": "LOldWF7OvK8_" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# Convert text to index sequences\n", "def text_to_sequence(text_list, word2idx):\n", " sequences = []\n", " for text in text_list:\n", " words = text.split()\n", " seq = [word2idx.get(word, 0) for word in words]\n", " sequences.append(seq)\n", " return sequences\n", "\n", "train_sequences = text_to_sequence(train['text'], word2idx)\n", "test_sequences = text_to_sequence(test['text'], word2idx)\n" ], "metadata": { "id": "RJVy9RNxvMwG" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# Padding sequences\n", "def pad_sequences(sequences, maxlen):\n", " padded_sequences = np.zeros((len(sequences), maxlen), dtype=int)\n", " for i, seq in enumerate(sequences):\n", " if len(seq) > maxlen:\n", " padded_sequences[i] = np.array(seq[:maxlen])\n", " else:\n", " padded_sequences[i, -len(seq):] = np.array(seq)\n", " return padded_sequences\n", "\n", "max_len = 55 # Based on max length observed\n", "train_padded = pad_sequences(train_sequences, maxlen=max_len)\n", "test_padded = pad_sequences(test_sequences, maxlen=max_len)\n" ], "metadata": { "id": "r_uxP3dIvOpL" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# Prepare target variable\n", "train_labels = train['target'].values\n", "\n", "# Split data into training and validation sets\n", "X_train, X_val, y_train, y_val = train_test_split(train_padded, train_labels, test_size=0.2, random_state=1)\n", "\n", "# Create DataLoaders\n", "batch_size = 64\n", "\n", "# Convert to PyTorch tensors\n", "train_data = TensorDataset(torch.from_numpy(X_train), torch.from_numpy(y_train))\n", "valid_data = TensorDataset(torch.from_numpy(X_val), torch.from_numpy(y_val))\n", "\n", "# DataLoaders\n", "train_loader = DataLoader(train_data, shuffle=True, batch_size=batch_size)\n", "valid_loader = DataLoader(valid_data, shuffle=False, batch_size=batch_size)\n" ], "metadata": { "id": "Dgv1lZDqvQLK" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# Prepare embedding weights matrix\n", "num_embeddings = len(new_embedding_index)\n", "embedding_dim = 50\n", "weights_matrix = np.zeros((num_embeddings, embedding_dim), dtype=np.float32)\n", "for idx, vec in new_embedding_index.items():\n", " weights_matrix[idx] = vec\n", "weights_matrix = torch.tensor(weights_matrix)\n" ], "metadata": { "id": "mTi1f_eivSkY" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "class BiLSTM(nn.Module):\n", " def __init__(self, weights_matrix, output_size, hidden_dim, hidden_dim2, n_layers, drop_prob=0.5):\n", " super(BiLSTM, self).__init__()\n", "\n", " self.output_size = output_size\n", " self.n_layers = n_layers\n", " self.hidden_dim = hidden_dim\n", "\n", " # Embedding layer\n", " num_embeddings, embedding_dim = weights_matrix.size()\n", " self.embedding = nn.Embedding(num_embeddings, embedding_dim)\n", " self.embedding.weight.data.copy_(weights_matrix)\n", " self.embedding.weight.requires_grad = False # Freeze embedding layer\n", "\n", " # BiLSTM layer\n", " self.lstm = nn.LSTM(embedding_dim, hidden_dim, n_layers, dropout=drop_prob, bidirectional=True, batch_first=True)\n", "\n", " # Dropout layer\n", " self.dropout = nn.Dropout(0.3)\n", "\n", " # Fully connected layers\n", " self.fc1 = nn.Linear(hidden_dim * 2, hidden_dim2)\n", " self.fc2 = nn.Linear(hidden_dim2, output_size)\n", "\n", " # Activation function\n", " self.sigmoid = nn.Sigmoid()\n", "\n", " def forward(self, x, hidden):\n", " batch_size = x.size(0)\n", "\n", " # Embedding\n", " embeds = self.embedding(x)\n", "\n", " # LSTM\n", " lstm_out, hidden = self.lstm(embeds, hidden)\n", "\n", " # Stack up LSTM outputs\n", " lstm_out = lstm_out.contiguous().view(-1, self.hidden_dim * 2)\n", "\n", " # Dropout and fully connected layers\n", " out = self.dropout(lstm_out)\n", " out = self.fc1(out)\n", " out = F.relu(out)\n", " out = self.dropout(out)\n", " out = self.fc2(out)\n", "\n", " # Sigmoid activation\n", " sig_out = self.sigmoid(out)\n", "\n", " # Reshape to batch_size first\n", " sig_out = sig_out.view(batch_size, -1)\n", " sig_out = sig_out[:, -1] # Get last batch of labels\n", "\n", " return sig_out, hidden\n", "\n", " def init_hidden(self, batch_size, train_on_gpu=False):\n", " weight = next(self.parameters()).data\n", "\n", " layers = self.n_layers * 2 # Multiply by 2 for bidirectionality\n", " if train_on_gpu:\n", " hidden = (weight.new(layers, batch_size, self.hidden_dim).zero_().cuda(),\n", " weight.new(layers, batch_size, self.hidden_dim).zero_().cuda())\n", " else:\n", " hidden = (weight.new(layers, batch_size, self.hidden_dim).zero_(),\n", " weight.new(layers, batch_size, self.hidden_dim).zero_())\n", " return hidden\n" ], "metadata": { "id": "SRKvT8kVvUHE" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# Instantiate the model\n", "output_size = 1\n", "hidden_dim = 128\n", "hidden_dim2 = 64\n", "n_layers = 2\n", "\n", "net = BiLSTM(weights_matrix, output_size, hidden_dim, hidden_dim2, n_layers)\n", "print(net)\n", "\n", "# Check if GPU is available\n", "train_on_gpu = torch.cuda.is_available()\n", "if train_on_gpu:\n", " net.cuda()\n", "\n", "# Loss and optimization functions\n", "criterion = nn.BCELoss()\n", "optimizer = torch.optim.Adam(net.parameters(), lr=0.001)\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "xf6LPmievV6U", "outputId": "983ba488-0360-408f-f199-5d1dac7151b5" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "BiLSTM(\n", " (embedding): Embedding(22652, 50)\n", " (lstm): LSTM(50, 128, num_layers=2, batch_first=True, dropout=0.5, bidirectional=True)\n", " (dropout): Dropout(p=0.3, inplace=False)\n", " (fc1): Linear(in_features=256, out_features=64, bias=True)\n", " (fc2): Linear(in_features=64, out_features=1, bias=True)\n", " (sigmoid): Sigmoid()\n", ")\n" ] } ] }, { "cell_type": "code", "source": [ "# Training the model\n", "epochs = 500 # You can increase this for better performance\n", "clip = 5 # Gradient clipping\n", "valid_loss_min = np.Inf # Track change in validation loss\n", "\n", "train_losses_epoch = []\n", "val_losses_epoch = []\n", "\n", "net.train()\n", "for epoch in range(epochs):\n", " train_losses = []\n", " for inputs, labels in train_loader:\n", " # Move data to GPU if available\n", " if train_on_gpu:\n", " inputs, labels = inputs.cuda(), labels.cuda()\n", " else:\n", " inputs, labels = inputs, labels\n", "\n", " # Initialize hidden state based on actual batch size\n", " h = net.init_hidden(inputs.size(0), train_on_gpu)\n", "\n", " # Create new variables for hidden state\n", " h = tuple([each.data for each in h])\n", "\n", " net.zero_grad()\n", "\n", " # Forward pass\n", " outputs, h = net(inputs, h)\n", " loss = criterion(outputs.squeeze(), labels.float())\n", " loss.backward()\n", "\n", " # Gradient clipping\n", " nn.utils.clip_grad_norm_(net.parameters(), clip)\n", "\n", " optimizer.step()\n", " train_losses.append(loss.item())\n", "\n", " train_losses_epoch.append(np.mean(train_losses))\n", "\n", " # Validation\n", " val_losses = []\n", " net.eval()\n", " y_preds = []\n", " y_true = []\n", " y_probs = []\n", " with torch.no_grad():\n", " for inputs, labels in valid_loader:\n", " # Move data to GPU if available\n", " if train_on_gpu:\n", " inputs, labels = inputs.cuda(), labels.cuda()\n", " else:\n", " inputs, labels = inputs, labels\n", "\n", " # Initialize hidden state based on actual batch size\n", " val_h = net.init_hidden(inputs.size(0), train_on_gpu)\n", "\n", " # Create new variables for hidden state\n", " val_h = tuple([each.data for each in val_h])\n", "\n", " outputs, val_h = net(inputs, val_h)\n", " val_loss = criterion(outputs.squeeze(), labels.float())\n", " val_losses.append(val_loss.item())\n", "\n", " # Save predictions for evaluation metrics\n", " probs = outputs.squeeze().detach().cpu().numpy()\n", " preds = torch.round(outputs.squeeze())\n", " y_probs.extend(probs)\n", " y_preds.extend(preds.detach().cpu().numpy())\n", " y_true.extend(labels.detach().cpu().numpy())\n", "\n", " val_losses_epoch.append(np.mean(val_losses))\n", "\n", " net.train()\n", "\n", " print(f\"Epoch: {epoch+1}/{epochs}...\",\n", " f\"Train Loss: {np.mean(train_losses):.6f}...\",\n", " f\"Val Loss: {np.mean(val_losses):.6f}...\")\n", "\n", " # Save model if validation loss has decreased\n", " if np.mean(val_losses) <= valid_loss_min:\n", " torch.save(net.state_dict(), 'state_dict.pt')\n", " valid_loss_min = np.mean(val_losses)\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ldaFDjaYvX3b", "outputId": "7d378008-d6d7-4807-a1af-8bfa8fca4400" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch: 1/500... Train Loss: 0.538091... Val Loss: 0.475925...\n", "Epoch: 2/500... Train Loss: 0.460440... Val Loss: 0.455001...\n", "Epoch: 3/500... Train Loss: 0.439144... Val Loss: 0.445394...\n", "Epoch: 4/500... Train Loss: 0.436420... Val Loss: 0.438199...\n", "Epoch: 5/500... Train Loss: 0.415481... Val Loss: 0.451574...\n", "Epoch: 6/500... Train Loss: 0.405174... Val Loss: 0.450916...\n", "Epoch: 7/500... Train Loss: 0.397085... Val Loss: 0.457545...\n", "Epoch: 8/500... Train Loss: 0.385586... Val Loss: 0.457612...\n", "Epoch: 9/500... Train Loss: 0.366098... Val Loss: 0.467326...\n", "Epoch: 10/500... Train Loss: 0.352446... Val Loss: 0.490738...\n", "Epoch: 11/500... Train Loss: 0.344960... Val Loss: 0.469121...\n", "Epoch: 12/500... Train Loss: 0.317675... Val Loss: 0.532961...\n", "Epoch: 13/500... Train Loss: 0.314310... Val Loss: 0.525323...\n", "Epoch: 14/500... Train Loss: 0.287290... Val Loss: 0.587929...\n", "Epoch: 15/500... Train Loss: 0.274995... Val Loss: 0.584338...\n", "Epoch: 16/500... Train Loss: 0.256821... Val Loss: 0.599579...\n", "Epoch: 17/500... Train Loss: 0.234864... Val Loss: 0.740835...\n", "Epoch: 18/500... Train Loss: 0.230575... Val Loss: 0.756638...\n", "Epoch: 19/500... Train Loss: 0.206964... Val Loss: 0.754208...\n", "Epoch: 20/500... Train Loss: 0.188959... Val Loss: 0.759641...\n", "Epoch: 21/500... Train Loss: 0.184042... Val Loss: 0.752526...\n", "Epoch: 22/500... Train Loss: 0.169375... Val Loss: 0.808390...\n", "Epoch: 23/500... Train Loss: 0.158956... Val Loss: 0.871179...\n", "Epoch: 24/500... Train Loss: 0.137591... Val Loss: 1.088825...\n", "Epoch: 25/500... Train Loss: 0.131829... Val Loss: 0.983565...\n", "Epoch: 26/500... Train Loss: 0.122620... Val Loss: 0.974979...\n", "Epoch: 27/500... Train Loss: 0.118029... Val Loss: 1.039754...\n", "Epoch: 28/500... Train Loss: 0.095033... Val Loss: 1.004301...\n", "Epoch: 29/500... Train Loss: 0.089335... Val Loss: 1.274090...\n", "Epoch: 30/500... Train Loss: 0.082524... Val Loss: 1.491955...\n", "Epoch: 31/500... Train Loss: 0.086627... Val Loss: 1.237311...\n", "Epoch: 32/500... Train Loss: 0.074925... Val Loss: 1.545696...\n", "Epoch: 33/500... Train Loss: 0.067777... Val Loss: 1.537921...\n", "Epoch: 34/500... Train Loss: 0.068118... Val Loss: 1.449501...\n", "Epoch: 35/500... Train Loss: 0.066576... Val Loss: 1.591712...\n", "Epoch: 36/500... Train Loss: 0.072846... Val Loss: 1.313856...\n", "Epoch: 37/500... Train Loss: 0.055676... Val Loss: 1.507480...\n", "Epoch: 38/500... Train Loss: 0.059538... Val Loss: 2.294430...\n", "Epoch: 39/500... Train Loss: 0.052525... Val Loss: 2.721721...\n", "Epoch: 40/500... Train Loss: 0.059784... Val Loss: 1.425400...\n", "Epoch: 41/500... Train Loss: 0.050323... Val Loss: 1.804656...\n", "Epoch: 42/500... Train Loss: 0.044783... Val Loss: 1.645627...\n", "Epoch: 43/500... Train Loss: 0.039251... Val Loss: 1.579429...\n", "Epoch: 44/500... Train Loss: 0.036165... Val Loss: 2.108647...\n", "Epoch: 45/500... Train Loss: 0.047601... Val Loss: 1.830116...\n", "Epoch: 46/500... Train Loss: 0.048247... Val Loss: 1.799374...\n", "Epoch: 47/500... Train Loss: 0.042913... Val Loss: 2.131337...\n", "Epoch: 48/500... Train Loss: 0.041634... Val Loss: 2.037950...\n", "Epoch: 49/500... Train Loss: 0.041900... Val Loss: 2.345090...\n", "Epoch: 50/500... Train Loss: 0.052907... Val Loss: 1.834921...\n", "Epoch: 51/500... Train Loss: 0.051943... Val Loss: 2.652973...\n", "Epoch: 52/500... Train Loss: 0.041325... Val Loss: 1.997189...\n", "Epoch: 53/500... Train Loss: 0.042875... Val Loss: 2.666404...\n", "Epoch: 54/500... Train Loss: 0.046798... Val Loss: 2.152220...\n", "Epoch: 55/500... Train Loss: 0.043761... Val Loss: 2.040395...\n", "Epoch: 56/500... Train Loss: 0.040076... Val Loss: 2.129832...\n", "Epoch: 57/500... Train Loss: 0.037332... Val Loss: 3.078656...\n", "Epoch: 58/500... Train Loss: 0.036427... Val Loss: 2.640727...\n", "Epoch: 59/500... Train Loss: 0.042734... Val Loss: 1.992625...\n", "Epoch: 60/500... Train Loss: 0.054949... Val Loss: 1.695931...\n", "Epoch: 61/500... Train Loss: 0.041029... Val Loss: 1.936150...\n", "Epoch: 62/500... Train Loss: 0.035363... Val Loss: 2.265391...\n", "Epoch: 63/500... Train Loss: 0.039374... Val Loss: 2.529673...\n", "Epoch: 64/500... Train Loss: 0.034808... Val Loss: 2.620105...\n", "Epoch: 65/500... Train Loss: 0.043899... Val Loss: 1.856084...\n", "Epoch: 66/500... Train Loss: 0.032406... Val Loss: 2.464635...\n", "Epoch: 67/500... Train Loss: 0.032540... Val Loss: 2.529493...\n", "Epoch: 68/500... Train Loss: 0.032438... Val Loss: 3.072894...\n", "Epoch: 69/500... Train Loss: 0.039666... Val Loss: 2.766238...\n", "Epoch: 70/500... Train Loss: 0.047789... Val Loss: 1.664352...\n", "Epoch: 71/500... Train Loss: 0.037506... Val Loss: 1.803299...\n", "Epoch: 72/500... Train Loss: 0.033157... Val Loss: 1.964884...\n", "Epoch: 73/500... Train Loss: 0.033060... Val Loss: 2.133426...\n", "Epoch: 74/500... Train Loss: 0.034917... Val Loss: 1.889236...\n", "Epoch: 75/500... Train Loss: 0.030398... Val Loss: 2.436854...\n", "Epoch: 76/500... Train Loss: 0.030732... Val Loss: 1.894276...\n", "Epoch: 77/500... Train Loss: 0.030714... Val Loss: 2.426101...\n", "Epoch: 78/500... Train Loss: 0.030759... Val Loss: 3.092686...\n", "Epoch: 79/500... Train Loss: 0.027527... Val Loss: 2.917176...\n", "Epoch: 80/500... Train Loss: 0.035582... Val Loss: 2.438496...\n", "Epoch: 81/500... Train Loss: 0.041867... Val Loss: 1.772788...\n", "Epoch: 82/500... Train Loss: 0.033699... Val Loss: 2.419910...\n", "Epoch: 83/500... Train Loss: 0.030244... Val Loss: 2.497780...\n", "Epoch: 84/500... Train Loss: 0.027876... Val Loss: 2.478264...\n", "Epoch: 85/500... Train Loss: 0.046133... Val Loss: 2.314526...\n", "Epoch: 86/500... Train Loss: 0.046293... Val Loss: 3.164300...\n", "Epoch: 87/500... Train Loss: 0.035753... Val Loss: 2.120117...\n", "Epoch: 88/500... Train Loss: 0.026409... Val Loss: 3.123146...\n", "Epoch: 89/500... Train Loss: 0.030411... Val Loss: 2.809613...\n", "Epoch: 90/500... Train Loss: 0.033794... Val Loss: 2.916797...\n", "Epoch: 91/500... Train Loss: 0.027311... Val Loss: 3.012018...\n", "Epoch: 92/500... Train Loss: 0.030893... Val Loss: 2.420953...\n", "Epoch: 93/500... Train Loss: 0.041657... Val Loss: 2.148010...\n", "Epoch: 94/500... Train Loss: 0.039041... Val Loss: 1.712181...\n", "Epoch: 95/500... Train Loss: 0.026145... Val Loss: 2.328909...\n", "Epoch: 96/500... Train Loss: 0.028677... Val Loss: 2.019573...\n", "Epoch: 97/500... Train Loss: 0.030485... Val Loss: 2.295436...\n", "Epoch: 98/500... Train Loss: 0.029008... Val Loss: 2.029994...\n", "Epoch: 99/500... Train Loss: 0.024757... Val Loss: 2.263075...\n", "Epoch: 100/500... Train Loss: 0.025426... Val Loss: 2.363014...\n", "Epoch: 101/500... Train Loss: 0.022514... Val Loss: 2.584673...\n", "Epoch: 102/500... Train Loss: 0.023015... Val Loss: 2.774394...\n", "Epoch: 103/500... Train Loss: 0.025833... Val Loss: 2.856377...\n", "Epoch: 104/500... Train Loss: 0.028911... Val Loss: 2.626158...\n", "Epoch: 105/500... Train Loss: 0.034165... Val Loss: 2.132241...\n", "Epoch: 106/500... Train Loss: 0.030628... Val Loss: 3.353493...\n", "Epoch: 107/500... Train Loss: 0.041726... Val Loss: 1.622854...\n", "Epoch: 108/500... Train Loss: 0.033461... Val Loss: 1.540330...\n", "Epoch: 109/500... Train Loss: 0.033245... Val Loss: 1.923450...\n", "Epoch: 110/500... Train Loss: 0.034970... Val Loss: 1.562937...\n", "Epoch: 111/500... Train Loss: 0.030394... Val Loss: 1.696325...\n", "Epoch: 112/500... Train Loss: 0.030635... Val Loss: 1.693659...\n", "Epoch: 113/500... Train Loss: 0.027476... Val Loss: 1.919615...\n", "Epoch: 114/500... Train Loss: 0.026337... Val Loss: 1.797074...\n", "Epoch: 115/500... Train Loss: 0.023159... Val Loss: 2.019638...\n", "Epoch: 116/500... Train Loss: 0.022572... Val Loss: 3.299455...\n", "Epoch: 117/500... Train Loss: 0.039168... Val Loss: 1.953545...\n", "Epoch: 118/500... Train Loss: 0.034133... Val Loss: 1.740322...\n", "Epoch: 119/500... Train Loss: 0.029349... Val Loss: 1.954816...\n", "Epoch: 120/500... Train Loss: 0.027541... Val Loss: 2.099916...\n", "Epoch: 121/500... Train Loss: 0.027225... Val Loss: 2.006205...\n", "Epoch: 122/500... Train Loss: 0.025135... Val Loss: 2.190856...\n", "Epoch: 123/500... Train Loss: 0.026971... Val Loss: 2.017540...\n", "Epoch: 124/500... Train Loss: 0.028700... Val Loss: 1.909905...\n", "Epoch: 125/500... Train Loss: 0.028923... Val Loss: 2.063985...\n", "Epoch: 126/500... Train Loss: 0.027290... Val Loss: 2.266915...\n", "Epoch: 127/500... Train Loss: 0.027134... Val Loss: 2.290684...\n", "Epoch: 128/500... Train Loss: 0.024091... Val Loss: 2.213194...\n", "Epoch: 129/500... Train Loss: 0.023263... Val Loss: 2.325375...\n", "Epoch: 130/500... Train Loss: 0.022199... Val Loss: 2.794184...\n", "Epoch: 131/500... Train Loss: 0.023552... Val Loss: 2.602151...\n", "Epoch: 132/500... Train Loss: 0.021511... Val Loss: 3.254421...\n", "Epoch: 133/500... Train Loss: 0.022591... Val Loss: 2.857092...\n", "Epoch: 134/500... Train Loss: 0.023437... Val Loss: 3.583146...\n", "Epoch: 135/500... Train Loss: 0.023055... Val Loss: 4.152089...\n", "Epoch: 136/500... Train Loss: 0.029206... Val Loss: 3.264388...\n", "Epoch: 137/500... Train Loss: 0.040251... Val Loss: 1.889392...\n", "Epoch: 138/500... Train Loss: 0.036099... Val Loss: 1.823115...\n", "Epoch: 139/500... Train Loss: 0.032127... Val Loss: 1.927758...\n", "Epoch: 140/500... Train Loss: 0.023078... Val Loss: 2.571128...\n", "Epoch: 141/500... Train Loss: 0.024360... Val Loss: 2.491290...\n", "Epoch: 142/500... Train Loss: 0.029254... Val Loss: 2.300255...\n", "Epoch: 143/500... Train Loss: 0.029062... Val Loss: 1.892882...\n", "Epoch: 144/500... Train Loss: 0.028365... Val Loss: 2.282936...\n", "Epoch: 145/500... Train Loss: 0.026825... Val Loss: 2.049737...\n", "Epoch: 146/500... Train Loss: 0.028873... Val Loss: 2.123983...\n", "Epoch: 147/500... Train Loss: 0.025323... Val Loss: 2.710766...\n", "Epoch: 148/500... Train Loss: 0.023996... Val Loss: 2.419032...\n", "Epoch: 149/500... Train Loss: 0.033495... Val Loss: 1.793987...\n", "Epoch: 150/500... Train Loss: 0.023380... Val Loss: 2.140998...\n", "Epoch: 151/500... Train Loss: 0.021889... Val Loss: 2.458441...\n", "Epoch: 152/500... Train Loss: 0.022870... Val Loss: 2.620131...\n", "Epoch: 153/500... Train Loss: 0.021749... Val Loss: 2.943212...\n", "Epoch: 154/500... Train Loss: 0.023518... Val Loss: 2.845006...\n", "Epoch: 155/500... Train Loss: 0.028320... Val Loss: 1.932696...\n", "Epoch: 156/500... Train Loss: 0.023646... Val Loss: 2.098406...\n", "Epoch: 157/500... Train Loss: 0.024513... Val Loss: 2.139664...\n", "Epoch: 158/500... Train Loss: 0.024346... Val Loss: 2.102003...\n", "Epoch: 159/500... Train Loss: 0.022377... Val Loss: 2.584766...\n", "Epoch: 160/500... Train Loss: 0.034340... Val Loss: 2.021306...\n", "Epoch: 161/500... Train Loss: 0.042495... Val Loss: 1.422868...\n", "Epoch: 162/500... Train Loss: 0.026729... Val Loss: 1.724078...\n", "Epoch: 163/500... Train Loss: 0.026008... Val Loss: 1.912515...\n", "Epoch: 164/500... Train Loss: 0.023949... Val Loss: 2.567102...\n", "Epoch: 165/500... Train Loss: 0.022056... Val Loss: 2.349633...\n", "Epoch: 166/500... Train Loss: 0.035031... Val Loss: 2.167549...\n", "Epoch: 167/500... Train Loss: 0.032521... Val Loss: 2.711702...\n", "Epoch: 168/500... Train Loss: 0.028470... Val Loss: 2.157703...\n", "Epoch: 169/500... Train Loss: 0.023661... Val Loss: 3.036082...\n", "Epoch: 170/500... Train Loss: 0.022417... Val Loss: 2.716752...\n", "Epoch: 171/500... Train Loss: 0.023215... Val Loss: 2.462421...\n", "Epoch: 172/500... Train Loss: 0.025890... Val Loss: 3.429693...\n", "Epoch: 173/500... Train Loss: 0.023933... Val Loss: 2.741126...\n", "Epoch: 174/500... Train Loss: 0.024301... Val Loss: 3.167146...\n", "Epoch: 175/500... Train Loss: 0.023880... Val Loss: 3.286147...\n", "Epoch: 176/500... Train Loss: 0.020705... Val Loss: 4.034195...\n", "Epoch: 177/500... Train Loss: 0.021583... Val Loss: 4.478651...\n", "Epoch: 178/500... Train Loss: 0.020561... Val Loss: 4.530801...\n", "Epoch: 179/500... Train Loss: 0.020909... Val Loss: 4.411667...\n", "Epoch: 180/500... Train Loss: 0.021728... Val Loss: 4.103186...\n", "Epoch: 181/500... Train Loss: 0.021182... Val Loss: 4.677798...\n", "Epoch: 182/500... Train Loss: 0.020167... Val Loss: 4.722680...\n", "Epoch: 183/500... Train Loss: 0.022128... Val Loss: 4.773677...\n", "Epoch: 184/500... Train Loss: 0.020981... Val Loss: 4.424947...\n", "Epoch: 185/500... Train Loss: 0.021028... Val Loss: 4.841843...\n", "Epoch: 186/500... Train Loss: 0.020840... Val Loss: 5.001147...\n", "Epoch: 187/500... Train Loss: 0.020505... Val Loss: 5.285181...\n", "Epoch: 188/500... Train Loss: 0.020748... Val Loss: 5.210034...\n", "Epoch: 189/500... Train Loss: 0.021534... Val Loss: 5.007416...\n", "Epoch: 190/500... Train Loss: 0.021927... Val Loss: 5.683101...\n", "Epoch: 191/500... Train Loss: 0.024794... Val Loss: 4.098179...\n", "Epoch: 192/500... Train Loss: 0.028829... Val Loss: 2.479699...\n", "Epoch: 193/500... Train Loss: 0.045125... Val Loss: 1.203900...\n", "Epoch: 194/500... Train Loss: 0.037511... Val Loss: 1.600486...\n", "Epoch: 195/500... Train Loss: 0.028189... Val Loss: 1.654566...\n", "Epoch: 196/500... Train Loss: 0.027245... Val Loss: 1.873009...\n", "Epoch: 197/500... Train Loss: 0.024310... Val Loss: 2.190787...\n", "Epoch: 198/500... Train Loss: 0.022854... Val Loss: 3.353679...\n", "Epoch: 199/500... Train Loss: 0.032487... Val Loss: 1.891542...\n", "Epoch: 200/500... Train Loss: 0.026775... Val Loss: 2.081773...\n", "Epoch: 201/500... Train Loss: 0.022159... Val Loss: 2.682384...\n", "Epoch: 202/500... Train Loss: 0.021217... Val Loss: 3.437855...\n", "Epoch: 203/500... Train Loss: 0.021676... Val Loss: 3.681876...\n", "Epoch: 204/500... Train Loss: 0.023513... Val Loss: 2.451297...\n", "Epoch: 205/500... Train Loss: 0.021167... Val Loss: 3.150920...\n", "Epoch: 206/500... Train Loss: 0.028836... Val Loss: 2.308630...\n", "Epoch: 207/500... Train Loss: 0.034846... Val Loss: 1.792292...\n", "Epoch: 208/500... Train Loss: 0.028650... Val Loss: 1.867559...\n", "Epoch: 209/500... Train Loss: 0.021887... Val Loss: 2.193365...\n", "Epoch: 210/500... Train Loss: 0.021221... Val Loss: 3.184940...\n", "Epoch: 211/500... Train Loss: 0.023335... Val Loss: 2.721593...\n", "Epoch: 212/500... Train Loss: 0.029664... Val Loss: 3.034530...\n", "Epoch: 213/500... Train Loss: 0.024989... Val Loss: 3.025313...\n", "Epoch: 214/500... Train Loss: 0.030260... Val Loss: 2.328212...\n", "Epoch: 215/500... Train Loss: 0.029686... Val Loss: 2.227245...\n", "Epoch: 216/500... Train Loss: 0.025165... Val Loss: 2.017630...\n", "Epoch: 217/500... Train Loss: 0.024196... Val Loss: 2.192651...\n", "Epoch: 218/500... Train Loss: 0.029056... Val Loss: 1.844990...\n", "Epoch: 219/500... Train Loss: 0.023508... Val Loss: 2.322189...\n", "Epoch: 220/500... Train Loss: 0.024190... Val Loss: 2.143055...\n", "Epoch: 221/500... Train Loss: 0.021453... Val Loss: 2.173648...\n", "Epoch: 222/500... Train Loss: 0.020576... Val Loss: 2.567543...\n", "Epoch: 223/500... Train Loss: 0.021308... Val Loss: 2.629332...\n", "Epoch: 224/500... Train Loss: 0.023537... Val Loss: 2.903826...\n", "Epoch: 225/500... Train Loss: 0.021309... Val Loss: 3.194580...\n", "Epoch: 226/500... Train Loss: 0.021177... Val Loss: 3.761344...\n", "Epoch: 227/500... Train Loss: 0.022987... Val Loss: 3.440208...\n", "Epoch: 228/500... Train Loss: 0.030663... Val Loss: 1.989510...\n", "Epoch: 229/500... Train Loss: 0.033747... Val Loss: 1.884489...\n", "Epoch: 230/500... Train Loss: 0.032028... Val Loss: 1.770522...\n", "Epoch: 231/500... Train Loss: 0.027528... Val Loss: 1.788761...\n", "Epoch: 232/500... Train Loss: 0.021256... Val Loss: 2.134690...\n", "Epoch: 233/500... Train Loss: 0.023044... Val Loss: 2.223277...\n", "Epoch: 234/500... Train Loss: 0.024982... Val Loss: 1.949637...\n", "Epoch: 235/500... Train Loss: 0.022368... Val Loss: 2.061751...\n", "Epoch: 236/500... Train Loss: 0.022761... Val Loss: 2.550230...\n", "Epoch: 237/500... Train Loss: 0.030418... Val Loss: 1.783644...\n", "Epoch: 238/500... Train Loss: 0.024881... Val Loss: 2.064297...\n", "Epoch: 239/500... Train Loss: 0.020266... Val Loss: 2.437895...\n", "Epoch: 240/500... Train Loss: 0.020256... Val Loss: 2.488694...\n", "Epoch: 241/500... Train Loss: 0.021774... Val Loss: 2.642115...\n", "Epoch: 242/500... Train Loss: 0.020167... Val Loss: 2.856275...\n", "Epoch: 243/500... Train Loss: 0.020475... Val Loss: 3.222082...\n", "Epoch: 244/500... Train Loss: 0.021453... Val Loss: 3.388521...\n", "Epoch: 245/500... Train Loss: 0.020513... Val Loss: 2.884581...\n", "Epoch: 246/500... Train Loss: 0.020868... Val Loss: 3.629084...\n", "Epoch: 247/500... Train Loss: 0.020455... Val Loss: 3.551569...\n", "Epoch: 248/500... Train Loss: 0.020436... Val Loss: 3.524196...\n", "Epoch: 249/500... Train Loss: 0.020132... Val Loss: 4.275754...\n", "Epoch: 250/500... Train Loss: 0.020930... Val Loss: 2.831512...\n", "Epoch: 251/500... Train Loss: 0.020579... Val Loss: 2.925949...\n", "Epoch: 252/500... Train Loss: 0.020979... Val Loss: 2.857159...\n", "Epoch: 253/500... Train Loss: 0.026451... Val Loss: 2.769359...\n", "Epoch: 254/500... Train Loss: 0.039278... Val Loss: 1.562541...\n", "Epoch: 255/500... Train Loss: 0.029179... Val Loss: 1.779745...\n", "Epoch: 256/500... Train Loss: 0.026032... Val Loss: 1.815436...\n", "Epoch: 257/500... Train Loss: 0.025408... Val Loss: 1.830376...\n", "Epoch: 258/500... Train Loss: 0.021993... Val Loss: 2.154009...\n", "Epoch: 259/500... Train Loss: 0.022140... Val Loss: 2.599242...\n", "Epoch: 260/500... Train Loss: 0.031638... Val Loss: 1.702239...\n", "Epoch: 261/500... Train Loss: 0.025297... Val Loss: 1.789304...\n", "Epoch: 262/500... Train Loss: 0.024083... Val Loss: 1.913154...\n", "Epoch: 263/500... Train Loss: 0.021753... Val Loss: 2.271638...\n", "Epoch: 264/500... Train Loss: 0.021266... Val Loss: 2.468373...\n", "Epoch: 265/500... Train Loss: 0.020267... Val Loss: 3.352107...\n", "Epoch: 266/500... Train Loss: 0.020695... Val Loss: 3.025381...\n", "Epoch: 267/500... Train Loss: 0.030592... Val Loss: 1.751655...\n", "Epoch: 268/500... Train Loss: 0.022903... Val Loss: 2.123127...\n", "Epoch: 269/500... Train Loss: 0.023151... Val Loss: 2.155831...\n", "Epoch: 270/500... Train Loss: 0.021357... Val Loss: 2.629830...\n", "Epoch: 271/500... Train Loss: 0.019961... Val Loss: 2.903516...\n", "Epoch: 272/500... Train Loss: 0.019835... Val Loss: 3.281855...\n", "Epoch: 273/500... Train Loss: 0.024207... Val Loss: 2.360197...\n", "Epoch: 274/500... Train Loss: 0.021193... Val Loss: 3.261162...\n", "Epoch: 275/500... Train Loss: 0.020524... Val Loss: 3.322536...\n", "Epoch: 276/500... Train Loss: 0.020967... Val Loss: 3.736187...\n", "Epoch: 277/500... Train Loss: 0.020019... Val Loss: 3.972987...\n", "Epoch: 278/500... Train Loss: 0.020453... Val Loss: 3.882865...\n", "Epoch: 279/500... Train Loss: 0.020123... Val Loss: 3.991740...\n", "Epoch: 280/500... Train Loss: 0.020627... Val Loss: 3.974723...\n", "Epoch: 281/500... Train Loss: 0.020117... Val Loss: 3.896350...\n", "Epoch: 282/500... Train Loss: 0.019928... Val Loss: 4.137518...\n", "Epoch: 283/500... Train Loss: 0.020319... Val Loss: 4.879007...\n", "Epoch: 284/500... Train Loss: 0.019588... Val Loss: 4.586769...\n", "Epoch: 285/500... Train Loss: 0.020896... Val Loss: 4.549685...\n", "Epoch: 286/500... Train Loss: 0.019496... Val Loss: 4.418401...\n", "Epoch: 287/500... Train Loss: 0.028244... Val Loss: 2.372998...\n", "Epoch: 288/500... Train Loss: 0.053724... Val Loss: 1.662404...\n", "Epoch: 289/500... Train Loss: 0.027690... Val Loss: 1.619436...\n", "Epoch: 290/500... Train Loss: 0.025884... Val Loss: 1.822717...\n", "Epoch: 291/500... Train Loss: 0.021599... Val Loss: 2.402675...\n", "Epoch: 292/500... Train Loss: 0.025589... Val Loss: 1.854101...\n", "Epoch: 293/500... Train Loss: 0.022099... Val Loss: 2.147870...\n", "Epoch: 294/500... Train Loss: 0.025161... Val Loss: 2.159490...\n", "Epoch: 295/500... Train Loss: 0.038928... Val Loss: 1.809369...\n", "Epoch: 296/500... Train Loss: 0.024334... Val Loss: 1.927265...\n", "Epoch: 297/500... Train Loss: 0.020845... Val Loss: 2.394363...\n", "Epoch: 298/500... Train Loss: 0.022531... Val Loss: 2.482977...\n", "Epoch: 299/500... Train Loss: 0.022082... Val Loss: 2.399651...\n", "Epoch: 300/500... Train Loss: 0.021502... Val Loss: 2.911141...\n", "Epoch: 301/500... Train Loss: 0.021219... Val Loss: 2.850859...\n", "Epoch: 302/500... Train Loss: 0.020900... Val Loss: 2.758367...\n", "Epoch: 303/500... Train Loss: 0.020887... Val Loss: 3.483757...\n", "Epoch: 304/500... Train Loss: 0.020827... Val Loss: 3.493891...\n", "Epoch: 305/500... Train Loss: 0.020993... Val Loss: 3.707721...\n", "Epoch: 306/500... Train Loss: 0.020101... Val Loss: 4.274689...\n", "Epoch: 307/500... Train Loss: 0.019879... Val Loss: 3.931176...\n", "Epoch: 308/500... Train Loss: 0.020355... Val Loss: 3.809018...\n", "Epoch: 309/500... Train Loss: 0.020418... Val Loss: 3.738297...\n", "Epoch: 310/500... Train Loss: 0.020315... Val Loss: 4.125533...\n", "Epoch: 311/500... Train Loss: 0.026233... Val Loss: 2.925856...\n", "Epoch: 312/500... Train Loss: 0.034155... Val Loss: 1.852935...\n", "Epoch: 313/500... Train Loss: 0.024467... Val Loss: 2.106839...\n", "Epoch: 314/500... Train Loss: 0.026081... Val Loss: 1.817412...\n", "Epoch: 315/500... Train Loss: 0.027030... Val Loss: 1.918529...\n", "Epoch: 316/500... Train Loss: 0.022672... Val Loss: 2.306220...\n", "Epoch: 317/500... Train Loss: 0.023815... Val Loss: 2.277108...\n", "Epoch: 318/500... Train Loss: 0.028058... Val Loss: 2.015899...\n", "Epoch: 319/500... Train Loss: 0.022379... Val Loss: 2.190878...\n", "Epoch: 320/500... Train Loss: 0.022367... Val Loss: 2.679726...\n", "Epoch: 321/500... Train Loss: 0.022806... Val Loss: 3.109700...\n", "Epoch: 322/500... Train Loss: 0.024240... Val Loss: 2.248370...\n", "Epoch: 323/500... Train Loss: 0.027924... Val Loss: 1.946740...\n", "Epoch: 324/500... Train Loss: 0.022572... Val Loss: 2.260990...\n", "Epoch: 325/500... Train Loss: 0.021827... Val Loss: 2.219998...\n", "Epoch: 326/500... Train Loss: 0.022439... Val Loss: 2.202929...\n", "Epoch: 327/500... Train Loss: 0.020436... Val Loss: 2.765480...\n", "Epoch: 328/500... Train Loss: 0.020199... Val Loss: 2.954779...\n", "Epoch: 329/500... Train Loss: 0.020501... Val Loss: 3.101240...\n", "Epoch: 330/500... Train Loss: 0.020405... Val Loss: 3.515565...\n", "Epoch: 331/500... Train Loss: 0.020110... Val Loss: 3.439606...\n", "Epoch: 332/500... Train Loss: 0.019755... Val Loss: 3.620079...\n", "Epoch: 333/500... Train Loss: 0.020807... Val Loss: 4.278937...\n", "Epoch: 334/500... Train Loss: 0.031899... Val Loss: 2.182037...\n", "Epoch: 335/500... Train Loss: 0.023292... Val Loss: 2.647100...\n", "Epoch: 336/500... Train Loss: 0.021942... Val Loss: 2.688616...\n", "Epoch: 337/500... Train Loss: 0.021696... Val Loss: 2.863877...\n", "Epoch: 338/500... Train Loss: 0.022372... Val Loss: 4.104683...\n", "Epoch: 339/500... Train Loss: 0.023866... Val Loss: 3.679112...\n", "Epoch: 340/500... Train Loss: 0.020636... Val Loss: 3.533237...\n", "Epoch: 341/500... Train Loss: 0.020632... Val Loss: 3.790208...\n", "Epoch: 342/500... Train Loss: 0.021220... Val Loss: 2.961669...\n", "Epoch: 343/500... Train Loss: 0.020203... Val Loss: 3.587349...\n", "Epoch: 344/500... Train Loss: 0.019760... Val Loss: 3.650314...\n", "Epoch: 345/500... Train Loss: 0.019638... Val Loss: 4.087805...\n", "Epoch: 346/500... Train Loss: 0.021743... Val Loss: 4.225439...\n", "Epoch: 347/500... Train Loss: 0.019631... Val Loss: 4.147524...\n", "Epoch: 348/500... Train Loss: 0.021100... Val Loss: 4.177906...\n", "Epoch: 349/500... Train Loss: 0.019972... Val Loss: 4.275757...\n", "Epoch: 350/500... Train Loss: 0.020233... Val Loss: 4.604397...\n", "Epoch: 351/500... Train Loss: 0.020044... Val Loss: 4.776625...\n", "Epoch: 352/500... Train Loss: 0.021300... Val Loss: 4.504840...\n", "Epoch: 353/500... Train Loss: 0.019933... Val Loss: 4.756288...\n", "Epoch: 354/500... Train Loss: 0.019969... Val Loss: 5.265389...\n", "Epoch: 355/500... Train Loss: 0.019323... Val Loss: 5.401416...\n", "Epoch: 356/500... Train Loss: 0.020443... Val Loss: 4.907955...\n", "Epoch: 357/500... Train Loss: 0.020222... Val Loss: 4.639568...\n", "Epoch: 358/500... Train Loss: 0.020365... Val Loss: 4.409391...\n", "Epoch: 359/500... Train Loss: 0.035975... Val Loss: 3.903086...\n", "Epoch: 360/500... Train Loss: 0.038968... Val Loss: 1.550172...\n", "Epoch: 361/500... Train Loss: 0.023529... Val Loss: 2.280468...\n", "Epoch: 362/500... Train Loss: 0.028506... Val Loss: 1.893163...\n", "Epoch: 363/500... Train Loss: 0.030977... Val Loss: 1.901543...\n", "Epoch: 364/500... Train Loss: 0.023513... Val Loss: 2.287493...\n", "Epoch: 365/500... Train Loss: 0.022415... Val Loss: 2.227253...\n", "Epoch: 366/500... Train Loss: 0.023743... Val Loss: 2.537370...\n", "Epoch: 367/500... Train Loss: 0.023739... Val Loss: 2.896329...\n", "Epoch: 368/500... Train Loss: 0.023807... Val Loss: 2.495145...\n", "Epoch: 369/500... Train Loss: 0.023536... Val Loss: 3.993017...\n", "Epoch: 370/500... Train Loss: 0.023337... Val Loss: 3.114121...\n", "Epoch: 371/500... Train Loss: 0.021223... Val Loss: 3.268380...\n", "Epoch: 372/500... Train Loss: 0.021023... Val Loss: 4.005463...\n", "Epoch: 373/500... Train Loss: 0.022726... Val Loss: 3.766997...\n", "Epoch: 374/500... Train Loss: 0.020030... Val Loss: 3.755084...\n", "Epoch: 375/500... Train Loss: 0.020331... Val Loss: 4.197775...\n", "Epoch: 376/500... Train Loss: 0.019696... Val Loss: 4.393345...\n", "Epoch: 377/500... Train Loss: 0.020260... Val Loss: 4.759975...\n", "Epoch: 378/500... Train Loss: 0.019830... Val Loss: 4.751282...\n", "Epoch: 379/500... Train Loss: 0.019040... Val Loss: 4.818179...\n", "Epoch: 380/500... Train Loss: 0.021591... Val Loss: 4.910303...\n", "Epoch: 381/500... Train Loss: 0.020281... Val Loss: 4.942854...\n", "Epoch: 382/500... Train Loss: 0.019863... Val Loss: 4.837205...\n", "Epoch: 383/500... Train Loss: 0.024857... Val Loss: 3.870760...\n", "Epoch: 384/500... Train Loss: 0.027987... Val Loss: 2.247879...\n", "Epoch: 385/500... Train Loss: 0.037347... Val Loss: 1.603619...\n", "Epoch: 386/500... Train Loss: 0.026509... Val Loss: 2.532210...\n", "Epoch: 387/500... Train Loss: 0.022146... Val Loss: 2.136464...\n", "Epoch: 388/500... Train Loss: 0.023711... Val Loss: 2.194458...\n", "Epoch: 389/500... Train Loss: 0.026546... Val Loss: 2.148482...\n", "Epoch: 390/500... Train Loss: 0.023961... Val Loss: 3.132200...\n", "Epoch: 391/500... Train Loss: 0.028657... Val Loss: 1.940427...\n", "Epoch: 392/500... Train Loss: 0.022182... Val Loss: 2.837315...\n", "Epoch: 393/500... Train Loss: 0.020590... Val Loss: 3.377629...\n", "Epoch: 394/500... Train Loss: 0.021371... Val Loss: 3.239631...\n", "Epoch: 395/500... Train Loss: 0.020038... Val Loss: 3.823834...\n", "Epoch: 396/500... Train Loss: 0.019844... Val Loss: 4.015614...\n", "Epoch: 397/500... Train Loss: 0.019954... Val Loss: 4.115014...\n", "Epoch: 398/500... Train Loss: 0.019961... Val Loss: 4.397025...\n", "Epoch: 399/500... Train Loss: 0.020459... Val Loss: 4.408778...\n", "Epoch: 400/500... Train Loss: 0.020041... Val Loss: 4.668885...\n", "Epoch: 401/500... Train Loss: 0.022333... Val Loss: 3.745476...\n", "Epoch: 402/500... Train Loss: 0.020514... Val Loss: 4.887287...\n", "Epoch: 403/500... Train Loss: 0.020065... Val Loss: 4.773675...\n", "Epoch: 404/500... Train Loss: 0.022134... Val Loss: 4.063301...\n", "Epoch: 405/500... Train Loss: 0.035303... Val Loss: 1.405065...\n", "Epoch: 406/500... Train Loss: 0.028574... Val Loss: 1.714277...\n", "Epoch: 407/500... Train Loss: 0.021356... Val Loss: 2.336153...\n", "Epoch: 408/500... Train Loss: 0.023462... Val Loss: 2.045509...\n", "Epoch: 409/500... Train Loss: 0.021201... Val Loss: 3.221135...\n", "Epoch: 410/500... Train Loss: 0.020421... Val Loss: 3.444168...\n", "Epoch: 411/500... Train Loss: 0.020133... Val Loss: 3.836624...\n", "Epoch: 412/500... Train Loss: 0.021640... Val Loss: 3.206251...\n", "Epoch: 413/500... Train Loss: 0.023762... Val Loss: 2.408802...\n", "Epoch: 414/500... Train Loss: 0.024467... Val Loss: 2.257603...\n", "Epoch: 415/500... Train Loss: 0.021497... Val Loss: 3.059852...\n", "Epoch: 416/500... Train Loss: 0.023022... Val Loss: 2.905918...\n", "Epoch: 417/500... Train Loss: 0.023652... Val Loss: 3.237273...\n", "Epoch: 418/500... Train Loss: 0.023405... Val Loss: 3.436985...\n", "Epoch: 419/500... Train Loss: 0.024100... Val Loss: 2.235121...\n", "Epoch: 420/500... Train Loss: 0.019655... Val Loss: 2.998418...\n", "Epoch: 421/500... Train Loss: 0.020113... Val Loss: 3.728573...\n", "Epoch: 422/500... Train Loss: 0.021153... Val Loss: 3.785539...\n", "Epoch: 423/500... Train Loss: 0.021592... Val Loss: 3.923663...\n", "Epoch: 424/500... Train Loss: 0.020085... Val Loss: 4.227946...\n", "Epoch: 425/500... Train Loss: 0.020283... Val Loss: 4.630500...\n", "Epoch: 426/500... Train Loss: 0.020119... Val Loss: 5.147719...\n", "Epoch: 427/500... Train Loss: 0.019864... Val Loss: 4.982406...\n", "Epoch: 428/500... Train Loss: 0.019974... Val Loss: 4.485955...\n", "Epoch: 429/500... Train Loss: 0.020380... Val Loss: 4.962116...\n", "Epoch: 430/500... Train Loss: 0.021469... Val Loss: 4.136342...\n", "Epoch: 431/500... Train Loss: 0.020586... Val Loss: 4.877401...\n", "Epoch: 432/500... Train Loss: 0.021309... Val Loss: 3.675652...\n", "Epoch: 433/500... Train Loss: 0.020100... Val Loss: 3.829436...\n", "Epoch: 434/500... Train Loss: 0.020154... Val Loss: 4.081827...\n", "Epoch: 435/500... Train Loss: 0.021326... Val Loss: 4.433895...\n", "Epoch: 436/500... Train Loss: 0.020316... Val Loss: 4.820951...\n", "Epoch: 437/500... Train Loss: 0.022010... Val Loss: 4.519993...\n", "Epoch: 438/500... Train Loss: 0.029720... Val Loss: 2.164895...\n", "Epoch: 439/500... Train Loss: 0.026686... Val Loss: 2.480234...\n", "Epoch: 440/500... Train Loss: 0.030891... Val Loss: 2.001900...\n", "Epoch: 441/500... Train Loss: 0.024060... Val Loss: 2.054771...\n", "Epoch: 442/500... Train Loss: 0.022288... Val Loss: 2.238473...\n", "Epoch: 443/500... Train Loss: 0.020532... Val Loss: 2.511947...\n", "Epoch: 444/500... Train Loss: 0.020326... Val Loss: 2.853321...\n", "Epoch: 445/500... Train Loss: 0.019782... Val Loss: 3.419680...\n", "Epoch: 446/500... Train Loss: 0.020780... Val Loss: 3.094258...\n", "Epoch: 447/500... Train Loss: 0.019791... Val Loss: 3.400031...\n", "Epoch: 448/500... Train Loss: 0.020272... Val Loss: 3.819223...\n", "Epoch: 449/500... Train Loss: 0.019909... Val Loss: 4.090826...\n", "Epoch: 450/500... Train Loss: 0.022594... Val Loss: 3.884601...\n", "Epoch: 451/500... Train Loss: 0.022216... Val Loss: 3.238171...\n", "Epoch: 452/500... Train Loss: 0.042207... Val Loss: 3.159326...\n", "Epoch: 453/500... Train Loss: 0.022645... Val Loss: 2.965451...\n", "Epoch: 454/500... Train Loss: 0.021131... Val Loss: 3.125583...\n", "Epoch: 455/500... Train Loss: 0.020659... Val Loss: 3.704570...\n", "Epoch: 456/500... Train Loss: 0.023942... Val Loss: 3.635116...\n", "Epoch: 457/500... Train Loss: 0.027769... Val Loss: 2.586213...\n", "Epoch: 458/500... Train Loss: 0.026672... Val Loss: 2.113365...\n", "Epoch: 459/500... Train Loss: 0.021015... Val Loss: 2.600618...\n", "Epoch: 460/500... Train Loss: 0.022201... Val Loss: 2.629578...\n", "Epoch: 461/500... Train Loss: 0.020520... Val Loss: 3.339693...\n", "Epoch: 462/500... Train Loss: 0.020640... Val Loss: 3.580346...\n", "Epoch: 463/500... Train Loss: 0.020345... Val Loss: 3.946133...\n", "Epoch: 464/500... Train Loss: 0.024101... Val Loss: 3.169245...\n", "Epoch: 465/500... Train Loss: 0.028706... Val Loss: 3.272451...\n", "Epoch: 466/500... Train Loss: 0.028992... Val Loss: 2.294782...\n", "Epoch: 467/500... Train Loss: 0.021662... Val Loss: 2.976748...\n", "Epoch: 468/500... Train Loss: 0.021610... Val Loss: 3.261202...\n", "Epoch: 469/500... Train Loss: 0.020061... Val Loss: 3.078874...\n", "Epoch: 470/500... Train Loss: 0.023645... Val Loss: 3.717128...\n", "Epoch: 471/500... Train Loss: 0.020847... Val Loss: 4.000367...\n", "Epoch: 472/500... Train Loss: 0.021461... Val Loss: 4.715924...\n", "Epoch: 473/500... Train Loss: 0.025884... Val Loss: 2.477934...\n", "Epoch: 474/500... Train Loss: 0.020977... Val Loss: 2.638271...\n", "Epoch: 475/500... Train Loss: 0.019654... Val Loss: 3.505699...\n", "Epoch: 476/500... Train Loss: 0.022706... Val Loss: 3.837304...\n", "Epoch: 477/500... Train Loss: 0.020571... Val Loss: 4.200784...\n", "Epoch: 478/500... Train Loss: 0.019493... Val Loss: 4.294333...\n", "Epoch: 479/500... Train Loss: 0.019839... Val Loss: 4.364811...\n", "Epoch: 480/500... Train Loss: 0.020699... Val Loss: 4.522475...\n", "Epoch: 481/500... Train Loss: 0.019974... Val Loss: 4.187008...\n", "Epoch: 482/500... Train Loss: 0.019787... Val Loss: 4.175766...\n", "Epoch: 483/500... Train Loss: 0.022381... Val Loss: 4.395740...\n", "Epoch: 484/500... Train Loss: 0.020985... Val Loss: 4.581720...\n", "Epoch: 485/500... Train Loss: 0.020138... Val Loss: 4.809144...\n", "Epoch: 486/500... Train Loss: 0.019871... Val Loss: 4.916452...\n", "Epoch: 487/500... Train Loss: 0.020556... Val Loss: 4.770509...\n", "Epoch: 488/500... Train Loss: 0.019706... Val Loss: 4.913264...\n", "Epoch: 489/500... Train Loss: 0.020101... Val Loss: 5.025543...\n", "Epoch: 490/500... Train Loss: 0.019308... Val Loss: 5.129724...\n", "Epoch: 491/500... Train Loss: 0.020467... Val Loss: 5.154365...\n", "Epoch: 492/500... Train Loss: 0.019866... Val Loss: 5.071539...\n", "Epoch: 493/500... Train Loss: 0.019426... Val Loss: 5.003478...\n", "Epoch: 494/500... Train Loss: 0.019882... Val Loss: 5.223813...\n", "Epoch: 495/500... Train Loss: 0.022879... Val Loss: 4.529511...\n", "Epoch: 496/500... Train Loss: 0.020365... Val Loss: 4.499663...\n", "Epoch: 497/500... Train Loss: 0.019755... Val Loss: 4.456593...\n", "Epoch: 498/500... Train Loss: 0.021356... Val Loss: 4.378555...\n", "Epoch: 499/500... Train Loss: 0.023942... Val Loss: 3.320763...\n", "Epoch: 500/500... Train Loss: 0.036395... Val Loss: 1.933613...\n" ] } ] }, { "cell_type": "code", "source": [ "# Load the best model\n", "net.load_state_dict(torch.load('state_dict.pt'))\n", "\n", "# Evaluate on validation set\n", "net.eval()\n", "y_preds = []\n", "y_true = []\n", "y_probs = []\n", "with torch.no_grad():\n", " for inputs, labels in valid_loader:\n", " # Move data to GPU if available\n", " if train_on_gpu:\n", " inputs, labels = inputs.cuda(), labels.cuda()\n", " else:\n", " inputs, labels = inputs, labels\n", "\n", " # Initialize hidden state based on actual batch size\n", " val_h = net.init_hidden(inputs.size(0), train_on_gpu)\n", " val_h = tuple([each.data for each in val_h])\n", "\n", " outputs, val_h = net(inputs, val_h)\n", "\n", " # Save predictions for evaluation metrics\n", " probs = outputs.squeeze().detach().cpu().numpy()\n", " preds = torch.round(outputs.squeeze())\n", " y_probs.extend(probs)\n", " y_preds.extend(preds.detach().cpu().numpy())\n", " y_true.extend(labels.detach().cpu().numpy())\n", "\n", "# Calculate evaluation metrics on validation set\n", "accuracy = accuracy_score(y_true, y_preds)\n", "precision = precision_score(y_true, y_preds)\n", "recall = recall_score(y_true, y_preds)\n", "f1 = f1_score(y_true, y_preds)\n", "confusion = confusion_matrix(y_true, y_preds)\n", "\n", "print(\"\\nEvaluation Metrics on Validation Set:\")\n", "print(f\"Accuracy: {accuracy:.4f}\")\n", "print(f\"Precision: {precision:.4f}\")\n", "print(f\"Recall (Sensitivity): {recall:.4f}\")\n", "print(f\"F1-Score: {f1:.4f}\")\n", "print(\"Confusion Matrix:\")\n", "print(confusion)\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "SIUpAxKHvZ91", "outputId": "52e73dbd-34f7-4a41-c4de-e789a7982aa4" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\n", "Evaluation Metrics on Validation Set:\n", "Accuracy: 0.8102\n", "Precision: 0.8257\n", "Recall (Sensitivity): 0.6852\n", "F1-Score: 0.7489\n", "Confusion Matrix:\n", "[[803 91]\n", " [198 431]]\n" ] } ] }, { "cell_type": "code", "source": [ "# Confusion Matrix Heatmap\n", "plt.figure(figsize=(8,6))\n", "sns.heatmap(confusion, annot=True, fmt='d', cmap='Blues',\n", " xticklabels=['Not Disaster', 'Disaster'],\n", " yticklabels=['Not Disaster', 'Disaster'])\n", "plt.xlabel('Predicted Label')\n", "plt.ylabel('True Label')\n", "plt.title('Confusion Matrix Heatmap')\n", "plt.show()\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 564 }, "id": "80Z1bv9Uvdar", "outputId": "01a8208c-b819-4eec-a7a0-3dfa8279976d" }, "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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Xz179lRCQoICAwPl5+enAQMGKDo6WvXr15cktWzZUlFRUeratasmTJigtLQ0Pffcc4qPjy90NfOKHlyZN2+eGjZsqPDwcP3666+SpNdee02fffbZlZwOAAAAkn777Tc99NBDqlKlijp27KigoCBt3LhRwcHBkqRJkyapbdu26tChgxo3bqywsDB9/PHHjuOLFSumxYsXq1ixYoqOjtYjjzyibt26aezYsYWOxWZcbqLhZUybNk0jR47UwIED9cILL+jHH39UxYoVNXv2bM2ZM0erV68udBBXm3et/laHAMBFTm55w+oQALhICQtXb+4853uXnft/cbVcdm5XKnQlccqUKZo5c6aeffZZFStWzNFet25d7dy586oGBwAAAGsUOmdPTk5WrVrmjNhut+v06dNXJSgAAIBryVZE5iQWJYWuJFaoUEHbt283tS9dulTVqlW7GjEBAABcUx42123Xq0JXEhMSEhQfH6/s7GwZhqHNmzfr/fffV2Jiot5++21XxAgAAIBrrNBJYq9eveTt7a3nnntOZ86c0cMPP6zw8HC9/vrr6ty5sytiBAAAcCmGm82u6DmiLl26qEuXLjpz5oyysrIcizUCAADgxnDFD5sfPXpUe/bskfRn9n1h/R4AAIDrDYVEs0I/uHLq1Cl17dpV4eHhatKkiZo0aaLw8HA98sgjysjIcEWMAAAAuMYKnST26tVLmzZt0pdffqn09HSlp6dr8eLF+u677/TYY4+5IkYAAACXstlsLtuuV4Uebl68eLG+/vprNWrUyNEWGxurmTNnqlWrVlc1OAAAAFij0EliUFCQ/P39Te3+/v4qXbr0VQkKAADgWrqe1zN0lUIPNz/33HNKSEhQWlqaoy0tLU1DhgzRiBEjrmpwAAAA1wLDzWYFqiTWqlXL6UPu27dPERERioiIkCSlpKTIbrfr2LFjzEsEAAC4ARQoSWzXrp2LwwAAALDO9Vvvc50CJYmjRo1ydRwAAAAoQq54MW0AAIAbhcd1PHfQVQqdJObl5WnSpElauHChUlJSlJub67T/xIkTVy04AAAAWKPQTzePGTNGEydOVKdOnZSRkaGEhAS1b99eHh4eGj16tAtCBAAAcC2bzXXb9arQSeL8+fM1c+ZMPfXUUypevLgeeughvf322xo5cqQ2btzoihgBAABwjRU6SUxLS1P16tUlSb6+vo73Nbdt21Zffvnl1Y0OAADgGmCdRLNCJ4lly5ZVamqqJOmWW27RsmXLJElbtmyR3W6/utEBAADAEoVOEh944AGtXLlSkjRgwACNGDFClStXVrdu3fToo49e9QABAABcjTmJZoV+uvnFF190/LpTp06KjIzUhg0bVLlyZd17771XNTgAAIBrgSVwzApdSbxY/fr1lZCQoHr16mn8+PFXIyYAAABY7F8niRekpqZqxIgRV+t0AAAA1wzDzWZXLUkEAADAjYPX8gEAALd3PS9V4ypUEgEAAGBS4EpiQkLC3+4/duzYvw7matmxdILVIQBwkRFL91gdAgAXebltFcuuTdXMrMBJ4vfff/+PfRo3bvyvggEAAEDRUOAkcfXq1a6MAwAAwDLMSTTjwRUAAOD2PMgRTRiCBwAAgAmVRAAA4PaoJJpRSQQAAIAJlUQAAOD2eHDF7Ioqid9++60eeeQRRUdH6/fff5ckzZs3T+vWrbuqwQEAAMAahU4SP/roI8XGxsrb21vff/+9cnJyJEkZGRkaP378VQ8QAADA1TxsrtuuV4VOEseNG6fp06dr5syZ8vT0dLQ3bNhQ27Ztu6rBAQAAwBqFnpO4Z8+eS75Zxd/fX+np6VcjJgAAgGuKKYlmha4khoWFaf/+/ab2devWqWLFilclKAAAgGvJw2Zz2Xa9KnSS2Lt3bz355JPatGmTbDabDh8+rPnz52vw4MHq27evK2IEAADANVbo4eZhw4YpPz9fLVq00JkzZ9S4cWPZ7XYNHjxYAwYMcEWMAAAALsXC0WaFThJtNpueffZZDRkyRPv371dWVpaioqLk6+vrivgAAABggSteTNvLy0tRUVFXMxYAAABLXMdTB12m0Elis2bN/nZV8lWrVv2rgAAAAGC9QieJNWvWdPr53Llz2r59u3788UfFxcVdrbgAAACumev5KWRXKXSSOGnSpEu2jx49WllZWf86IAAAAFjvqj3M88gjj+jdd9+9WqcDAAC4Zmw2123Xqyt+cOViSUlJKlGixNU6HQAAwDVzPb9j2VUKnSS2b9/e6WfDMJSamqrvvvtOI0aMuGqBAQAAwDqFThL9/f2dfvbw8FCVKlU0duxYtWzZ8qoFBgAAcK3w4IpZoZLEvLw89ejRQ9WrV1fp0qVdFRMAAAAsVqgHV4oVK6aWLVsqPT3dReEAAABcezy4Ylbop5tvv/12HThwwBWxAAAA4C9efPFF2Ww2DRw40NGWnZ2t+Ph4BQUFydfXVx06dNCRI0ecjktJSVGbNm1UsmRJhYSEaMiQITp//nyhrl3oJHHcuHEaPHiwFi9erNTUVGVmZjptAAAA1xsPm+u2K7Vlyxa99dZbuuOOO5zaBw0apC+++EKLFi3SmjVrdPjwYacHi/Py8tSmTRvl5uZqw4YNmjNnjmbPnq2RI0cW7p4UtOPYsWN1+vRp3XPPPdqxY4fuu+8+lS1bVqVLl1bp0qUVEBDAPEUAAICrICsrS126dNHMmTOd8quMjAy98847mjhxopo3b646depo1qxZ2rBhgzZu3ChJWrZsmX766Se99957qlmzplq3bq3nn39eU6dOVW5uboFjKPCDK2PGjNHjjz+u1atXF+IjAgAAFH02uW7yYE5OjnJycpza7Ha77Hb7ZY+Jj49XmzZtFBMTo3Hjxjnat27dqnPnzikmJsbRVrVqVUVERCgpKUn169dXUlKSqlevrtDQUEef2NhY9e3bV7t27VKtWrUKFHeBk0TDMCRJTZo0KeghAAAA1wVXLqadmJioMWPGOLWNGjVKo0ePvmT///3vf9q2bZu2bNli2peWliYvLy8FBAQ4tYeGhiotLc3R568J4oX9F/YVVKGWwLFdz4/oAAAAWGD48OFKSEhwartcFfHQoUN68skntXz5csvfZFeoJPHWW2/9x0TxxIkT/yogAACAa82VlcR/Glr+q61bt+ro0aOqXbu2oy0vL09r167VG2+8oa+//lq5ublKT093qiYeOXJEYWFhkqSwsDBt3rzZ6bwXnn6+0KcgCpUkjhkzxvTGFQAAAFwdLVq00M6dO53aevTooapVq2ro0KEqV66cPD09tXLlSnXo0EGStGfPHqWkpCg6OlqSFB0drRdeeEFHjx5VSEiIJGn58uXy8/NTVFRUgWMpVJLYuXNnx8UAAABuFEVlSl2pUqV0++23O7X5+PgoKCjI0d6zZ08lJCQoMDBQfn5+GjBggKKjo1W/fn1JUsuWLRUVFaWuXbtqwoQJSktL03PPPaf4+PgCVzSlQiSJReXmAQAAuLNJkybJw8NDHTp0UE5OjmJjY/Xmm2869hcrVkyLFy9W3759FR0dLR8fH8XFxWns2LGFuo7NuPDY8j/w8PBQWlradVFJ3HvkjNUhAHCRmVsOWR0CABd5uW0Vy6796hrXvU3uqSYVXXZuVypwJTE/P9+VcQAAAKAIKdScRAAAgBsRs+rMSBIBAIDb8yBLNCnwu5sBAADgPqgkAgAAt+fKxbSvV1QSAQAAYEIlEQAAuD2mJJpRSQQAAIAJlUQAAOD2PEQp8WJUEgEAAGBCJREAALg95iSakSQCAAC3xxI4Zgw3AwAAwIRKIgAAcHu8ls+MSiIAAABMqCQCAAC3RyHRjEoiAAAATKgkAgAAt8ecRDMqiQAAADChkggAANwehUQzkkQAAOD2GFo1454AAADAhEoiAABwezbGm02oJAIAAMCESiIAAHB71BHNqCQCAADAhEoiAABweyymbUYlEQAAACZUEgEAgNujjmhGkggAANweo81mDDcDAADAhEoiAABweyymbUYlEQAAACZUEgEAgNujambGPQEAAIAJlUQAAOD2mJNoRiURAAAAJlQSAQCA26OOaEYlEQAAACZUEgEAgNtjTqIZSSIAAHB7DK2acU8AAABgQiURAAC4PYabzagkAgAAwIRKIgAAcHvUEc2oJAIAAMCESiIAAHB7TEk0o5IIAAAAEyqJAADA7XkwK9GEJBEAALg9hpvNGG4GAACACZVEAADg9mwMN5tYXknMy8vT2rVrlZ6ebnUoAAAA+P8sTxKLFSumli1b6uTJk1aHAgAA3JTN5rrtemV5kihJt99+uw4cOGB1GAAAAJaaNm2a7rjjDvn5+cnPz0/R0dFasmSJY392drbi4+MVFBQkX19fdejQQUeOHHE6R0pKitq0aaOSJUsqJCREQ4YM0fnz5wsdS5FIEseNG6fBgwdr8eLFSk1NVWZmptMGAADgSh6yuWwrjLJly+rFF1/U1q1b9d1336l58+a6//77tWvXLknSoEGD9MUXX2jRokVas2aNDh8+rPbt2zuOz8vLU5s2bZSbm6sNGzZozpw5mj17tkaOHFnoe2IzDMMo9FFXmYfH/+Wqtr/UZQ3DkM1mU15eXqHOt/fImasWG4CiZeaWQ1aHAMBFXm5bxbJrL911zGXnbnVb8L86PjAwUC+//LIefPBBBQcHa8GCBXrwwQclST///LOqVaumpKQk1a9fX0uWLFHbtm11+PBhhYaGSpKmT5+uoUOH6tixY/Ly8irwdYvE082rV6+2OgQAAODGXDl3MCcnRzk5OU5tdrtddrv9b4/Ly8vTokWLdPr0aUVHR2vr1q06d+6cYmJiHH2qVq2qiIgIR5KYlJSk6tWrOxJESYqNjVXfvn21a9cu1apVq8BxF4kksUmTJlaHAAAA3Jgrk8TExESNGTPGqW3UqFEaPXr0Jfvv3LlT0dHRys7Olq+vrz755BNFRUVp+/bt8vLyUkBAgFP/0NBQpaWlSZLS0tKcEsQL+y/sK4wiMSdRkr799ls98sgjatCggX7//XdJ0rx587Ru3TqLIwMAALhyw4cPV0ZGhtM2fPjwy/avUqWKtm/frk2bNqlv376Ki4vTTz/9dA0j/lORSBI/+ugjxcbGytvbW9u2bXOUZDMyMjR+/HiLowMAADc6mwv/s9vtjqeVL2x/N9Ts5eWlSpUqqU6dOkpMTFSNGjX0+uuvKywsTLm5uaa1pY8cOaKwsDBJUlhYmOlp5ws/X+hTUEUiSRw3bpymT5+umTNnytPT09HesGFDbdu2zcLIAAAArJWfn6+cnBzVqVNHnp6eWrlypWPfnj17lJKSoujoaElSdHS0du7cqaNHjzr6LF++XH5+foqKiirUdYvEnMQ9e/aocePGpnZ/f3/exAIAAFzOo4gsej18+HC1bt1aEREROnXqlBYsWKBvvvlGX3/9tfz9/dWzZ08lJCQoMDBQfn5+GjBggKKjo1W/fn1JUsuWLRUVFaWuXbtqwoQJSktL03PPPaf4+Ph/fFDmYkUiSQwLC9P+/ftVvnx5p/Z169apYsWK1gQFAABwjR09elTdunVTamqq/P39dccdd+jrr7/W3XffLUmaNGmSPDw81KFDB+Xk5Cg2NlZvvvmm4/hixYpp8eLF6tu3r6Kjo+Xj46O4uDiNHTu20LEUiSSxd+/eevLJJ/Xuu+/KZrPp8OHDSkpK0uDBgzVixAirwwMAADc4WyEXvXaVd95552/3lyhRQlOnTtXUqVMv2ycyMlJfffXVv46lSCSJw4YNU35+vlq0aKEzZ86ocePGstvtGjx4sAYMGGB1eAAAAG6nSCSJNptNzz77rIYMGaL9+/crKytLUVFR8vX1tTo0AADgBly5TuL1qkg83fzoo4/q1KlT8vLyUlRUlP7zn//I19dXp0+f1qOPPmp1eAAA4AbnyiVwrldFIkmcM2eOzp49a2o/e/as5s6da0FEAAAA7s3S4ebMzEwZhiHDMHTq1CmVKFHCsS8vL09fffWVQkJCLIwQAAC4g6KyBE5RYmmSGBAQIJvNJpvNpltvvdW032azmd51CAAAANezNElcvXq1DMNQ8+bN9dFHHykwMNCxz8vLS5GRkQoPD7cwQgAA4A6u57mDrmJpktikSRNJUnJysiIiImTj0SIAAIAioUgsgbN7924dOnRIjRo1kiRNnTpVM2fOVFRUlKZOnarSpUtbHCGutR+3b9XH/5urX/b8pBPH/9AzL0xU9F3NHPtPnjiu2dNf1/YtScrKytLtNWrrsSefVni5yP/rc/wPvTvtNW3/bqPOnjmtm8uVV8euPdWwaYwVHwnAJexb+aF2fzVXFe+6V7e36y1J2rFoqo7t26HsjBMqbi+hwPJVVa1Nd5UKLes4bucnM3Ti4G6dSv1VvqHl1PSp1636CLhBUKcyKxJPNw8ZMkSZmZmSpJ07dyohIUH33HOPkpOTlZCQYHF0sEJ29llVuOVWPT5ouGmfYRh64dlBOnL4Nz07/jW9/s77Cg4to+cSHlf2X56Sn/jCCP2eclAjxr+mN2YvUoPGzTVh9FD9svfna/lRAFzGyZR9+nXjUvmVKe/U7l/2FtXq9ISaD52q+n3GyDCkjTNGysjPc+oXcWeMwmvedQ0jBtxLkUgSk5OTFRUVJUn66KOPdO+992r8+PGaOnWqlixZYnF0sELd+o3UtXe8ohs3N+07/FuK9uzaqb5PPatbq92mshHl1e+pZ5Sbk6M1K//vz8vPu3aobYfOujXqdoWFl1WnuN7y8S2l/Xt/upYfBcAlnM85q23zX1WN//aXZ0nnFyeUj26loFtuV8nAUAWUvUVVW3fR2fQ/dObEUUef6g/0UYVGbVQyKPRah44blM2F2/WqSCSJXl5eOnPmjCRpxYoVatmypSQpMDDQUWEELjiXmyvpzz83F3h4eMjT00s//bDd0Vb1thr6dtUyncrMUH5+vtauXKrc3BxVr1n3WocM4CI/fDxdoVF1FXxrzb/tdz4nW4e2rFTJwFB5B9x0bYKDW/Kw2Vy2Xa+KxJzERo0aKSEhQQ0bNtTmzZv1wQcfSJL27t2rsmXL/u2xOTk5ysnJcWrLzcmTl93usnhhrbKR5RUcGqY5M6ao/+DnZC/hrc8Wvqc/jh3RyeN/OPoNHTNBE0YP1cNtm6pYseKylyihZ8ZNVHjZCAujB/D792uV8dsBNR746mX7JK//Sj8tnq283Gz5Bt+s6MfGyqO45zWMEkCRqCS+8cYbKl68uD788ENNmzZNN998syRpyZIlatWq1d8em5iYKH9/f6ftrcmvXIuwYZHixT31zLhXdfjQr3qoTRM92DJaO7//TnXqNZTtL6uhzn9nqk5nndK4SdM1aeZ7atfxEU0Y/bQO/rLPwugB93b25DHt/HSmandJUDFPr8v2K1u7iZokvKaG/cbLJ/hmfTdvgvLO5V7DSOFuGG42KxKVxIiICC1evNjUPmnSpH88dvjw4aaHW1LS8y7TGzeKSlWiNPndD3Q665TOnz8n/4BAPfVYV1Wq8ufc1tTfD2nxxx/ojTkfKrLCLZKkCpWqaNcP2/TlJx8ofvBzVoYPuK30335RblaG1k4a5Ggz8vN1/MAuJa//Um1f+kg2j2Ly9PaRp7ePfIPDVTqyipaMeFipO5NUtnYTC6MH3EuRSBL/Kjs7W7m5zv+36Ofnd9n+drtd9ouGlr3OnnFJbCh6fHxLSZIOH/pV+/f8pC49+0mScrKzJck0F8TDo5gMw7i2QQJwCK58h5oOnuLUtv2D1+UbUlaVmnWQzaOY6RhDkgxD+efPX5sg4Z6u55KfixSJJPH06dMaOnSoFi5cqOPHj5v25+VRGXQ3Z8+cUervhxw/H0n9XQf27ZGvn59CQsto3erl8g8oreDQMB38ZZ9mTnlZ9Ro1Ve3/REv6c95imZvLaeor4/RovwSV8vfXxm9Xa/t3GzXyRdZTA6xSvERJ+ZWJdGor5lVCXiVLya9MpE4fT9Ph7d8q+NZa8vL1V3b6H9q36iN5eNoVWq2O45isPw4rLydbOafSlXcuVxm/H5AklQotx9xF4CopEkni008/rdWrV2vatGnq2rWrpk6dqt9//11vvfWWXnzxRavDgwX27/lJzzzZ2/HzO2/8OcG9eat7NeiZsTpx/JjeeeNVpZ88rtJBN6l5bFt1iuvj6F+8uKdGT5ii2W9N1vPDn9TZs2dU5uZyGvjMWNWNZl01oKgqVtxTxw/8pF/Wfq5zZ0/L7hugoIq36a4BL8leKsDRb8fCN3T8lx8dP6+ZOFCSFPPsTJUMZFkcFB6v5TOzGUVg7C0iIkJz585V06ZN5efnp23btqlSpUqaN2+e3n//fX311VeFOt/eIww3AzeqmVsO/XMnANell9tWsezam37JcNm5693i77Jzu1KReLr5xIkTqlixoqQ/5x+eOHFC0p9L46xdu9bK0AAAgBuw2Vy3Xa+KRJJYsWJFJScnS5KqVq2qhQsXSpK++OILBQQEWBgZAABwByyBY1YkksQePXpox44dkqRhw4Zp6tSpKlGihAYNGqQhQ4ZYHB0AAID7KRIPrgwa9H/rZcXExOjnn3/W1q1bValSJd1xxx0WRgYAANzC9Vzyc5EikSReLDIyUv7+/gw1AwAAWKRIDDe/9NJLjvc1S1LHjh0VFBSkm2++2TEMDQAA4Co2F/53vSoSSeL06dNVrlw5SdLy5cu1fPlyLVmyRK1bt2ZOIgAAgAWKxHBzWlqaI0lcvHixOnbsqJYtW6p8+fKqV6+exdEBAIAb3fW8VI2rFIlKYunSpXXo0J8L5C5dulQxMTGSJMMweCUfAACABYpEJbF9+/Z6+OGHVblyZR0/flytW7eWJH3//feqVKmSxdEBAIAbHYVEsyKRJE6aNEnly5fXoUOHNGHCBPn6+kqSUlNT1a9fP4ujAwAANzyyRJMi8e7mq413NwM3Lt7dDNy4rHx387ZfM1127tqRfi47tytZVkn8/PPP1bp1a3l6eurzzz//27733XffNYoKAAC4o+t5qRpXsSxJbNeundLS0hQSEqJ27dpdtp/NZuPhFQAAgGvMsiQxPz//kr8GAAC41lgCx8zyB1fy8/M1e/Zsffzxxzp48KBsNpsqVqyoDh06qGvXrrLxuwYAAHDNWbpOomEYuu+++9SrVy/9/vvvql69um677TYdPHhQ3bt31wMPPGBleAAAwE3YXLhdryytJM6ePVtr167VypUr1axZM6d9q1atUrt27TR37lx169bNoggBAADck6WVxPfff1/PPPOMKUGUpObNm2vYsGGaP3++BZEBAAC3QinRxNIk8YcfflCrVq0uu79169basWPHNYwIAAC4I5sL/7teWZoknjhxQqGhoZfdHxoaqpMnT17DiAAAACBZPCcxLy9PxYtfPoRixYrp/Pnz1zAiAADgjlhMxczSJNEwDHXv3l12u/2S+3Nycq5xRAAAAJAsThLj4uL+sQ9PNgMAAFejkGhmaZI4a9YsKy8PAACAy7D8jSsAAACWo5RoYunTzQAAACiaqCQCAAC3dz2vZ+gqVBIBAABgQiURAAC4PdZJNCNJBAAAbo8c0YzhZgAAAJhQSQQAAKCUaEIlEQAAACZUEgEAgNtjCRwzKokAAABFRGJiou68806VKlVKISEhateunfbs2ePUJzs7W/Hx8QoKCpKvr686dOigI0eOOPVJSUlRmzZtVLJkSYWEhGjIkCE6f/58oWIhSQQAAG7PZnPdVhhr1qxRfHy8Nm7cqOXLl+vcuXNq2bKlTp8+7egzaNAgffHFF1q0aJHWrFmjw4cPq3379o79eXl5atOmjXJzc7VhwwbNmTNHs2fP1siRIwt3TwzDMAoXftG398gZq0MA4CIztxyyOgQALvJy2yqWXXtPmutyhyphJa/42GPHjikkJERr1qxR48aNlZGRoeDgYC1YsEAPPvigJOnnn39WtWrVlJSUpPr162vJkiVq27atDh8+rNDQUEnS9OnTNXToUB07dkxeXl4FujaVRAAA4PZsLtxycnKUmZnptOXk5BQoroyMDElSYGCgJGnr1q06d+6cYmJiHH2qVq2qiIgIJSUlSZKSkpJUvXp1R4IoSbGxscrMzNSuXbsKfE9IEgEAAFyYJSYmJsrf399pS0xM/MeQ8vPzNXDgQDVs2FC33367JCktLU1eXl4KCAhw6hsaGqq0tDRHn78miBf2X9hXUDzdDAAA4ELDhw9XQkKCU5vdbv/H4+Lj4/Xjjz9q3bp1rgrtb5EkAgAAt+fKJXDsdnuBksK/6t+/vxYvXqy1a9eqbNmyjvawsDDl5uYqPT3dqZp45MgRhYWFOfps3rzZ6XwXnn6+0KcgGG4GAAAoIgzDUP/+/fXJJ59o1apVqlChgtP+OnXqyNPTUytXrnS07dmzRykpKYqOjpYkRUdHa+fOnTp69Kijz/Lly+Xn56eoqKgCx0IlEQAAuL3CLlXjKvHx8VqwYIE+++wzlSpVyjGH0N/fX97e3vL391fPnj2VkJCgwMBA+fn5acCAAYqOjlb9+vUlSS1btlRUVJS6du2qCRMmKC0tTc8995zi4+MLVdEkSQQAACgipk2bJklq2rSpU/usWbPUvXt3SdKkSZPk4eGhDh06KCcnR7GxsXrzzTcdfYsVK6bFixerb9++io6Olo+Pj+Li4jR27NhCxcI6iQCuK6yTCNy4rFwn8ZejZ1127ltCvF12bldiTiIAAABMGG4GAAAoInMSixKSRAAA4PZcuQTO9YrhZgAAAJhQSQQAAG6vqCyBU5RQSQQAAIAJlUQAAOD2KCSaUUkEAACACZVEAAAASokmVBIBAABgQiURAAC4PdZJNCNJBAAAbo8lcMwYbgYAAIAJlUQAAOD2KCSaUUkEAACACZVEAADg9piTaEYlEQAAACZUEgEAAJiVaEIlEQAAACZUEgEAgNtjTqIZSSIAAHB75IhmDDcDAADAhEoiAABweww3m1FJBAAAgAmVRAAA4PZszEo0oZIIAAAAEyqJAAAAFBJNqCQCAADAhEoiAABwexQSzUgSAQCA22MJHDOGmwEAAGBCJREAALg9lsAxo5IIAAAAEyqJAAAAFBJNqCQCAADAhEoiAABwexQSzagkAgAAwIRKIgAAcHusk2hGkggAANweS+CYMdwMAAAAEyqJAADA7THcbEYlEQAAACYkiQAAADAhSQQAAIAJcxIBAIDbY06iGZVEAAAAmFBJBAAAbo91Es1IEgEAgNtjuNmM4WYAAACYUEkEAABuj0KiGZVEAAAAmFBJBAAAoJRoQiURAAAAJlQSAQCA22MJHDMqiQAAAEXI2rVrde+99yo8PFw2m02ffvqp037DMDRy5EiVKVNG3t7eiomJ0b59+5z6nDhxQl26dJGfn58CAgLUs2dPZWVlFSoOkkQAAOD2bDbXbYV1+vRp1ahRQ1OnTr3k/gkTJmjy5MmaPn26Nm3aJB8fH8XGxio7O9vRp0uXLtq1a5eWL1+uxYsXa+3aterTp0/h7olhGEbhwy/a9h45Y3UIAFxk5pZDVocAwEVeblvFsmufznVdOuTjdeVD2TabTZ988onatWsn6c8qYnh4uJ566ikNHjxYkpSRkaHQ0FDNnj1bnTt31u7duxUVFaUtW7aobt26kqSlS5fqnnvu0W+//abw8PACXZtKIgAAcHs2F245OTnKzMx02nJycq4ozuTkZKWlpSkmJsbR5u/vr3r16ikpKUmSlJSUpICAAEeCKEkxMTHy8PDQpk2bCnwtkkQAAAAXZomJiYny9/d32hITE68ozLS0NElSaGioU3toaKhjX1pamkJCQpz2Fy9eXIGBgY4+BcHTzQAAAC40fPhwJSQkOLXZ7XaLoik4kkQAAOD2XLkEjt1uv2pJYVhYmCTpyJEjKlOmjKP9yJEjqlmzpqPP0aNHnY47f/68Tpw44Ti+IBhuBgAAuE5UqFBBYWFhWrlypaMtMzNTmzZtUnR0tCQpOjpa6enp2rp1q6PPqlWrlJ+fr3r16hX4WlQSAQCA27uSpWpcJSsrS/v373f8nJycrO3btyswMFAREREaOHCgxo0bp8qVK6tChQoaMWKEwsPDHU9AV6tWTa1atVLv3r01ffp0nTt3Tv3791fnzp0L/GSzRJIIAABQpHz33Xdq1qyZ4+cL8xnj4uI0e/ZsPf300zp9+rT69Omj9PR0NWrUSEuXLlWJEiUcx8yfP1/9+/dXixYt5OHhoQ4dOmjy5MmFiuOGXCcR7iMnJ0eJiYkaPnz4dTEJGEDB8f0GrEWSiOtaZmam/P39lZGRIT8/P6vDAXAV8f0GrMWDKwAAADAhSQQAAIAJSSIAAABMSBJxXbPb7Ro1ahST2oEbEN9vwFo8uAIAAAATKokAAAAwIUkEAACACUkiAAAATEgScV365ptvZLPZlJ6ebnUoAC7DZrPp008/tToMAFeIJBGX1b17d9lsNr344otO7Z9++qlshXwTevny5fXaa68VqJ/NZpPNZpO3t7fKly+vjh07atWqVU79GjRooNTUVPn7+xcqjisxevRo1axZ0+XXAa4XF/5usNls8vT0VGhoqO6++269++67ys/Pd/RLTU1V69atXR4P/9MIuAZJIv5WiRIl9NJLL+nkyZPX7Jpjx45Vamqq9uzZo7lz5yogIEAxMTF64YUXHH28vLwUFhZW6GTVSrm5uVaHAFw1rVq1Umpqqg4ePKglS5aoWbNmevLJJ9W2bVudP39ekhQWFnZdLV9jGIYjdgAkifgHMTExCgsLU2Ji4t/2++ijj3TbbbfJbrerfPnyevXVVx37mjZtql9//VWDBg1yVB/+TqlSpRQWFqaIiAg1btxYM2bM0IgRIzRy5Ejt2bNHkrly8Ouvv+ree+9V6dKl5ePjo9tuu01fffWVJCkvL089e/ZUhQoV5O3trSpVquj11193uuY333yj//znP/Lx8VFAQIAaNmyoX3/9VbNnz9aYMWO0Y8cOR+yzZ8+WJKWnp6tXr14KDg6Wn5+fmjdvrh07djjOeaEC+fbbb6tChQoqUaJEge45cD2w2+0KCwvTzTffrNq1a+uZZ57RZ599piVLlji+I38dbs7NzVX//v1VpkwZlShRQpGRkU5/r0ycOFHVq1eXj4+PypUrp379+ikrK8ux/3Lf8YMHD6pZs2aSpNKlS8tms6l79+6SpPz8fCUmJjq++zVq1NCHH37oOOeFv0eWLFmiOnXqyG63a926da69ccB1pLjVAaBoK1asmMaPH6+HH35YTzzxhMqWLWvqs3XrVnXs2FGjR49Wp06dtGHDBvXr109BQUHq3r27Pv74Y9WoUUN9+vRR7969ryiOJ598Us8//7w+++wzPf3006b98fHxys3N1dq1a+Xj46OffvpJvr6+kv78h6Js2bJatGiRgoKCtGHDBvXp00dlypRRx44ddf78ebVr1069e/fW+++/r9zcXG3evFk2m02dOnXSjz/+qKVLl2rFihWS5Bji/u9//ytvb28tWbJE/v7+euutt9SiRQvt3btXgYGBkqT9+/fro48+0scff6xixYpd0WcHrhfNmzdXjRo19PHHH6tXr15O+yZPnqzPP/9cCxcuVEREhA4dOqRDhw459nt4eGjy5MmqUKGCDhw4oH79+unpp5/Wm2++Keny3/Fy5crpo48+UocOHbRnzx75+fnJ29tbkpSYmKj33ntP06dPV+XKlbV27Vo98sgjCg4OVpMmTRzXHjZsmF555RVVrFhRpUuXvgZ3Crg+kCTiHz3wwAOqWbOmRo0apXfeece0f+LEiWrRooVGjBghSbr11lv1008/6eWXX1b37t0VGBioYsWKOSqEVyIwMFAhISE6ePDgJfenpKSoQ4cOql69uiSpYsWKjn2enp4aM2aM4+cKFSooKSlJCxcuVMeOHZWZmamMjAy1bdtWt9xyiySpWrVqjv6+vr4qXry4U+zr1q3T5s2bdfToUcdw2iuvvKJPP/1UH374ofr06SPpz+rJ3LlzFRwcfEWfG7jeVK1aVT/88IOpPSUlRZUrV1ajRo1ks9kUGRnptH/gwIGOX5cvX17jxo3T448/7kgS/+47fuF/ykJCQhQQECBJysnJ0fjx47VixQpFR0c7jlm3bp3eeustpyRx7Nixuvvuu//9hwduMAw3o0BeeuklzZkzR7t37zbt2717txo2bOjU1rBhQ+3bt095eXlXLQbDMC47VP3EE09o3LhxatiwoUaNGmX6R2rq1KmqU6eOgoOD5evrqxkzZiglJUXSn//AdO/eXbGxsbr33nv1+uuvKzU19W9j2bFjh7KyshQUFCRfX1/HlpycrF9++cXRLzIykgQRbuVy39Pu3btr+/btqlKlip544gktW7bMaf+KFSvUokUL3XzzzSpVqpS6du2q48eP68yZM5L++Tt+sf379+vMmTO6++67nb6jc+fOdfqOSlLdunX/5acGbkwkiSiQxo0bKzY2VsOHD7fk+sePH9exY8dUoUKFS+7v1auXDhw4oK5du2rnzp2qW7eupkyZIkn63//+p8GDB6tnz55atmyZtm/frh49ejg9SDJr1iwlJSWpQYMG+uCDD3Trrbdq48aNl40nKytLZcqU0fbt2522PXv2aMiQIY5+Pj4+V+kOANeH3bt3X/J7Wrt2bSUnJ+v555/X2bNn1bFjRz344IOSpIMHD6pt27a644479NFHH2nr1q2aOnWqpP974OvvvuOXcmE+45dffun0Hf3pp5+c5iVKfE+By2G4GQX24osvqmbNmqpSpYpTe7Vq1bR+/XqntvXr1+vWW291zMPz8vL6V1XF119/XR4eHmrXrt1l+5QrV06PP/64Hn/8cQ0fPlwzZ87UgAEDtH79ejVo0ED9+vVz9L24kiBJtWrVUq1atTR8+HBFR0drwYIFql+//iVjr127ttLS0lS8eHGVL1/+ij8XcCNZtWqVdu7cqUGDBl1yv5+fnzp16qROnTrpwQcfVKtWrXTixAlt3bpV+fn5evXVV+Xh8WftYuHChabjL/cd9/LykiSn72lUVJTsdrtSUlKchpYBFBxJIgqsevXq6tKliyZPnuzU/tRTT+nOO+/U888/r06dOikpKUlvvPGGYy6R9Occo7Vr16pz586y2+266aabLnudU6dOKS0tTefOnVNycrLee+89vf3220pMTFSlSpUueczAgQPVunVr3XrrrTp58qRWr17tmFdYuXJlzZ07V19//bUqVKigefPmacuWLY5qR3JysmbMmKH77rtP4eHh2rNnj/bt26du3bo5Yk9OTtb27dtVtmxZlSpVSjExMYqOjla7du00YcIE3XrrrTp8+LC+/PJLPfDAAwxf4YaXk5OjtLQ05eXl6ciRI1q6dKkSExPVtm1bx3fnryZOnKgyZcqoVq1a8vDw0KJFixQWFqaAgABVqlRJ586d05QpU3Tvvfdq/fr1mj59utPxf/cdj4yMlM1m0+LFi3XPPffI29tbpUqV0uDBgzVo0CDl5+erUaNGysjI0Pr16+Xn56e4uLhrcp+A65oBXEZcXJxx//33O7UlJycbXl5exsV/dD788EMjKirK8PT0NCIiIoyXX37ZaX9SUpJxxx13GHa73XTsX0VGRhqSDEmGl5eXERERYXTs2NFYtWqV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\n" }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "# ROC Curve\n", "fpr, tpr, thresholds = roc_curve(y_true, y_probs)\n", "roc_auc = roc_auc_score(y_true, y_probs)\n", "\n", "plt.figure(figsize=(8,6))\n", "plt.plot(fpr, tpr, label=f'AUC = {roc_auc:.4f}', color='darkorange', lw=2)\n", "plt.plot([0,1], [0,1], color='navy', lw=2, linestyle='--')\n", "plt.xlim([0.0,1.0])\n", "plt.ylim([0.0,1.05])\n", "plt.xlabel('False Positive Rate')\n", "plt.ylabel('True Positive Rate (Recall)')\n", "plt.title('Receiver Operating Characteristic (ROC) Curve')\n", "plt.legend(loc='lower right')\n", "plt.show()\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 564 }, "id": "C9VBj90jvd-8", "outputId": "b513baa9-6ca7-40bd-ac15-e5d5be48e1a3" }, "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "# Precision-Recall Curve\n", "precision_vals, recall_vals, thresholds = precision_recall_curve(y_true, y_probs)\n", "avg_precision = average_precision_score(y_true, y_probs)\n", "\n", "plt.figure(figsize=(8,6))\n", "plt.plot(recall_vals, precision_vals, label=f'Average Precision = {avg_precision:.4f}', color='blue', lw=2)\n", "plt.xlabel('Recall')\n", "plt.ylabel('Precision')\n", "plt.title('Precision-Recall Curve')\n", "plt.legend(loc='lower left')\n", "plt.show()\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 564 }, "id": "j-ZZx-s6vfpg", "outputId": "0efbfb0f-f48b-4edb-ad54-91e272eecb81" }, "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAArMAAAIjCAYAAAAQgZNYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABpfUlEQVR4nO3deVxU1f/H8few4wIuCG64b7knpj+XUpMkNUsztTI1y1KzvuZSqblki7aalluaubRpmba5ZailZmlu30xz3xXUXBAUEeb+/rhfBkdAAWEuA6/n43EfzD333pnPMFJvDueeYzMMwxAAAADghjysLgAAAADIKsIsAAAA3BZhFgAAAG6LMAsAAAC3RZgFAACA2yLMAgAAwG0RZgEAAOC2CLMAAABwW4RZAAAAuC3CLIB84/HHH1eFChUydc2aNWtks9m0Zs2aHKnJ3bVs2VItW7Z07B86dEg2m01z5syxrCYA+QthFkCOmTNnjmw2m2Pz8/NTtWrV9Oyzzyo6Otrq8nK95GCYvHl4eKhYsWJq27atNmzYYHV52SI6OlpDhw5VjRo1VKBAARUsWFBhYWF6/fXXdf78eavLA+AGvKwuAEDe9+qrr6pixYqKj4/XunXrNG3aNC1dulQ7duxQgQIFXFbHzJkzZbfbM3XNXXfdpcuXL8vHxyeHqrq5Rx55RO3atVNSUpL27NmjqVOnqlWrVtq0aZPq1KljWV23atOmTWrXrp1iY2P12GOPKSwsTJL0559/6s0339Svv/6qn376yeIqAeR2hFkAOa5t27Zq2LChJKlPnz4qXry4JkyYoO+++06PPPJImtfExcWpYMGC2VqHt7d3pq/x8PCQn59fttaRWQ0aNNBjjz3m2L/zzjvVtm1bTZs2TVOnTrWwsqw7f/68OnXqJE9PT23dulU1atRwOv7GG29o5syZ2fJaOfFvCUDuwTADAC539913S5IOHjwoyRzLWqhQIe3fv1/t2rVT4cKF1b17d0mS3W7XxIkTVatWLfn5+SkkJER9+/bVuXPnUj3vsmXL1KJFCxUuXFgBAQG644479MUXXziOpzVmdv78+QoLC3NcU6dOHU2aNMlxPL0xs19//bXCwsLk7++voKAgPfbYYzp+/LjTOcnv6/jx4+rYsaMKFSqkEiVKaOjQoUpKSsry9+/OO++UJO3fv9+p/fz583r++ecVGhoqX19fValSRW+99Vaq3mi73a5JkyapTp068vPzU4kSJXTvvffqzz//dJwze/Zs3X333QoODpavr69q1qypadOmZbnm63300Uc6fvy4JkyYkCrISlJISIhGjhzp2LfZbHrllVdSnVehQgU9/vjjjv3koS2//PKLnnnmGQUHB6ts2bJauHChoz2tWmw2m3bs2OFo++eff/TQQw+pWLFi8vPzU8OGDfX999/f2psGkCPomQXgcskhrHjx4o62xMRERUREqHnz5nr33Xcdww/69u2rOXPmqHfv3vrPf/6jgwcPavLkydq6davWr1/v6G2dM2eOnnjiCdWqVUvDhw9XkSJFtHXrVi1fvlyPPvpomnWsXLlSjzzyiFq3bq233npLkrRr1y6tX79eAwcOTLf+5HruuOMOjR8/XtHR0Zo0aZLWr1+vrVu3qkiRIo5zk5KSFBERocaNG+vdd9/Vzz//rPfee0+VK1dW//79s/T9O3TokCSpaNGijrZLly6pRYsWOn78uPr27aty5crpt99+0/Dhw3Xy5ElNnDjRce6TTz6pOXPmqG3bturTp48SExO1du1a/f77744e9GnTpqlWrVq6//775eXlpR9++EHPPPOM7Ha7BgwYkKW6r/X999/L399fDz300C0/V1qeeeYZlShRQqNHj1ZcXJzat2+vQoUK6auvvlKLFi2czl2wYIFq1aql2rVrS5L+/vtvNWvWTGXKlNGwYcNUsGBBffXVV+rYsaO++eYbderUKUdqBpBFBgDkkNmzZxuSjJ9//tk4ffq0cfToUWP+/PlG8eLFDX9/f+PYsWOGYRhGr169DEnGsGHDnK5fu3atIcn4/PPPndqXL1/u1H7+/HmjcOHCRuPGjY3Lly87nWu32x2Pe/XqZZQvX96xP3DgQCMgIMBITExM9z2sXr3akGSsXr3aMAzDSEhIMIKDg43atWs7vdaPP/5oSDJGjx7t9HqSjFdffdXpOW+//XYjLCws3ddMdvDgQUOSMXbsWOP06dNGVFSUsXbtWuOOO+4wJBlff/2149zXXnvNKFiwoLFnzx6n5xg2bJjh6elpHDlyxDAMw1i1apUhyfjPf/6T6vWu/V5dunQp1fGIiAijUqVKTm0tWrQwWrRokarm2bNn3/C9FS1a1KhXr94Nz7mWJGPMmDGp2suXL2/06tXLsZ/8b6558+apPtdHHnnECA4Odmo/efKk4eHh4fQZtW7d2qhTp44RHx/vaLPb7UbTpk2NqlWrZrhmAK7BMAMAOS48PFwlSpRQaGioHn74YRUqVEiLFy9WmTJlnM67vqfy66+/VmBgoO655x6dOXPGsYWFhalQoUJavXq1JLOH9eLFixo2bFiq8a02my3duooUKaK4uDitXLkyw+/lzz//1KlTp/TMM884vVb79u1Vo0YNLVmyJNU1/fr1c9q/8847deDAgQy/5pgxY1SiRAmVLFlSd955p3bt2qX33nvPqVfz66+/1p133qmiRYs6fa/Cw8OVlJSkX3/9VZL0zTffyGazacyYMale59rvlb+/v+PxhQsXdObMGbVo0UIHDhzQhQsXMlx7emJiYlS4cOFbfp70PPXUU/L09HRq69atm06dOuU0ZGThwoWy2+3q1q2bJOns2bNatWqVunbtqosXLzq+j//++68iIiK0d+/eVMNJAFiLYQYActyUKVNUrVo1eXl5KSQkRNWrV5eHh/Pv0l5eXipbtqxT2969e3XhwgUFBwen+bynTp2SlDJsIfnPxBn1zDPP6KuvvlLbtm1VpkwZtWnTRl27dtW9996b7jWHDx+WJFWvXj3VsRo1amjdunVObcljUq9VtGhRpzG/p0+fdhpDW6hQIRUqVMix//TTT6tLly6Kj4/XqlWr9MEHH6Qac7t3717997//TfVaya79XpUuXVrFihVL9z1K0vr16zVmzBht2LBBly5dcjp24cIFBQYG3vD6mwkICNDFixdv6TlupGLFiqna7r33XgUGBmrBggVq3bq1JHOIQf369VWtWjVJ0r59+2QYhkaNGqVRo0al+dynTp1K9YsYAOsQZgHkuEaNGjnGYqbH19c3VcC12+0KDg7W559/nuY16QW3jAoODta2bdu0YsUKLVu2TMuWLdPs2bPVs2dPzZ0795aeO9n1vYNpueOOOxwhWTJ7Yq+92alq1aoKDw+XJN13333y9PTUsGHD1KpVK8f31W6365577tGLL76Y5mskh7WM2L9/v1q3bq0aNWpowoQJCg0NlY+Pj5YuXar3338/09ObpaVGjRratm2bEhISbmnas/RupLu2ZzmZr6+vOnbsqMWLF2vq1KmKjo7W+vXrNW7cOMc5ye9t6NChioiISPO5q1SpkuV6AWQ/wiyAXKty5cr6+eef1axZszTDybXnSdKOHTsyHTR8fHzUoUMHdejQQXa7Xc8884w++ugjjRo1Ks3nKl++vCRp9+7djlkZku3evdtxPDM+//xzXb582bFfqVKlG57/8ssva+bMmRo5cqSWL18uyfwexMbGOkJveipXrqwVK1bo7Nmz6fbO/vDDD7py5Yq+//57lStXztGePKwjO3To0EEbNmzQN998k+70bNcqWrRoqkUUEhISdPLkyUy9brdu3TR37lxFRkZq165dMgzDMcRASvnee3t73/R7CSB3YMwsgFyra9euSkpK0muvvZbqWGJioiPctGnTRoULF9b48eMVHx/vdJ5hGOk+/7///uu07+Hhobp160qSrly5kuY1DRs2VHBwsKZPn+50zrJly7Rr1y61b98+Q+/tWs2aNVN4eLhju1mYLVKkiPr27asVK1Zo27Ztkszv1YYNG7RixYpU558/f16JiYmSpM6dO8swDI0dOzbVecnfq+Te5Gu/dxcuXNDs2bMz/d7S069fP5UqVUpDhgzRnj17Uh0/deqUXn/9dcd+5cqVHeN+k82YMSPTU5yFh4erWLFiWrBggRYsWKBGjRo5DUkIDg5Wy5Yt9dFHH6UZlE+fPp2p1wOQ8+iZBZBrtWjRQn379tX48eO1bds2tWnTRt7e3tq7d6++/vprTZo0SQ899JACAgL0/vvvq0+fPrrjjjv06KOPqmjRotq+fbsuXbqU7pCBPn366OzZs7r77rtVtmxZHT58WB9++KHq16+v2267Lc1rvL299dZbb6l3795q0aKFHnnkEcfUXBUqVNCgQYNy8lviMHDgQE2cOFFvvvmm5s+frxdeeEHff/+97rvvPj3++OMKCwtTXFyc/vrrLy1cuFCHDh1SUFCQWrVqpR49euiDDz7Q3r17de+998put2vt2rVq1aqVnn32WbVp08bRY923b1/FxsZq5syZCg4OznRPaHqKFi2qxYsXq127dqpfv77TCmBbtmzRl19+qSZNmjjO79Onj/r166fOnTvrnnvu0fbt27VixQoFBQVl6nW9vb314IMPav78+YqLi9O7776b6pwpU6aoefPmqlOnjp566ilVqlRJ0dHR2rBhg44dO6bt27ff2psHkL2snEoBQN6WPE3Spk2bbnher169jIIFC6Z7fMaMGUZYWJjh7+9vFC5c2KhTp47x4osvGidOnHA67/vvvzeaNm1q+Pv7GwEB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ePrHLl2S+vRxXS1AerK8aMLChQvVsmVLp/bVq1era9euOn36dHbVl+3omQUAIGOuXJH+7/+kv/82Vw07ciT1OUuWpN97C2RVjvfMXrp0SSFpDJQJDg7WpUuXsvKUAAAgl/H1lbZsMUPt4cPmfLT/G13o8Oqr1tQGJMtSmG3SpInGjBmj+Ph4R9vly5c1duxYNWnSJNuKAwAA1rLZnMfF2mzOiyn88Yf0+++urwtIlqVhBjt27FBERISuXLmievXqSZK2b98uPz8/rVixQrVq1cr2QrMLwwwAALg1hpF6EYWDB1MviQtkVWbyWpbnmb106ZI+//xz/fPPP5Kk2267Td27d5e/v39Wns5lCLMAANy6Nm2klSud21q0kJYvl/z8rKkJeYdLwqy7IswCAHDrEhLMMbVpGTVKGjuWabuQdTmyaML333+vtm3bytvbW99///0Nz73//vsz+rQAAMAN+fhI+/ZJVaqkPvbaa9Lp01KTJtJ995kLLQA5JcM9sx4eHoqKilJwcLA8rh8oc+0T2mxKSkrKtgKzGz2zAABkr6lTpQED0j7WurX088+urQfuL0em5rLb7QoODnY8Tm/LzUEWAABkv/79pU8+MZe5vV5kpHTmjOtrQv6Rpam50nL+/PnseioAAOBGbDapd29zLtpnnkl9vGrV1PPTAtklS2H2rbfe0oIFCxz7Xbp0UbFixVSmTBlt374924oDAADuw9NTmjLFnLqradOU9vPnpddft6ws5HFZCrPTp09XaGioJGnlypX6+eeftXz5crVt21YvvPBCthYIAADczxdfOO+PGSMlJlpTC/K2LIXZqKgoR5j98ccf1bVrV7Vp00YvvviiNm3alK0FAgAA91O+vPTxx85tH3xgTS3I27IUZosWLaqjR49KkpYvX67w8HBJkmEY3AAGAAAkSd27O+8PGSLFx1tTC/KuLIXZBx98UI8++qjuuece/fvvv2rbtq0kaevWraqS1oRzAAAg3/Hzk957z7nt+uEHwK3KUph9//339eyzz6pmzZpauXKlChUqJEk6efKknknrNkYAAJAvPf648350tCVlIA/LUpj19vbW0KFDNWnSJN1+++2O9kGDBqlPnz6Zfr4pU6aoQoUK8vPzU+PGjbVx48Z0z23ZsqVsNluqrX379ll5KwAAIAcVK2auCAbkFMuXs12wYIEGDx6s6dOn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7PHHzflmK1d2brfZpHffzb3jaAmzecysWbP03HPP6ddff9WJHB7okry4hNVmz56tkydPav369QoKCtJ9992nAwcOpHnu1atXb/n1/P39FRwcnO3nWuntt9/WBx98oOnTp+uPP/5QwYIFFRERofgb/Jfrrbfe0rRp0zR58mTt2rVLb731lt5++219+OGHqc5dvHixfv/9d5VOYzbu++67T4mJiVq1apU2b96sevXq6b777lNUVJTTecmfc/LWsWPHW37fAIAUt91mzmSwb5+5sMK1XnjBHF8bHW1NbTdCmM1DYmNjtWDBAvXv31/t27fXnDlzHMceffRRdevWzen8q1evKigoSPPmzZNkzrM7fvx4R09bvXr1tHDhQsf5a9askc1m07JlyxQWFiZfX1+tW7dO+/fv1wMPPKCQkBAVKlRId9xxh37++Wen1zp58qTat28vf39/VaxYUV988YUqVKjg1Et3/vx59enTRyVKlFBAQIDuvvtubd++/abvu0iRIipZsqRq166tadOm6fLly1q5cqUks0dv2rRpuv/++1WwYEG98cYbkqTvvvtODRo0kJ+fnypVqqSxY8c6BfPz58+rb9++CgkJkZ+fn2rXrq0ff/xRUuqhA9u3b1erVq1UuHBhBQQEKCwsTH/++Wea50rStGnTVLlyZfn4+Kh69er69NNPnY7bbDZ9/PHH6tSpkwoUKKCqVavq+++/v+n3IasMw9DEiRM1cuRIPfDAA6pbt67mzZunEydO6Ntvv033ut9++00PPPCA2rdvrwoVKuihhx5SmzZttHHjRqfzjh8/rueee06ff/65vL29nY6dOXNGe/fu1bBhw1S3bl1VrVpVb775pi5duqQdO3Y4nZv8OSdvfmn9PQwAkC1Gj067/fppvHIDwmwGNGwolS3r+q1hw8zV+dVXX6lGjRqqXr26HnvsMX3yySeOP/l2795dP/zwg2JjYx3nr1ixQpcuXVKnTp0kSePHj9e8efM0ffp0/f333xo0aJAee+wx/fLLL06vM2zYML355pvatWuX6tatq9jYWLVr106RkZHaunWr7r33XnXo0EFHjhxxXNOzZ0+dOHFCa9as0TfffKMZM2bo1KlTTs/bpUsXnTp1SsuWLdPmzZvVoEEDtW7dWmfPns3w98Df31+SOWdwsldeeUWdOnXSX3/9pSeeeEJr165Vz549NXDgQO3cuVMfffSR5syZ4wi6drtdbdu21fr16/XZZ59p586devPNN9Ods7R79+4qW7asNm3apM2bN2vYsGGpQluyxYsXa+DAgRoyZIh27Nihvn37qnfv3qn+rD527Fh17dpV//3vf9WuXTt17979ht+Hfv36qVChQjfc0nPw4EFFRUUpPDzc0RYYGKjGjRtrw4YN6V7XtGlTRUZGOoZRbN++XevWrVPbtm0d59jtdvXo0UMvvPCCatWqleo5ihcvrurVq2vevHmKi4tTYmKiPvroIwUHByssLMzp3AEDBigoKEiNGjVy+rcNAMh+jzwibdoktWzp3H5NjMg9jHzmwoULhiTjwoULqY5dvnzZ2Llzp3H58mWn9jJlDMOctMK1W5kymXtvTZs2NSZOnGgYhmFcvXrVCAoKMlavXu20P2/ePMf5jzzyiNGtWzfDMAwjPj7eKFCggPHbb785PeeTTz5pPPLII4ZhGMbq1asNSca3335701pq1aplfPjhh4ZhGMauXbsMScamTZscx/fu3WtIMt5//33DMAxj7dq1RkBAgBEfH+/0PJUrVzY++uijdF9HkrF48WLDMAwjLi7OeOaZZwxPT09j+/btjuPPP/+80zWtW7c2xo0b59T26aefGqVKlTIMwzBWrFhheHh4GLt3707zNWfPnm0EBgY69gsXLmzMmTMnQ+c2bdrUeOqpp5zO6dKli9GuXTun9zRy5EjHfmxsrCHJWLZsWZqvYRiGER0dbezdu/eGW3rWr19vSDJOnDiRqq6uXbume11SUpLx0ksvGTabzfDy8jJsNluq7+u4ceOMe+65x7Db7YZhGEb58uUdn3myo0ePGmFhYYbNZjM8PT2NUqVKGVu2bHE659VXXzXWrVtnbNmyxXjzzTcNX19fY9KkSWnWld7PMQAga778MiWbvPaaa17zRnntekzNlQElS+b+1929e7c2btyoxYsXS5K8vLzUrVs3zZo1Sy1btpSXl5e6du2qzz//XD169FBcXJy+++47x000+/bt06VLl3TPPfc4PW9CQoJuv/12p7aG13UZx8bG6pVXXtGSJUt08uRJJSYm6vLly46e2d27d8vLy0sNGjRwXFOlShUVLVrUsb99+3bFxsaqePHiTs99+fJl7d+//4bv/ZFHHpGnp6cuX76sEiVKaNasWap7zbIl19e7fft2rV+/3tET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7Nkur9swDMNmGPTnAwAAwD0xZhYAAABuizALAAAAt0WYBQAAgNsizAIAAMBtEWYBAADgtgizAAAAcFuEWQAAALgtwiwAAADcFmEWAPIxm82mb7/9VpJ06NAh2Ww2bdu2zdKaACAzCLMAYJHHH39cNptNNptN3t7eqlixol588UXFx8dbXRoAuA0vqwsAgPzs3nvv1ezZs3X16lVt3rxZvXr1ks1m01tvvWV1aQDgFuiZBQAL+fr6qmTJkgoNDVXHjh0VHh6ulStXSpLsdrvGjx+vihUryt/fX/Xq1dPChQudrv/777913333KSAgQIULF9add96p/fv3S5I2bdqke+65R0FBQQoMDFSLFi20ZcsWl79HAMhJhFkAyCV27Nih3377TT4+PpKk8ePHa968eZo+fbr+/vtvDRo0SI899ph++eUXSdLx48d11113ydfXV6tWrdLmzZv1xBNPKDExUZJ08eJF9erVS+vWrdPvv/+uqlWrql27drp48aJl7xEAshvDDADAQj/++KMKFSqkxMREXblyRR4eHpo8ebKuXLmicePG6eeff1aTJk0kSZUqVdK6dev00UcfqUWLFpoyZYoCAwM1f/58eXt7S5KqVavmeO67777b6bVmzJihIkWK6JdfftF9993nujcJADmIMAsAFmrVqpWmTZumuLg4vf/++/Ly8lLnzp31999/69KlS7rnnnuczk9ISNDtt98uSdq2bZvuvPNOR5C9XnR0tEaOHKk1a9bo1KlTSkpK0qVLl3TkyJEcf18A4CqEWQCwUMGCBVWlShVJ0ieffKJ69epp1qxZql27tiRpyZIlKlOmjNM1vr6+kiR/f/8bPnevXr3077//atKkSSpfvrx8fX3VpEkTJSQk5MA7AQBrEGYBIJfw8PDQiBEjNHjwYO3Zs0e+vr46cuSIWrRokeb5devW1dy5c3X16tU0e2fXr1+vqVOnql27dpKko0eP6syZMzn6HgDA1bgBDABykS5dusjT01MfffSRhg4dqkGDBmnu3Lnav3+/tmzZog8//FBz586VJD377LOKiYnRww8/rD///FN79+7Vp59+qt27d0uSqlatqk8//VS7du3SH3/8oe7du9+0NxcA3A09swCQi3h5eenZZ5/V22+/rYMHD6pEiRIaP368Dhw4oCJFiqhBgwYaMWKEJKl48eJatWqVXnjhBbVo0UKenp6qX7++mjVrJkmaNWuWnn76aTVo0EChoaEaN26chg4dauXbA4BsZzMMw7C6CAAAACArGGYAAAAAt0WYBQAAgNsizAIAAMBtEWYBAADgtgizAAAAcFuEWQAAALgtwiwAAADcFmEWAAAAboswCwAAALdFmAUAAIDbIswCAADAbf0/EhDkxv/HPMAAAAAASUVORK5CYII=\n" }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "# Training and Validation Loss Curves\n", "plt.figure(figsize=(8,6))\n", "plt.plot(range(1, epochs+1), train_losses_epoch, label='Training Loss')\n", "plt.plot(range(1, epochs+1), val_losses_epoch, label='Validation Loss')\n", "plt.xlabel('Epochs')\n", "plt.ylabel('Loss')\n", "plt.title('Training and Validation Loss Over Epochs')\n", "plt.legend()\n", "plt.show()\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 564 }, "id": "pw4qzatvvhmn", "outputId": "cc83b791-bea1-44b0-e460-ffd8ebafb4a3" }, "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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hx12GD744ANT+NyJa6+9Fn/6059wxBFH4IgjjsC8efNw6KGHoq2tzTDfDz/8gOeeew7HH388Bg4ciFWrVuGee+7BAQccgC+//BJ9+vTB8OHDcf311+Paa6/Fueeei/322w8ALN09RVFw1FFHYfbs2TjrrLOwyy67YMaMGfjVr36F5cuX429/+5thfjfHhV+2bt2KsWPH4rvvvsNFF12EgQMH4sknn8SUKVOwceNG/PKXvwQAzJw5EyeffDIOPvhg3HTTTQCAr776CnPmzNHmmTp1Km688UacffbZ2HPPPdHY2IgPP/wQ8+bNwyGHHGK5Df/9739RXl6OE044Qfr6wIED8dOf/hSvv/46tm7dit133x2DBg3CE088YTrOHn/8cXTp0gWHHXYYAGDVqlX4yU9+ogn8hoYGvPzyyzjrrLPQ2NiISy+91PD+P/7xjygtLcWVV16J1tZWlJaW2u6/lpYWrF271jS9trbW8N4NGzbgiCOOwAknnICTTz4ZTzzxBC644AKUlpbizDPPBOD+uwCAs846C9OnT8f48eNx9tlno6OjA2+//Tbee+897L777tp8bo6d888/H0899RQuuugijBgxAuvWrcM777yDr776yvCbJIjQUAhiG+bCCy9UxJ/BAQccoABQ7r77btP8W7ZsMU0777zzlMrKSqWlpUWbNnnyZKV///7a/wsXLlQAKN26dVPWr1+vTf/Pf/6jAFD++9//atP+8Ic/mLYJgFJaWqp899132rRPP/1UAaBMmzZNmzZhwgSlsrJSWb58uTZtwYIFSnFxsWmZMmSf78Ybb1RSqZSyePFiw+cDoFx//fWGeXfddVdlzJgx2v/PPfecAkC5+eabtWkdHR3KfvvtpwBQHnjgAcdt2mOPPZS+ffsqmUxGm/bKK68oAJR77rlHW2Zra6vhfRs2bFB69uypnHnmmYbpAJQ//OEP2v8PPPCAAkBZuHChoiiKsnr1aqW0tFQ58sgjlWw2q83329/+VgGgTJ48WZvW0tJi2C5FUb/rsrIyw76ZO3eu5ecVjxW2z/70pz8Z5jvuuOOUVCplOAbcHhcy2DF5yy23WM5z2223KQCUf//739q0trY2Ze+991aqq6uVxsZGRVEU5Ze//KVSW1urdHR0WC5r9OjRypFHHmm7TTLq6+uV0aNH285zySWXKACUzz77TFEURbn66quVkpISw2+ttbVVqa+vNxwPZ511ltK7d29l7dq1huWddNJJSl1dnfZ7mD17tgJAGTRokPQ3IgOA5d+jjz6qzcfON3/9618N27rLLrsoPXr0UNra2hRFcf9dvP766woA5ZJLLjFtE388uz126urqlAsvvNDVZyaIMKBQPkFIKCsrwxlnnGGaXlFRoT1vamrC2rVrsd9++2HLli34+uuvHZd74oknokuXLtr/zD374YcfHN87btw4Qyhz5513Rm1trfbeTCaDWbNmYeLEiejTp4823w477IDx48c7Lh8wfr7Nmzdj7dq12GeffaAoCj7++GPT/GJ18X777Wf4LC+99BKKi4s1BxVQczq9FKqceuqpWLZsGd566y1t2iOPPILS0lIcf/zx2jKZA5XNZrF+/Xp0dHRg99139xxynDVrFtra2nDxxRcb0h9E9wxQjxOWY5jJZLBu3TpUV1djxx139B3qfOmll5BOp3HJJZcYpl9xxRVQFAUvv/yyYbrTcRGEl156Cb169cLJJ5+sTSspKcEll1yC5uZmvPnmmwCA+vp6bN682TYsX19fjy+++AILFizwtA1NTU2oqamxnYe9zkLrJ554Itrb2/HMM89o87z66qvYuHEjTjzxRACqM/30009jwoQJUBQFa9eu1f4OO+wwbNq0yfQdTp482fAbceLoo4/GzJkzTX8HHnigYb7i4mKcd9552v+lpaU477zzsHr1anz00UcA3H8XTz/9NFKpFP7whz+YtkdM53Fz7NTX1+P999/Hjz/+6PpzE0QQSJgShITttttOGqb74osvcMwxx6Curg61tbVoaGjQihs2bdrkuNztt9/e8D8TqRs2bPD8XvZ+9t7Vq1dj69at2GGHHUzzyabJWLJkCaZMmYKuXbtqeaMHHHAAAPPnY7lrVtsDAIsXL0bv3r1RXV1tmG/HHXd0tT0AcNJJJyGdTuORRx4BoIZHn332WYwfP94g8v/1r39h55131vIXGxoa8OKLL7r6XngWL14MABgyZIhhekNDg2F9gCqC//a3v2HIkCEoKytD9+7d0dDQgM8++8zzevn19+nTxyTGWKcItn0Mp+MiCIsXL8aQIUNMBT7itvziF7/A0KFDMX78ePTt2xdnnnmmKVfx+uuvx8aNGzF06FCMGjUKv/rVr1y1+aqpqUFTU5PtPOx1ts9Gjx6NYcOG4fHHH9fmefzxx9G9e3ccdNBBAIA1a9Zg48aNuPfee9HQ0GD4Yzelq1evNqxn4MCBjtvL07dvX4wbN870x1KDGH369EFVVZVhGqvcZ7nPbr+L77//Hn369EHXrl0dt8/NsXPzzTfj888/R79+/bDnnnti6tSpodz0EIQVJEwJQoLMFdm4cSMOOOAAfPrpp7j++uvx3//+FzNnztRy6ty0/LGq/laEopaw3+uGTCaDQw45BC+++CKuuuoqPPfcc5g5c6ZWpCN+vnxVsrNii6effhrt7e3473//i6amJpxyyinaPP/+978xZcoUDB48GPfffz9eeeUVzJw5EwcddFCkrZhuuOEGXH755dh///3x73//GzNmzMDMmTMxcuTIvLWAivq4cEOPHj3wySef4Pnnn9fyY8ePH2/I8dx///3x/fff45///Cd22mkn3Hfffdhtt91w33332S57+PDh+Oabb9Da2mo5z2effYaSkhLDzcSJJ56I2bNnY+3atWhtbcXzzz+PSZMmaR0v2Pdz6qmnSl3NmTNnYt999zWsx4tbWgi4OXZOOOEE/PDDD5g2bRr69OmDW265BSNHjjQ59wQRFlT8RBAueeONN7Bu3To888wz2H///bXpCxcujHGrdHr06IHy8nJpQ3q7JvWM+fPn49tvv8W//vUvQ+9Fp6ppO/r374/XXnsNzc3NBtf0m2++8bScU045Ba+88gpefvllPPLII6itrcWECRO015966ikMGjQIzzzzjCFcKQtnutlmAFiwYAEGDRqkTV+zZo3JhXzqqadw4IEH4v777zdM37hxI7p3767972Ukr/79+2PWrFmmEDZLFWHblw/69++Pzz77DNls1uDUybaltLQUEyZMwIQJE5DNZvGLX/wC99xzD37/+99rjn3Xrl1xxhln4IwzzkBzczP2339/TJ06FWeffbblNvzsZz/Du+++iyeffFLaemnRokV4++23MW7cOINwPPHEE3Hdddfh6aefRs+ePdHY2IiTTjpJe72hoQE1NTXIZDIYN26c/50UAj/++CM2b95scE2//fZbANA6Nrj9LgYPHowZM2Zg/fr1rlxTN/Tu3Ru/+MUv8Itf/AKrV6/Gbrvthj//+c+uU4QIwgvkmBKES5i7wLsJbW1t+Pvf/x7XJhlIp9MYN24cnnvuOUM+2HfffefK3ZB9PkVRDC1/vHLEEUego6MDd911lzYtk8lg2rRpnpYzceJEVFZW4u9//ztefvllHHvssSgvL7fd9vfffx/vvvuu520eN24cSkpKMG3aNMPybrvtNtO86XTa5Ew++eSTWL58uWEaExxu2mQdccQRyGQyuPPOOw3T//a3vyGVSuVVDBxxxBFYuXKlISTe0dGBadOmobq6WkvzWLduneF9RUVF2qAHzOkU56mursYOO+xg64QCwHnnnYcePXrgV7/6lSmE3NLSgjPOOAOKoph63Q4fPhyjRo3C448/jscffxy9e/c23FCm02lMmjQJTz/9ND7//HPTetesWWO7XWHS0dGBe+65R/u/ra0N99xzDxoaGjBmzBgA7r+LSZMmQVEUXHfddab1eHXRM5mMKSWlR48e6NOnj+P3RhB+IceUIFyyzz77oEuXLpg8ebI2XOZDDz2U15CpE1OnTsWrr76KfffdFxdccIEmcHbaaSfH4TCHDRuGwYMH48orr8Ty5ctRW1uLp59+OlCu4oQJE7DvvvviN7/5DRYtWoQRI0bgmWee8Zx/WV1djYkTJ2p5pnwYH1BdtWeeeQbHHHMMjjzySCxcuBB33303RowYgebmZk/rYv1Yb7zxRvzsZz/DEUccgY8//hgvv/yywQVl673++utxxhlnYJ999sH8+fPx8MMPG5xWQHWx6uvrcffdd6OmpgZVVVXYa6+9pDmLEyZMwIEHHohrrrkGixYtwujRo/Hqq6/iP//5Dy699FJTL8+gvPbaa2hpaTFNnzhxIs4991zcc889mDJlCj766CMMGDAATz31FObMmYPbbrtNc3TPPvtsrF+/HgcddBD69u2LxYsXY9q0adhll120HMgRI0Zg7NixGDNmDLp27YoPP/xQa0NkR7du3fDUU0/hyCOPxG677WYa+em7777D7bffLm2/deKJJ+Laa69FeXk5zjrrLFN+5l/+8hfMnj0be+21F8455xyMGDEC69evx7x58zBr1iysX7/e724FoLqe//73v03Te/bsaWiR1adPH9x0001YtGgRhg4discffxyffPIJ7r33Xq2NnNvv4sADD8Rpp52GO+64AwsWLMDhhx+ObDaLt99+GwceeKDj/uZpampC3759cdxxx2H06NGorq7GrFmzMHfuXPz1r38NtG8IwpJ8twEgiCRh1S5q5MiR0vnnzJmj/OQnP1EqKiqUPn36KL/+9a+V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AHDRRRfh+uuv116fNm0arr76ahxzzDEAgDvvvFNzL/3ABOmcOXOwzz77AAAefvhh9OvXD8899xyOP/54LFmyBJMmTcKoUaMAAIMGDdLev2TJEuy6667YfffdAaiucVIhYUoQRLys/Byo7QNUyp0JgiDCp6IkjS+vPyy2dYcFE1qM5uZmTJ06FS+++CJWrFiBjo4ObN26FUuWLLFdzs4776w9r6qqQm1tLVavXm05f2VlpSZKAaB3797a/Js2bcKqVauw5557aq+n02mMGTMG2WzW0+djfPXVVyguLsZee+2lTevWrRt23HFHfPXVVwCASy65BBdccAFeffVVjBs3DpMmTdI+1wUXXIBJkyZh3rx5OPTQQzFx4kRN4CYNyjElCCI+VnwK3L0v8Ncd494SgtimSKVSqCwtjuUvzNGnqqqqDP9feeWVePbZZ3HDDTfg7bffxieffIJRo0ahra3NdjklJSWm/WMnImXzu82djYqzzz4bP/zwA0477TTMnz8fu+++O6ZNmwYAGD9+PBYvXozLLrsMP/74Iw4++GBceeWVsW6vFSRMCYKIj+9eUx8z9hcNgiAIN8yZMwdTpkzBMcccg1GjRqFXr15YtGhRXrehrq4OPXv2xNy5c7VpmUwG8+bN873M4cOHo6OjA++//742bd26dfjmm28wYsQIbVq/fv1w/vnn45lnnsEVV1yBf/zjH9prDQ0NmDx5Mv7973/jtttuw7333ut7e6KEQvkEQcSHkol7CwiC6EQMGTIEzzzzDCZMmIBUKoXf//73vsPnQbj44otx4403YocddsCwYcMwbdo0bNiwwZVbPH/+fNTU1Gj/p1IpjB49GkcffTTOOecc3HPPPaipqcFvfvMbbLfddjj66KMBAJdeeinGjx+PoUOHYsOGDZg9ezaGDx8OALj22msxZswYjBw5Eq2trXjhhRe015IGCVOCIOIjS8KUIIjw+H//7//hzDPPxD777IPu3bvjqquuQmNjY96346qrrsLKlStx+umnI51O49xzz8Vhhx2GdNo5v3b//fc3/J9Op9HR0YEHHngAv/zlL/Gzn/0MbW1t2H///fHSSy9paQWZTAYXXnghli1bhtraWhx++OH429/+BkDtxXr11Vdj0aJFqKiowH777YfHHnss/A8eAikl7qSIADQ2NqKurg6bNm1CbW1t3JtDEIRXXv8z8NbN6vOpm+LdFoLoxLS0tGDhwoUYOHAgysvL496cbY5sNovhw4fjhBNOwB//+Me4NycS7I4xL3qNHFOCIOKDQvkEQXRCFi9ejFdffRUHHHAAWltbceedd2LhwoX4+c9/HvemJR4qfiIIIj6yHXFvAUEQROgUFRVh+vTp2GOPPbDvvvti/vz5mDVrVmLzOpMEOaYEQcQH5ZgSBNEJ6devH+bMmRP3ZhQk5JgSBBEfSv6rZQmCIIjkQsKUIIj4IMeUIAiC4CBhShBEfFCOKUEQBMFBwpQgiPigqnyCIAiCg4QpQRDxQY4pQRAEwUHClCCI+IhhqECCIAgiuZAwJQgiPiiUTxBExIwdOxaXXnqp9v+AAQNw22232b4nlUrhueeeC7zusJazLUHClCCI+OBD+YU7OjJBEBEwYcIEHH744dLX3n77baRSKXz22Weelzt37lyce+65QTfPwNSpU7HLLruYpq9YsQLjx48PdV0i06dPR319faTryCckTAmCiA++XRQJU4IgOM466yzMnDkTy5YtM732wAMPYPfdd8fOO+/sebkNDQ2orKwMYxMd6dWrF8rKyvKyrs4CCVOCIOKDD+VTWJ8g8oeiAG2b4/lzeRP6s5/9DA0NDZg+fbphenNzM5588kmcddZZWLduHU4++WRst912qKysxKhRo/Doo4/aLlcM5S9YsAD7778/ysvLMWLECMycOdP0nquuugpDhw5FZWUlBg0ahN///vdob28HoDqW1113HT799FOkUimkUiltm8VQ/vz583HQQQehoqIC3bp1w7nnnovm5mbt9SlTpmDixIm49dZb0bt3b3Tr1g0XXnihti4/LFmyBEcffTSqq6tRW1uLE044AatWrdJe//TTT3HggQeipqYGtbW1GDNmDD788EMAwOLFizFhwgR06dIFVVVVGDlyJF566SXf2+IGGpKUIIj44IufaBQogsgf7VuAG/rEs+7f/giUVjnOVlxcjNNPPx3Tp0/HNddcg1QqBQB48sknkclkcPLJJ6O5uRljxozBVVddhdraWrz44os47bTTMHjwYOy5556O68hmszj22GPRs2dPvP/++9i0aZMhH5VRU1OD6dOno0+fPpg/fz7OOecc1NTU4Ne//jVOPPFEfP7553jllVcwa9YsAEBdXZ1pGZs3b8Zhhx2GvffeG3PnzsXq1atx9tln46KL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\n" }, "metadata": {} } ] }, { "cell_type": "code", "source": [ "# Create DataLoader for test set\n", "test_data = TensorDataset(torch.from_numpy(test_padded))\n", "test_loader = DataLoader(test_data, batch_size=batch_size, shuffle=False)\n", "\n", "# Initialize hidden state\n", "net.eval()\n", "test_preds = []\n", "with torch.no_grad():\n", " for inputs in test_loader:\n", " inputs = inputs[0]\n", " if train_on_gpu:\n", " inputs = inputs.cuda()\n", " else:\n", " inputs = inputs\n", "\n", " h = net.init_hidden(inputs.size(0), train_on_gpu)\n", " h = tuple([each.data for each in h])\n", "\n", " outputs, h = net(inputs, h)\n", "\n", " preds = torch.round(outputs.squeeze())\n", " test_preds.extend(preds.detach().cpu().numpy())\n", "\n", "# Ensure the number of predictions matches test set size\n", "test_preds = test_preds[:len(test)]\n" ], "metadata": { "id": "5K1WocMvvjIg" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# Save weights_matrix to a file\n", "np.save('weights_matrix.npy', weights_matrix.numpy())\n" ], "metadata": { "id": "H_Wj5XlavlOj" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "%%writefile app.py\n", "import streamlit as st\n", "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "import numpy as np\n", "import re\n", "import pickle\n", "\n", "# Load word2idx\n", "with open('word2idx.pkl', 'rb') as f:\n", " word2idx = pickle.load(f)\n", "\n", "# Clean text function\n", "def clean_text(text):\n", " emoji_pattern = re.compile(\"[\"\n", " u\"\\U0001F600-\\U0001F64F\"\n", " u\"\\U0001F300-\\U0001F5FF\"\n", " u\"\\U0001F680-\\U0001F6FF\"\n", " u\"\\U0001F1E0-\\U0001F1FF\"\n", " u\"\\U00002702-\\U000027B0\"\n", " u\"\\U000024C2-\\U0001F251\"\n", " \"]+\", flags=re.UNICODE)\n", " text = emoji_pattern.sub(r'', text)\n", "\n", " url = re.compile(r'https?://\\S+|www\\.\\S+')\n", " text = url.sub(r'', text)\n", "\n", " text = text.replace('#', ' ')\n", " text = text.replace('@', ' ')\n", "\n", " symbols = re.compile(r'[^A-Za-z0-9 ]')\n", " text = symbols.sub(r'', text)\n", "\n", " text = text.lower()\n", "\n", " return text\n", "\n", "# Text to sequence function\n", "def text_to_sequence(text, word2idx, maxlen=55):\n", " words = text.split()\n", " seq = [word2idx.get(word, 0) for word in words]\n", " if len(seq) > maxlen:\n", " seq = seq[:maxlen]\n", " else:\n", " seq = [0]*(maxlen - len(seq)) + seq\n", " return np.array(seq)\n", "\n", "# Define the BiLSTM class\n", "class BiLSTM(nn.Module):\n", " def __init__(self, weights_matrix, output_size, hidden_dim, hidden_dim2, n_layers, drop_prob=0.5):\n", " super(BiLSTM, self).__init__()\n", "\n", " self.output_size = output_size\n", " self.n_layers = n_layers\n", " self.hidden_dim = hidden_dim\n", "\n", " # Embedding layer\n", " num_embeddings, embedding_dim = weights_matrix.size()\n", " self.embedding = nn.Embedding(num_embeddings, embedding_dim)\n", " self.embedding.weight.data.copy_(weights_matrix)\n", " self.embedding.weight.requires_grad = False # Freeze embedding layer\n", "\n", " # BiLSTM layer\n", " self.lstm = nn.LSTM(embedding_dim, hidden_dim, n_layers, dropout=drop_prob, bidirectional=True, batch_first=True)\n", "\n", " # Dropout layer\n", " self.dropout = nn.Dropout(0.3)\n", "\n", " # Fully connected layers\n", " self.fc1 = nn.Linear(hidden_dim * 2, hidden_dim2)\n", " self.fc2 = nn.Linear(hidden_dim2, output_size)\n", "\n", " # Activation function\n", " self.sigmoid = nn.Sigmoid()\n", "\n", " def forward(self, x, hidden):\n", " batch_size = x.size(0)\n", "\n", " # Embedding\n", " embeds = self.embedding(x)\n", "\n", " # LSTM\n", " lstm_out, hidden = self.lstm(embeds, hidden)\n", "\n", " # Stack up LSTM outputs\n", " lstm_out = lstm_out.contiguous().view(-1, self.hidden_dim * 2)\n", "\n", " # Dropout and fully connected layers\n", " out = self.dropout(lstm_out)\n", " out = self.fc1(out)\n", " out = F.relu(out)\n", " out = self.dropout(out)\n", " out = self.fc2(out)\n", "\n", " # Sigmoid activation\n", " sig_out = self.sigmoid(out)\n", "\n", " # Reshape to batch_size first\n", " sig_out = sig_out.view(batch_size, -1)\n", " sig_out = sig_out[:, -1] # Get last batch of labels\n", "\n", " return sig_out, hidden\n", "\n", " def init_hidden(self, batch_size, train_on_gpu=False):\n", " weight = next(self.parameters()).data\n", "\n", " layers = self.n_layers * 2 # Multiply by 2 for bidirectionality\n", " if train_on_gpu:\n", " hidden = (weight.new(layers, batch_size, self.hidden_dim).zero_().cuda(),\n", " weight.new(layers, batch_size, self.hidden_dim).zero_().cuda())\n", " else:\n", " hidden = (weight.new(layers, batch_size, self.hidden_dim).zero_(),\n", " weight.new(layers, batch_size, self.hidden_dim).zero_())\n", " return hidden\n", "\n", "# Load the embedding weights matrix\n", "weights_matrix = torch.tensor(np.load('weights_matrix.npy'))\n", "\n", "# Instantiate the model\n", "output_size = 1\n", "hidden_dim = 128\n", "hidden_dim2 = 64\n", "n_layers = 2\n", "\n", "net = BiLSTM(weights_matrix, output_size, hidden_dim, hidden_dim2, n_layers)\n", "\n", "# Load the model's state_dict\n", "net.load_state_dict(torch.load('state_dict.pt', map_location=torch.device('cpu')))\n", "net.eval()\n", "\n", "# Streamlit app\n", "def main():\n", " st.title(\"Disaster Tweet Classifier\")\n", " st.write(\"Enter a tweet to classify whether it's about a real disaster or not.\")\n", "\n", " user_input = st.text_area(\"Enter Tweet Text:\")\n", "\n", " if st.button(\"Classify\"):\n", " if user_input:\n", " # Preprocess input\n", " clean_input = clean_text(user_input)\n", " seq = text_to_sequence(clean_input, word2idx)\n", " input_tensor = torch.from_numpy(seq).unsqueeze(0).type(torch.LongTensor)\n", "\n", " # Initialize hidden state\n", " h = net.init_hidden(1, train_on_gpu=False)\n", " h = tuple([each.data for each in h])\n", "\n", " # Make prediction\n", " with torch.no_grad():\n", " output, h = net(input_tensor, h)\n", " prob = output.item()\n", " pred = int(torch.round(output).item())\n", "\n", " # Display result\n", " if pred == 1:\n", " st.success(f\"This tweet is about a **real disaster**. (Probability: {prob:.4f})\")\n", " else:\n", " st.info(f\"This tweet is **not about a real disaster**. (Probability: {prob:.4f})\")\n", " else:\n", " st.warning(\"Please enter some text to classify.\")\n", "\n", "if __name__ == '__main__':\n", " main()\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "vWW_rDh6wTJT", "outputId": "6c1f52e5-974c-4328-d9df-51c37d10ae01" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Writing app.py\n" ] } ] }, { "cell_type": "code", "source": [ "pip install streamlit pyngrok\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "u5w4yYeew5BN", "outputId": "76cb96a8-b23f-4f16-c037-efcfaf6a2918" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Requirement already satisfied: streamlit in /usr/local/lib/python3.10/dist-packages (1.38.0)\n", "Requirement already satisfied: pyngrok in /usr/local/lib/python3.10/dist-packages (7.2.0)\n", "Requirement already satisfied: altair<6,>=4.0 in /usr/local/lib/python3.10/dist-packages (from streamlit) (4.2.2)\n", "Requirement already satisfied: blinker<2,>=1.0.0 in /usr/lib/python3/dist-packages (from streamlit) (1.4)\n", "Requirement already satisfied: cachetools<6,>=4.0 in /usr/local/lib/python3.10/dist-packages (from streamlit) (5.5.0)\n", "Requirement already satisfied: click<9,>=7.0 in /usr/local/lib/python3.10/dist-packages (from streamlit) (8.1.7)\n", "Requirement already satisfied: numpy<3,>=1.20 in /usr/local/lib/python3.10/dist-packages (from streamlit) (1.26.4)\n", "Requirement already satisfied: packaging<25,>=20 in /usr/local/lib/python3.10/dist-packages (from streamlit) (24.1)\n", "Requirement already satisfied: pandas<3,>=1.3.0 in /usr/local/lib/python3.10/dist-packages (from streamlit) (2.1.4)\n", "Requirement already satisfied: pillow<11,>=7.1.0 in /usr/local/lib/python3.10/dist-packages (from streamlit) (10.4.0)\n", "Requirement already satisfied: protobuf<6,>=3.20 in /usr/local/lib/python3.10/dist-packages (from streamlit) (3.20.3)\n", "Requirement already satisfied: pyarrow>=7.0 in /usr/local/lib/python3.10/dist-packages (from streamlit) (14.0.2)\n", "Requirement already satisfied: requests<3,>=2.27 in /usr/local/lib/python3.10/dist-packages (from streamlit) (2.32.3)\n", "Requirement already satisfied: rich<14,>=10.14.0 in /usr/local/lib/python3.10/dist-packages (from streamlit) (13.8.1)\n", "Requirement already satisfied: tenacity<9,>=8.1.0 in /usr/local/lib/python3.10/dist-packages (from streamlit) (8.5.0)\n", "Requirement already satisfied: toml<2,>=0.10.1 in /usr/local/lib/python3.10/dist-packages (from streamlit) (0.10.2)\n", "Requirement already satisfied: typing-extensions<5,>=4.3.0 in /usr/local/lib/python3.10/dist-packages (from streamlit) (4.12.2)\n", "Requirement already satisfied: gitpython!=3.1.19,<4,>=3.0.7 in /usr/local/lib/python3.10/dist-packages (from streamlit) (3.1.43)\n", "Requirement already satisfied: pydeck<1,>=0.8.0b4 in /usr/local/lib/python3.10/dist-packages (from streamlit) (0.9.1)\n", "Requirement already satisfied: tornado<7,>=6.0.3 in /usr/local/lib/python3.10/dist-packages (from streamlit) (6.3.3)\n", "Requirement already satisfied: watchdog<5,>=2.1.5 in /usr/local/lib/python3.10/dist-packages (from streamlit) (4.0.2)\n", "Requirement already satisfied: PyYAML>=5.1 in /usr/local/lib/python3.10/dist-packages (from pyngrok) (6.0.2)\n", "Requirement already satisfied: entrypoints in /usr/local/lib/python3.10/dist-packages (from altair<6,>=4.0->streamlit) (0.4)\n", "Requirement already satisfied: jinja2 in /usr/local/lib/python3.10/dist-packages (from altair<6,>=4.0->streamlit) (3.1.4)\n", "Requirement already satisfied: jsonschema>=3.0 in /usr/local/lib/python3.10/dist-packages (from altair<6,>=4.0->streamlit) (4.23.0)\n", "Requirement already satisfied: toolz in /usr/local/lib/python3.10/dist-packages (from altair<6,>=4.0->streamlit) (0.12.1)\n", "Requirement already satisfied: gitdb<5,>=4.0.1 in /usr/local/lib/python3.10/dist-packages (from gitpython!=3.1.19,<4,>=3.0.7->streamlit) (4.0.11)\n", "Requirement already satisfied: python-dateutil>=2.8.2 in /usr/local/lib/python3.10/dist-packages (from pandas<3,>=1.3.0->streamlit) (2.8.2)\n", "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3,>=1.3.0->streamlit) (2024.2)\n", "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3,>=1.3.0->streamlit) (2024.1)\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.27->streamlit) (3.3.2)\n", "Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.27->streamlit) (3.10)\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.27->streamlit) (2.2.3)\n", "Requirement already satisfied: certifi>=2017.4.17 in /usr/local/lib/python3.10/dist-packages (from requests<3,>=2.27->streamlit) (2024.8.30)\n", "Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.10/dist-packages (from rich<14,>=10.14.0->streamlit) (3.0.0)\n", "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.10/dist-packages (from rich<14,>=10.14.0->streamlit) (2.18.0)\n", "Requirement already satisfied: smmap<6,>=3.0.1 in /usr/local/lib/python3.10/dist-packages (from gitdb<5,>=4.0.1->gitpython!=3.1.19,<4,>=3.0.7->streamlit) (5.0.1)\n", "Requirement already satisfied: MarkupSafe>=2.0 in /usr/local/lib/python3.10/dist-packages (from jinja2->altair<6,>=4.0->streamlit) (2.1.5)\n", "Requirement already satisfied: attrs>=22.2.0 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=3.0->altair<6,>=4.0->streamlit) (24.2.0)\n", "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=3.0->altair<6,>=4.0->streamlit) (2023.12.1)\n", "Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=3.0->altair<6,>=4.0->streamlit) (0.35.1)\n", "Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=3.0->altair<6,>=4.0->streamlit) (0.20.0)\n", "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.10/dist-packages (from markdown-it-py>=2.2.0->rich<14,>=10.14.0->streamlit) (0.1.2)\n", "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.2->pandas<3,>=1.3.0->streamlit) (1.16.0)\n" ] } ] }, { "cell_type": "code", "source": [ "# Install necessary packages\n", "\n", "# Authenticate ngrok\n", "from pyngrok import ngrok\n", "ngrok.set_auth_token('2mdzC5PhaSZt0Kh7DcRfqbT4pfK_366JmJjiSDP9qLC8ZrTSH') # Replace with your actual token\n" ], "metadata": { "id": "QJdqmEL7wxt0" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "# Run the Streamlit app\n", "import subprocess\n", "import threading\n", "\n", "def run_app():\n", " subprocess.call(['streamlit', 'run', 'app.py', '--server.port', '8501', '--server.headless', 'true'])\n", "\n", "thread = threading.Thread(target=run_app)\n", "thread.start()\n", "\n", "# Expose the app using ngrok\n", "public_url = ngrok.connect(8501)\n", "print(f'Access your app at: {public_url}')\n" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "MGXqn-cQw_MS", "outputId": "52a5429c-77fa-4010-9631-d823216dcd3c" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Access your app at: NgrokTunnel: \"https://cfe5-34-82-129-198.ngrok-free.app\" -> \"http://localhost:8501\"\n" ] } ] }, { "cell_type": "code", "source": [ "!python --version" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "wfjx2ybQ7HeO", "outputId": "afd31716-aabf-422c-fbc6-e07dbec66d4e" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Python 3.10.12\n" ] } ] }, { "cell_type": "code", "source": [ "import torch\n", "print(torch.__version__)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "M3lkAnka-Mau", "outputId": "c169cbc7-ca90-4377-8f03-25397bcd6b82" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "2.4.1+cu121\n" ] } ] }, { "cell_type": "markdown", "source": [], "metadata": { "id": "GxL9QG15vMag" } } ] }