diff --git a/README.md b/README.md index 538f62d..c88d5f6 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # 📊 Business KPI Prediction from Financial Data (PyTorch) +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)]([https://colab.research.google.com/github/syedabdullahbukhari77/Revenue_Forecasting_Business_Prediction_model_Pytorch/blob/main/notebooks/demo.ipynb](https://colab.research.google.com/drive/1PZDRWDH1c7dxteG9uOvPkiQ5mfuMPHw7)) + +--- + ## 1. Introduction This repository implements a **multi-task deep learning model** for predicting key business performance indicators (KPIs) from tabular financial/accounting data. The model jointly learns three predictive tasks: @@ -18,7 +22,7 @@ Conventional financial forecasting methods (linear models, rule-based systems, s This project demonstrates how **multi-task learning (MTL)** can serve as a scalable, modern approach to forecasting KPIs, providing: - **One model → multiple outputs** -- **Feature integration** across categorical, numerical, and time-based inputs +- **Feature integration** across categorical, numerical, and temporal inputs - **Extensible baseline** for real-world datasets --- @@ -46,10 +50,21 @@ This project demonstrates how **multi-task learning (MTL)** can serve as a scala --- -## 5. Training Setup +## 5. Preprocessing Pipeline +All preprocessing steps are modularized in `preprocessing.py`: +- Missing value handling +- Feature scaling (with `scaler.pkl`) +- Label/categorical encoding (with `encoders.pkl`) +- Automatic column validation during inference + +This ensures **consistency between training and deployment**. + +--- + +## 6. Training Setup - **Split:** 2020–2024 → training | 2024–2025 → validation/testing - **Optimizer:** Adam (`lr = 5e-5`) -- **Loss:** `Loss = MSE(revenue) + MSE(risk) + BCE(churn)` +- **Loss:** MSE(revenue) + MSE(risk) + BCE(churn) - **Batch size:** 128 - **Epochs:** 100 @@ -64,7 +79,7 @@ This project demonstrates how **multi-task learning (MTL)** can serve as a scala --- -## 6. Results +## 7. Results - Model shows **stable convergence** on all three tasks. - Training and validation losses are closely aligned → low overfitting on synthetic data. - Demonstrates feasibility of **joint KPI forecasting** using deep learning. @@ -73,10 +88,19 @@ This project demonstrates how **multi-task learning (MTL)** can serve as a scala --- -## 7. Usage +## 8. Deployment (Streamlit App) +This repository includes a **Streamlit web app** for interactive predictions. + +### Run Locally +Make sure you have trained the model and saved artifacts (`finance_model.pth`, `scaler.pkl`, `encoders.pkl`) in the `models/` folder. -### Installation ```bash -git clone https://github.com/syedabdullahbukhari77/Revenue_Forecasting_Business_Prediction_model_Pytorch -cd Revenue_Forecasting_Business_Prediction_model_Pytorch -pip install -r requirements.txt +# Step 1: Train the model +python train.py + +# Step 2: Validate model performance +python validate.py + +# Step 3: Launch Streamlit app +streamlit run server/app.py + diff --git a/notebooks/prototype-notebook.ipynb b/notebooks/prototype-notebook.ipynb deleted file mode 100644 index 32fa912..0000000 --- a/notebooks/prototype-notebook.ipynb +++ /dev/null @@ -1,819 +0,0 @@ -{ - "nbformat": 4, - "nbformat_minor": 0, - "metadata": { - "colab": { - "provenance": [] - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "language_info": { - "name": "python" - } - }, - "cells": [ - { - "cell_type": "code", - "source": [ - "import pandas as pd , numpy as np , seaborn as sns , matplotlib.pyplot as plt" - ], - "metadata": { - "id": "q6Rr_lYfnIx6" - }, - "execution_count": 1, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "import torch\n", - "import torch.nn as nn\n", - "import torch.optim as optim" - ], - "metadata": { - "id": "giWfxt3Ecxqt" - }, - "execution_count": 2, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "from torch.utils.data import Dataset , DataLoader" - ], - "metadata": { - "id": "iOhwsRI2hOG-" - }, - "execution_count": 3, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "from sklearn.preprocessing import StandardScaler , LabelEncoder\n", - "from sklearn.model_selection import train_test_split" - ], - "metadata": { - "id": "wxchvH2DhDKt" - }, - "execution_count": 4, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "%%matplotlib.inline" - ], - "metadata": { - "id": "XH0UZuBSnIz9", - "colab": { - "base_uri": "https://localhost:8080/" - }, - "collapsed": true, - "outputId": "349295b1-0cb8-40e1-90f5-7ea02dd50890" - }, - "execution_count": 5, - "outputs": [ - { - "output_type": "stream", - "name": "stderr", - "text": [ - "UsageError: Cell magic `%%matplotlib.inline` not found.\n" - ] - } - ] - }, - { - "cell_type": "code", - "source": [ - "try:\n", - " df = pd.read_csv('/content/synthetic_financial_data_bukharii.csv')\n", - "except FileNotFoundError as e:\n", - " print(f'{e}')" - ], - "metadata": { - "id": "L0rgx1ZHnI1t" - }, - "execution_count": 6, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "def fin_data():\n", - " for col in df.columns: print(f'{col}: {df[col].isnull().sum()}')\n", - "fin_data()" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "collapsed": true, - "id": "sQpUTmowGHw2", - "outputId": "810433b9-ff2c-45aa-d732-bc82d0528347" - }, - "execution_count": 19, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "company_id: 0\n", - "date: 0\n", - "industry: 0\n", - "region: 0\n", - "company_size: 0\n", - "customer_tenure: 0\n", - "revenue: 0\n", - "cost_of_goods_sold: 0\n", - "operating_income: 0\n", - "total_assets: 0\n", - "total_debt: 0\n", - "revenue_growth: 0\n", - "risk_score: 0\n", - "churn: 0\n", - "gross_profit: 0\n", - "operating_margin: 0\n", - "debt_ratio: 0\n", - "log_revenue: 0\n", - "some_other_features: 0\n" - ] - } - ] - }, - { - "cell_type": "code", - "source": [ - "for col in df.columns: print(f'{col}')" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "QJ3EcrL8eMQM", - "outputId": "10ecbc7f-c091-4c5e-dd56-db06b3760ff2" - }, - "execution_count": 10, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "company_id\n", - "date\n", - "industry\n", - "region\n", - "company_size\n", - "customer_tenure\n", - "revenue\n", - "cost_of_goods_sold\n", - "operating_income\n", - "total_assets\n", - "total_debt\n", - "revenue_growth\n", - "risk_score\n", - "churn\n", - "gross_profit\n", - "operating_margin\n", - "debt_ratio\n", - "log_revenue\n", - "some_other_features\n" - ] - } - ] - }, - { - "cell_type": "code", - "source": [ - "df = df.dropna(subset=['revenue' , 'risk_score' , 'churn'])" - ], - "metadata": { - "id": "1hFfU1Oqnd9w" - }, - "execution_count": 8, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "cate_cols = ['industry' , 'region' , 'company_size']" - ], - "metadata": { - "id": "FuEhukTgelzq" - }, - "execution_count": 9, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "encoders = {col: LabelEncoder().fit(df[col]) for col in cate_cols}" - ], - "metadata": { - "id": "06v6wB5eg-iE" - }, - "execution_count": 10, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "for col in cate_cols:\n", - " df[col] = encoders[col].transform(df[col])" - ], - "metadata": { - "id": "BG5noA8wjgIz" - }, - "execution_count": 11, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "features: list = ['customer_tenure' , 'industry' , 'some_other_features' , 'company_size' , 'region' , 'operating_margin' , 'debt_ratio' , 'log_revenue' , 'gross_profit']" - ], - "metadata": { - "id": "PcVZ-c2DnIP2" - }, - "execution_count": 12, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "X = df[features].values" - ], - "metadata": { - "id": "Q-U9P0sAnIRf" - }, - "execution_count": 13, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "target_col: list = ['revenue_growth' , 'risk_score' , 'churn']" - ], - "metadata": { - "id": "r2QAgTT6iZlK" - }, - "execution_count": 14, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "scaler = StandardScaler()" - ], - "metadata": { - "id": "_ZRsN1arjYox" - }, - "execution_count": 15, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "X = scaler.fit_transform(X)" - ], - "metadata": { - "id": "DnT4kD4MjqM_" - }, - "execution_count": 16, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "y = df[target_col].values" - ], - "metadata": { - "id": "Djzgo-ysjEDt" - }, - "execution_count": 17, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "y_risk_score , y_revenue_growth , y_churn = df['risk_score'] , df['revenue_growth'] , df['churn']" - ], - "metadata": { - "id": "CgQtl6bPeKWS" - }, - "execution_count": 20, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "X_train , X_val , y_train , y_val = train_test_split(X , y , test_size=0.2 , random_state=42)" - ], - "metadata": { - "id": "Q4ol_4Kvjtyj" - }, - "execution_count": 21, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "class FinanceDataset(Dataset):\n", - " def __init__(self , X , y): self.X , self.y = torch.tensor(X, dtype=torch.float32) , torch.tensor(y , dtype=torch.float32)\n", - "\n", - " def __len__(self): return len(self.X)\n", - "\n", - " def __getitem__(self, idx): return self.X[idx] , self.y[idx]" - ], - "metadata": { - "id": "mY8FV8LIEBIb" - }, - "execution_count": 22, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "batch_size , train_ds , val_ds = 128 , FinanceDataset(X_train , y_train) , FinanceDataset(X_val , y_val)" - ], - "metadata": { - "id": "4AkfSSoIEUko" - }, - "execution_count": 24, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "train_loader , val_loader = DataLoader(train_ds , shuffle=True , batch_size=batch_size) , DataLoader(val_ds , batch_size=batch_size)" - ], - "metadata": { - "id": "ZaneHH18bWPY" - }, - "execution_count": 25, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "import torch.nn as nn" - ], - "metadata": { - "id": "xgYArI1fbpiG" - }, - "execution_count": 26, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "class finance_model(nn.Module):\n", - " def __init__(self , input_dim):\n", - " super(finance_model , self).__init__()\n", - "\n", - " self.shared = nn.Sequential(\n", - " nn.Linear(input_dim , 128),\n", - " nn.ReLU(),\n", - " nn.BatchNorm1d(128),\n", - " nn.Dropout(0.3),\n", - " nn.Linear(128 , 64),\n", - " nn.ReLU()\n", - " )\n", - "\n", - " self.revenue_head , self.risk_head , self.churn_head = nn.Linear(64 , 1) , nn.Linear(64 , 1) , nn.Linear(64 , 1)\n", - "\n", - " def forward(self , X):\n", - "\n", - " X = self.shared(X)\n", - "\n", - " revenue= self.revenue_head(X)\n", - " risk=self.risk_head(X)\n", - " churn= (self.churn_head(X))\n", - "\n", - " return revenue.squeeze () , risk.squeeze() , churn.squeeze()" - ], - "metadata": { - "id": "ilZTAOStbz4n" - }, - "execution_count": 46, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "model = finance_model(input_dim=X.shape[1])" - ], - "metadata": { - "id": "hrVcRyHgcd4z" - }, - "execution_count": 47, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "optimizer = torch.optim.Adam(model.parameters() , lr=0.00005)\n", - "loss_fn1 = nn.MSELoss()\n", - "loss_fn2 = nn.BCEWithLogitsLoss()" - ], - "metadata": { - "id": "phmYwgb5eKtc" - }, - "execution_count": 48, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "device = torch.device('cpu')" - ], - "metadata": { - "id": "MeZPC5X9eas2" - }, - "execution_count": 49, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "model.to(device)" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "Z37QQrSwfynt", - "outputId": "f8009531-6822-4557-e6e0-b011b7be380b" - }, - "execution_count": 50, - "outputs": [ - { - "output_type": "execute_result", - "data": { - "text/plain": [ - "finance_model(\n", - " (shared): Sequential(\n", - " (0): Linear(in_features=9, out_features=128, bias=True)\n", - " (1): ReLU()\n", - " (2): BatchNorm1d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (3): Dropout(p=0.3, inplace=False)\n", - " (4): Linear(in_features=128, out_features=64, bias=True)\n", - " (5): ReLU()\n", - " )\n", - " (revenue_head): Linear(in_features=64, out_features=1, bias=True)\n", - " (risk_head): Linear(in_features=64, out_features=1, bias=True)\n", - " (churn_head): Linear(in_features=64, out_features=1, bias=True)\n", - ")" - ] - }, - "metadata": {}, - "execution_count": 50 - } - ] - }, - { - "cell_type": "code", - "source": [ - "epochs: int= 80\n", - "\n", - "losses : list = []\n", - "\n", - "val_losses : list = []" - ], - "metadata": { - "id": "CTchIQAigi7N" - }, - "execution_count": 51, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "def validation(model , loss_fn1 , loss_fn2 , device, val_loader):\n", - "\n", - " model.eval()\n", - " val_loss = 0.0\n", - "\n", - " with torch.no_grad():\n", - " for X_batch , y_batch in val_loader:\n", - " X_batch , y_batch = X_batch.to(device) , y_batch.to(device)\n", - " y_rev , y_risk , y_churn = y_batch[: , 0] , y_batch[: , 1] , y_batch[: , 2]\n", - "\n", - " (pred_rev , pred_risk , pred_churn) = model(X_batch)\n", - "\n", - " loss_rev , loss_risk , loss_churn = loss_fn1(pred_rev , y_rev) , loss_fn1(pred_risk , y_risk) , loss_fn2(pred_churn , y_churn)\n", - "\n", - " loss = loss_rev + loss_risk + loss_churn\n", - "\n", - " val_loss += loss.item()\n", - "\n", - " return val_loss / len(val_loader)" - ], - "metadata": { - "id": "tE-Av2cWrt_E" - }, - "execution_count": 52, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "epochs : int = 100\n", - "losses : list[float] = []\n", - "var_losses : list[float] = []" - ], - "metadata": { - "id": "Pi_8Pke2xI7D" - }, - "execution_count": 53, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "for epoch in range(epochs):\n", - " model.train()\n", - "\n", - " runing_loss = 0.0\n", - "\n", - " for X_batch , y_batch in train_loader :\n", - " X_batch , y_batch = X_batch.to(device) , y_batch.to(device)\n", - " y_rev , y_risk , y_churn = y_batch[: , 0] , y_batch[: , 1] , y_batch[: , 2]\n", - "\n", - " optimizer.zero_grad()\n", - "\n", - " pred_rev , pred_risk , pred_churn = model(X_batch)\n", - "\n", - " loss_rev = loss_fn1( pred_rev , y_rev)\n", - " loss_risk = loss_fn1 (pred_risk , y_risk )\n", - " loss_churn = loss_fn2 (pred_churn , y_churn)\n", - "\n", - " loss = loss_rev + loss_risk + loss_churn\n", - "\n", - " loss.backward()\n", - "\n", - " optimizer.step()\n", - "\n", - " runing_loss += loss.item()\n", - "\n", - " trian_loss_avg = runing_loss / len(train_loader)\n", - " losses.append(trian_loss_avg)\n", - "\n", - " if (epoch + 1) % 5 == 0:\n", - " val_loss = validation(model , loss_fn1 , loss_fn2 , device, val_loader)\n", - " val_losses.append(val_loss)\n", - " print(f'Epoch: {epoch + 1}/{epochs} -> Training Loss: {trian_loss_avg:.4f} | Val Loss: {val_loss:.4f}')\n", - "\n", - " else: print(f'Epoch {epoch+1}/{epoch} -> Training Loss: {trian_loss_avg:.4f}')" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/" - }, - "id": "BrbQvwx_1_yN", - "outputId": "b38aaedb-12ea-41b9-a188-4aed5d876c47" - }, - "execution_count": 56, - "outputs": [ - { - "output_type": "stream", - "name": "stdout", - "text": [ - "Epoch 1/0 -> Training Loss: 0.6301\n", - "Epoch 2/1 -> Training Loss: 0.6297\n", - "Epoch 3/2 -> Training Loss: 0.6307\n", - "Epoch 4/3 -> Training Loss: 0.6300\n", - "Epoch: 5/100 -> Training Loss: 0.6300 | Val Loss: 0.6354\n", - "Epoch 6/5 -> Training Loss: 0.6294\n", - "Epoch 7/6 -> Training Loss: 0.6295\n", - "Epoch 8/7 -> Training Loss: 0.6300\n", - "Epoch 9/8 -> Training Loss: 0.6296\n", - "Epoch: 10/100 -> Training Loss: 0.6291 | Val Loss: 0.6347\n", - "Epoch 11/10 -> Training Loss: 0.6294\n", - "Epoch 12/11 -> Training Loss: 0.6295\n", - "Epoch 13/12 -> Training Loss: 0.6297\n", - "Epoch 14/13 -> Training Loss: 0.6286\n", - "Epoch: 15/100 -> Training Loss: 0.6293 | Val Loss: 0.6361\n", - "Epoch 16/15 -> Training Loss: 0.6278\n", - "Epoch 17/16 -> Training Loss: 0.6282\n", - "Epoch 18/17 -> Training Loss: 0.6281\n", - "Epoch 19/18 -> Training Loss: 0.6280\n", - "Epoch: 20/100 -> Training Loss: 0.6281 | Val Loss: 0.6350\n", - "Epoch 21/20 -> Training Loss: 0.6280\n", - "Epoch 22/21 -> Training Loss: 0.6279\n", - "Epoch 23/22 -> Training Loss: 0.6276\n", - "Epoch 24/23 -> Training Loss: 0.6279\n", - "Epoch: 25/100 -> Training Loss: 0.6277 | Val Loss: 0.6350\n", - "Epoch 26/25 -> Training Loss: 0.6273\n", - "Epoch 27/26 -> Training Loss: 0.6272\n", - "Epoch 28/27 -> Training Loss: 0.6272\n", - "Epoch 29/28 -> Training Loss: 0.6273\n", - "Epoch: 30/100 -> Training Loss: 0.6272 | Val Loss: 0.6346\n", - "Epoch 31/30 -> Training Loss: 0.6276\n", - "Epoch 32/31 -> Training Loss: 0.6273\n", - "Epoch 33/32 -> Training Loss: 0.6270\n", - "Epoch 34/33 -> Training Loss: 0.6264\n", - "Epoch: 35/100 -> Training Loss: 0.6266 | Val Loss: 0.6344\n", - "Epoch 36/35 -> Training Loss: 0.6267\n", - "Epoch 37/36 -> Training Loss: 0.6271\n", - "Epoch 38/37 -> Training Loss: 0.6265\n", - "Epoch 39/38 -> Training Loss: 0.6266\n", - "Epoch: 40/100 -> Training Loss: 0.6262 | Val Loss: 0.6340\n", - "Epoch 41/40 -> Training Loss: 0.6258\n", - "Epoch 42/41 -> Training Loss: 0.6264\n", - "Epoch 43/42 -> Training Loss: 0.6264\n", - "Epoch 44/43 -> Training Loss: 0.6258\n", - "Epoch: 45/100 -> Training Loss: 0.6259 | Val Loss: 0.6339\n", - "Epoch 46/45 -> Training Loss: 0.6262\n", - "Epoch 47/46 -> Training Loss: 0.6261\n", - "Epoch 48/47 -> Training Loss: 0.6267\n", - "Epoch 49/48 -> Training Loss: 0.6258\n", - "Epoch: 50/100 -> Training Loss: 0.6258 | Val Loss: 0.6339\n", - "Epoch 51/50 -> Training Loss: 0.6261\n", - "Epoch 52/51 -> Training Loss: 0.6254\n", - "Epoch 53/52 -> Training Loss: 0.6254\n", - "Epoch 54/53 -> Training Loss: 0.6256\n", - "Epoch: 55/100 -> Training Loss: 0.6255 | Val Loss: 0.6339\n", - "Epoch 56/55 -> Training Loss: 0.6257\n", - "Epoch 57/56 -> Training Loss: 0.6251\n", - "Epoch 58/57 -> Training Loss: 0.6255\n", - "Epoch 59/58 -> Training Loss: 0.6254\n", - "Epoch: 60/100 -> Training Loss: 0.6254 | Val Loss: 0.6340\n", - "Epoch 61/60 -> Training Loss: 0.6246\n", - "Epoch 62/61 -> Training Loss: 0.6258\n", - "Epoch 63/62 -> Training Loss: 0.6254\n", - "Epoch 64/63 -> Training Loss: 0.6249\n", - "Epoch: 65/100 -> Training Loss: 0.6245 | Val Loss: 0.6337\n", - "Epoch 66/65 -> Training Loss: 0.6254\n", - "Epoch 67/66 -> Training Loss: 0.6248\n", - "Epoch 68/67 -> Training Loss: 0.6251\n", - "Epoch 69/68 -> Training Loss: 0.6249\n", - "Epoch: 70/100 -> Training Loss: 0.6247 | Val Loss: 0.6336\n", - "Epoch 71/70 -> Training Loss: 0.6243\n", - "Epoch 72/71 -> Training Loss: 0.6247\n", - "Epoch 73/72 -> Training Loss: 0.6249\n", - "Epoch 74/73 -> Training Loss: 0.6243\n", - "Epoch: 75/100 -> Training Loss: 0.6246 | Val Loss: 0.6337\n", - "Epoch 76/75 -> Training Loss: 0.6251\n", - "Epoch 77/76 -> Training Loss: 0.6247\n", - "Epoch 78/77 -> Training Loss: 0.6245\n", - "Epoch 79/78 -> Training Loss: 0.6240\n", - "Epoch: 80/100 -> Training Loss: 0.6238 | Val Loss: 0.6338\n", - "Epoch 81/80 -> Training Loss: 0.6243\n", - "Epoch 82/81 -> Training Loss: 0.6241\n", - "Epoch 83/82 -> Training Loss: 0.6239\n", - "Epoch 84/83 -> Training Loss: 0.6246\n", - "Epoch: 85/100 -> Training Loss: 0.6243 | Val Loss: 0.6333\n", - "Epoch 86/85 -> Training Loss: 0.6240\n", - "Epoch 87/86 -> Training Loss: 0.6239\n", - "Epoch 88/87 -> Training Loss: 0.6236\n", - "Epoch 89/88 -> Training Loss: 0.6231\n", - "Epoch: 90/100 -> Training Loss: 0.6251 | Val Loss: 0.6331\n", - "Epoch 91/90 -> Training Loss: 0.6236\n", - "Epoch 92/91 -> Training Loss: 0.6238\n", - "Epoch 93/92 -> Training Loss: 0.6239\n", - "Epoch 94/93 -> Training Loss: 0.6237\n", - "Epoch: 95/100 -> Training Loss: 0.6238 | Val Loss: 0.6329\n", - "Epoch 96/95 -> Training Loss: 0.6235\n", - "Epoch 97/96 -> Training Loss: 0.6237\n", - "Epoch 98/97 -> Training Loss: 0.6238\n", - "Epoch 99/98 -> Training Loss: 0.6238\n", - "Epoch: 100/100 -> Training Loss: 0.6239 | Val Loss: 0.6333\n" - ] - } - ] - }, - { - "cell_type": "code", - "source": [ - "import matplotlib.pyplot as plt" - ], - "metadata": { - "id": "TtJFo8EquFsT" - }, - "execution_count": 57, - "outputs": [] - }, - { - "cell_type": "code", - "source": [ - "plt.plot(range(1, len(losses) + 1) , losses , marker = 'o' , color='green')\n", - "plt.title('Training Loss over Epochs')\n", - "plt.xlabel('Epoch')\n", - "plt.ylabel('Loss (Lower is better!)')\n", - "plt.grid()\n", - "plt.tight_layout()\n", - "plt.show()" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 487 - }, - "id": "NP_aIGqxusXF", - "outputId": "7b9c5a19-6278-419d-8cff-797d06174f13" - }, - "execution_count": 58, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAnYAAAHWCAYAAAD6oMSKAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAUkFJREFUeJzt3XlclOX+//H3sA1g4g4KaLiVW5lpGrlWJC7HVCzLNMlKj6bl0qZpbueUWSfTyrTd6lsnzWOWpSaampb7Vi6ZlbviGoKCgHD//vDH5AgzMDpzDwyv53nwOM5933PPhw9k7677vq7bYhiGIQAAAJR4ft4uAAAAAO5BsAMAAPARBDsAAAAfQbADAADwEQQ7AAAAH0GwAwAA8BEEOwAAAB9BsAMAAPARBDsAAAAfQbADYPPQQw8pJibmit47fvx4WSwW9xYEFGDWrFmyWCzauHGjt0sBih2CHVACWCyWIn2tWLHC26V6xUMPPaRrrrnG22X4jLzg5Ohr7dq13i4RgAMB3i4AQOE++eQTu9cff/yxkpKS8m2vX7/+VX3Ou+++q9zc3Ct675gxYzRy5Mir+nwULxMnTlTNmjXzba9Tp44XqgFQFAQ7oATo06eP3eu1a9cqKSkp3/bLpaenKzQ0tMifExgYeEX1SVJAQIACAvgrpaQ4d+6cypQp4/SYjh07qlmzZiZVBMAduBQL+Ih27dqpUaNG2rRpk9q0aaPQ0FA999xzkqSvvvpKnTt3VmRkpKxWq2rXrq1//etfysnJsTvH5ffY7du3TxaLRf/5z3/0zjvvqHbt2rJarbrlllu0YcMGu/cWdI+dxWLRkCFDNH/+fDVq1EhWq1UNGzbU4sWL89W/YsUKNWvWTMHBwapdu7befvttt9+398UXX6hp06YKCQlR5cqV1adPHx0+fNjumOTkZPXr10/R0dGyWq2qVq2aunbtqn379tmO2bhxo+Lj41W5cmWFhISoZs2aevjhh4tUw1tvvaWGDRvKarUqMjJSgwcPVkpKim3/kCFDdM011yg9PT3fe3v16qWqVava/dwWLVqk1q1bq0yZMipbtqw6d+6sHTt22L0v71L1H3/8oU6dOqls2bLq3bt3kep15tLfj9dee03XXnutQkJC1LZtW23fvj3f8d9//72t1vLly6tr167atWtXvuMOHz6sRx55xPb7WrNmTQ0aNEhZWVl2x2VmZmrEiBGqUqWKypQpo+7du+vEiRN2x1zNzwooifjPa8CHnDp1Sh07dtT999+vPn36KCIiQtLFe6auueYajRgxQtdcc42+//57jR07VqmpqXrllVcKPe9nn32mtLQ0/fOf/5TFYtHLL7+shIQE/fnnn4WO8q1evVrz5s3TY489prJly+r1119Xjx49dODAAVWqVEmStGXLFnXo0EHVqlXThAkTlJOTo4kTJ6pKlSpX35T/b9asWerXr59uueUWTZo0SceOHdO0adP0448/asuWLSpfvrwkqUePHtqxY4cef/xxxcTE6Pjx40pKStKBAwdsr9u3b68qVapo5MiRKl++vPbt26d58+YVWsP48eM1YcIExcXFadCgQdq9e7dmzJihDRs26Mcff1RgYKDuu+8+TZ8+Xd9++63uvfde23vT09O1YMECPfTQQ/L395d08RJ9YmKi4uPjNXnyZKWnp2vGjBlq1aqVtmzZYhfSL1y4oPj4eLVq1Ur/+c9/ijSSe+bMGZ08edJum8Visf3c8nz88cdKS0vT4MGDdf78eU2bNk133HGHfvnlF9vv4NKlS9WxY0fVqlVL48ePV0ZGht544w21bNlSmzdvttV65MgRNW/eXCkpKRowYIDq1aunw4cPa+7cuUpPT1dQUJDtcx9//HFVqFBB48aN0759+zR16lQNGTJEs2fPlqSr+lkBJZYBoMQZPHiwcfk/vm3btjUkGTNnzsx3fHp6er5t//znP43Q0FDj/Pnztm2JiYnGtddea3u9d+9eQ5JRqVIl4/Tp07btX331lSHJWLBggW3buHHj8tUkyQgKCjJ+//1327Zt27YZkow33njDtq1Lly5GaGiocfjwYdu2PXv2GAEBAfnOWZDExESjTJkyDvdnZWUZ4eHhRqNGjYyMjAzb9m+++caQZIwdO9YwDMP466+/DEnGK6+84vBcX375pSHJ2LBhQ6F1Xer48eNGUFCQ0b59eyMnJ8e2/c033zQkGR988IFhGIaRm5trREVFGT169LB7/5w5cwxJxg8//GAYhmGkpaUZ5cuXN/r37293XHJyslGuXDm77YmJiYYkY+TIkUWq9cMPPzQkFfhltVptx+X9foSEhBiHDh2ybV+3bp0hyRg+fLht20033WSEh4cbp06dsm3btm2b4efnZ/Tt29e2rW/fvoafn1+B/c3NzbWrLy4uzrbNMAxj+PDhhr+/v5GSkmIYxpX/rICSjEuxgA+xWq3q169fvu0hISG2P6elpenkyZNq3bq10tPT9euvvxZ63vvuu08VKlSwvW7durUk6c8//yz0vXFxcapdu7bt9Y033qiwsDDbe3NycrR06VJ169ZNkZGRtuPq1Kmjjh07Fnr+oti4caOOHz+uxx57TMHBwbbtnTt3Vr169fTtt99KutinoKAgrVixQn/99VeB58ob2fvmm2+UnZ1d5BqWLl2qrKwsDRs2TH5+f//V279/f4WFhdlqsFgsuvfee7Vw4UKdPXvWdtzs2bMVFRWlVq1aSZKSkpKUkpKiXr166eTJk7Yvf39/tWjRQsuXL89Xw6BBg4pcryRNnz5dSUlJdl+LFi3Kd1y3bt0UFRVle928eXO1aNFCCxculCQdPXpUW7du1UMPPaSKFSvajrvxxht111132Y7Lzc3V/Pnz1aVLlwLv7bv8svyAAQPstrVu3Vo5OTnav3+/pCv/WQElGcEO8CFRUVF2l6ry7NixQ927d1e5cuUUFhamKlWq2CZenDlzptDz1qhRw+51XshzFH6cvTfv/XnvPX78uDIyMgqcaemu2Zd5/6K//vrr8+2rV6+ebb/VatXkyZO1aNEiRUREqE2bNnr55ZeVnJxsO75t27bq0aOHJkyYoMqVK6tr16768MMPlZmZeUU1BAUFqVatWrb90sUgnZGRoa+//lqSdPbsWS1cuFD33nuvLcjs2bNHknTHHXeoSpUqdl9LlizR8ePH7T4nICBA0dHRhTfrEs2bN1dcXJzd1+23357vuLp16+bbdt1119nuS3TW//r16+vkyZM6d+6cTpw4odTUVDVq1KhI9RX2e3mlPyugJCPYAT7k0pG5PCkpKWrbtq22bdumiRMnasGCBUpKStLkyZMlqUjLm+Td03U5wzA8+l5vGDZsmH777TdNmjRJwcHBev7551W/fn1t2bJF0sVRo7lz52rNmjUaMmSIDh8+rIcfflhNmza1G2G7GrfeeqtiYmI0Z84cSdKCBQuUkZGh++67z3ZM3s/tk08+yTeqlpSUpK+++srunFar1W6k0BcU9rtlxs8KKG58659yAPmsWLFCp06d0qxZszR06FD94x//UFxcnN2lVW8KDw9XcHCwfv/993z7Ctp2Ja699lpJ0u7du/Pt2717t21/ntq1a+vJJ5/UkiVLtH37dmVlZenVV1+1O+bWW2/VCy+8oI0bN+rTTz/Vjh079Pnnn7tcQ1ZWlvbu3Zuvhp49e2rx4sVKTU3V7NmzFRMTo1tvvdWuRuli/y4fVYuLi1O7du0K6Yr75I0eXuq3336zTYhw1v9ff/1VlStXVpkyZVSlShWFhYUVOKP2arj6swJKMoId4OPyRjUuHSHLysrSW2+95a2S7Pj7+ysuLk7z58/XkSNHbNt///33Au/nuhLNmjVTeHi4Zs6caXcZbtGiRdq1a5c6d+4s6eLM0/Pnz9u9t3bt2ipbtqztfX/99Ve+0cabbrpJkpxe4ouLi1NQUJBef/11u/e///77OnPmjK2GPPfdd58yMzP10UcfafHixerZs6fd/vj4eIWFhenFF18s8P6xy5f98KT58+fbLRuzfv16rVu3znaPZLVq1XTTTTfpo48+slvaZfv27VqyZIk6deokSfLz81O3bt20YMGCAh8X5uoo75X+rICSjOVOAB932223qUKFCkpMTNQTTzwhi8WiTz75pFhdCh0/fryWLFmili1batCgQcrJydGbb76pRo0aaevWrUU6R3Z2tv7973/n216xYkU99thjmjx5svr166e2bduqV69etuVOYmJiNHz4cEkXR5nuvPNO9ezZUw0aNFBAQIC+/PJLHTt2TPfff78k6aOPPtJbb72l7t27q3bt2kpLS9O7776rsLAwW0ApSJUqVTRq1ChNmDBBHTp00N13363du3frrbfe0i233JJvsembb75ZderU0ejRo5WZmWl3GVaSwsLCNGPGDD344IO6+eabdf/996tKlSo6cOCAvv32W7Vs2VJvvvlmkXrnyKJFiwqcXHPbbbepVq1attd16tRRq1atNGjQIGVmZmrq1KmqVKmSnnnmGdsxr7zyijp27KjY2Fg98sgjtuVOypUrp/Hjx9uOe/HFF7VkyRK1bdtWAwYMUP369XX06FF98cUXWr16tW1CRFFc6c8KKNG8Nh8XwBVztNxJw4YNCzz+xx9/NG699VYjJCTEiIyMNJ555hnju+++MyQZy5cvtx3naLmTgpb/kGSMGzfO9trRcieDBw/O995rr73WSExMtNu2bNkyo0mTJkZQUJBRu3Zt47333jOefPJJIzg42EEX/pa3nEdBX7Vr17YdN3v2bKNJkyaG1Wo1KlasaPTu3dtumY6TJ08agwcPNurVq2eUKVPGKFeunNGiRQtjzpw5tmM2b95s9OrVy6hRo4ZhtVqN8PBw4x//+IexcePGQus0jIvLm9SrV88IDAw0IiIijEGDBhl//fVXgceOHj3akGTUqVPH4fmWL19uxMfHG+XKlTOCg4ON2rVrGw899JBdPYUtB3M5Z8udSDI+/PBDwzDsfz9effVVo3r16obVajVat25tbNu2Ld95ly5darRs2dIICQkxwsLCjC5duhg7d+7Md9z+/fuNvn37GlWqVDGsVqtRq1YtY/DgwUZmZqZdfZcvY7J8+XK73+mr/VkBJZHFMIrRf7YDwCW6deumHTt2FHgPF7xv3759qlmzpl555RU99dRT3i4HgLjHDkAxkZGRYfd6z549WrhwoamTAACgpOMeOwDFQq1atfTQQw/Z1nSbMWOGgoKC7O7TAgA4R7ADUCx06NBB//3vf5WcnCyr1arY2Fi9+OKLBS5+CwAoGPfYAQAA+AjusQMAAPARBDsAAAAfUeruscvNzdWRI0dUtmxZ28O0AQAAiivDMJSWlqbIyMhCn/lc6oLdkSNHVL16dW+XAQAA4JKDBw8qOjra6TGlLtiVLVtW0sXmhIWFue282dnZWrJkidq3b6/AwEC3nddX0B/H6I1z9McxeuMc/XGM3jhX3PqTmpqq6tWr2zKMM6Uu2OVdfg0LC3N7sAsNDVVYWFix+CUobuiPY/TGOfrjGL1xjv44Rm+cK679KcotZEyeAAAA8BEEOwAAAB9BsAMAAPARBDsAAAAfQbADAADwEQQ7AAAAH0GwAwAA8BEEOwAAAB9BsAMAAPARBDsAAAAfUeoeKWaGnNwcrTqwSkfTjqpa2WpqXaO1/P38vV0WAADwcQQ7N/vy1y/15NIndSj1kG1bdFi0pnWYpoT6CV6sDAAA+DouxbrRmpQ1un/e/XahTpIOpx7WPXPu0bxd87xUGQAAKA0Idm6Sk5uj9w6/J0NGvn1524YtHqac3ByzSwMAAKUEwc5NVh9crVPZpxzuN2ToYOpBrTqwysSqAABAaUKwc5OjZ48W7bi0oh0HAADgKoKdm1S7plrRjitbtOMAAABcRbBzk1bVW6lSYCVZZClwv0UWVQ+rrtY1WptcGQAAKC0Idm7i7+evR6MeLXBfXtib2mEq69kBAACPIdi5UWz5WH2e8LkiykTYbY8Oi9bcnnNZxw4AAHgUCxS7Wfd63VU/vL5unHmjygaV1de9vubJEwAAwBQEOw8I8g+SdPHybLuYdt4tBgAAlBpcivWAAL+LeZnFiAEAgJkIdh6QF+wu5F7wciUAAKA0Idh5AMEOAAB4A8HOA/ImShDsAACAmQh2HpA3YmfIUK6R6+VqAABAaUGw84C8YCcxgQIAAJiHYOcBlwY7LscCAACzEOw8wN/y92LEBDsAAGAWgp0HMGIHAAC8gWDnAZc+PizH4B47AABgDoKdB/hZ/ORnudhaRuwAAIBZCHYeknefHcEOAACYhWDnITx9AgAAmI1g5yF5wY517AAAgFkIdh7CiB0AADAbwc5DeF4sAAAwG8HOQxixAwAAZiPYeYjtHjvWsQMAACYh2HkII3YAAMBsBDsPYR07AABgNoKdhzBiBwAAzEaw8xDWsQMAAGYj2HkII3YAAMBsBDsPYR07AABgNoKdhzBiBwAAzEaw8xDWsQMAAGYj2HkII3YAAMBsBDsPYR07AABgNoKdhzBiBwAAzEaw8xDWsQMAAGYj2HkII3YAAMBsBDsPIdgBAACzEew8hAWKAQCA2bwa7H744Qd16dJFkZGRslgsmj9/vtPjjx49qgceeEDXXXed/Pz8NGzYMFPqvBKsYwcAAMzm1WB37tw5NW7cWNOnTy/S8ZmZmapSpYrGjBmjxo0be7i6q8OlWAAAYLYAb354x44d1bFjxyIfHxMTo2nTpkmSPvjgA0+V5RYEOwAAYDavBjszZGZmKjMz0/Y6NTVVkpSdna3s7Gy3fU7eufL+32JYLn5+dqZbP6ekurw/+Bu9cY7+OEZvnKM/jtEb54pbf1ypw+eD3aRJkzRhwoR825csWaLQ0FC3f15SUpIk6cihI5KkXbt3aeGZhW7/nJIqrz/Ij944R38cozfO0R/H6I1zxaU/6enpRT7W54PdqFGjNGLECNvr1NRUVa9eXe3bt1dYWJjbPic7O1tJSUm66667FBgYqO+++046JdWqU0ud2nRy2+eUVJf3B3+jN87RH8fojXP0xzF641xx60/e1cai8PlgZ7VaZbVa820PDAz0yA8r77xBAUGSJENGsfilKC481XdfQG+coz+O0Rvn6I9j9Ma54tIfV2pgHTsP8bewjh0AADCXV0fszp49q99//932eu/evdq6dasqVqyoGjVqaNSoUTp8+LA+/vhj2zFbt261vffEiRPaunWrgoKC1KBBA7PLd4p17AAAgNm8Guw2btyo22+/3fY67164xMREzZo1S0ePHtWBAwfs3tOkSRPbnzdt2qTPPvtM1157rfbt22dKzUXFcicAAMBsXg127dq1k2EYDvfPmjUr3zZnxxcnBDsAAGA27rHzEJ4VCwAAzEaw8xDbPXa53GMHAADMQbDzENulWIMROwAAYA6CnYdwjx0AADAbwc5DWMcOAACYjWDnIdxjBwAAzEaw8xAuxQIAALMR7DyEYAcAAMxGsPMQ1rEDAABmI9h5CCN2AADAbAQ7D7FNnjCYPAEAAMxBsPMQRuwAAIDZCHYewjp2AADAbAQ7D2HEDgAAmI1g5yEsUAwAAMxGsPMQRuwAAIDZCHYewjp2AADAbAQ7D2HEDgAAmI1g5yGsYwcAAMxGsPMQRuwAAIDZCHYewjp2AADAbAQ7D2HEDgAAmI1g5yGsYwcAAMxGsPMQRuwAAIDZCHYewjp2AADAbAQ7D2HEDgAAmI1g5yGsYwcAAMxGsPMQRuwAAIDZCHYekreOXa6Rq1wj18vVAACA0oBg5yF5I3YSS54AAABzEOw8xC7YcZ8dAAAwAcHOQy4NdtxnBwAAzECw85C8dewkgh0AADAHwc5DGLEDAABmI9h5iJ/FTxZZJDF5AgAAmINg50GsZQcAAMxEsPMgnhcLAADMRLDzIEbsAACAmQh2HsTzYgEAgJkIdh7EiB0AADATwc6DCHYAAMBMBDsP8rcweQIAAJiHYOdBtnvsWMcOAACYgGDnQVyKBQAAZiLYeRDBDgAAmIlg50EsUAwAAMxEsPMg1rEDAABmIth5EJdiAQCAmQJcOXjXrl36/PPPtWrVKu3fv1/p6emqUqWKmjRpovj4ePXo0UNWq9VTtZY4BDsAAGCmIo3Ybd68WXFxcWrSpIlWr16tFi1aaNiwYfrXv/6lPn36yDAMjR49WpGRkZo8ebIyMzM9XXeJwDp2AADATEUasevRo4eefvppzZ07V+XLl3d43Jo1azRt2jS9+uqreu6559xVY4nFOnYAAMBMRQp2v/32mwIDAws9LjY2VrGxscrOzr7qwnwBl2IBAICZinQptiih7mqO91UEOwAAYCavzor94Ycf1KVLF0VGRspisWj+/PmFvmfFihW6+eabZbVaVadOHc2aNcvjdV4p1rEDAABmKvKs2ISEhAK3WywW/e9//9Pjjz+uI0eO6H//+1+RP/zcuXNq3LixHn74YYfnv9TevXvVuXNnDRw4UJ9++qmWLVumRx99VNWqVVN8fHyRP9csjNgBAAAzFTnYlStXzun+M2fO6PTp0y59eMeOHdWxY8ciHz9z5kzVrFlTr776qiSpfv36Wr16tV577bViHexYoBgAAJihyMHuww8/dLr/448/vupiCrNmzRrFxcXZbYuPj9ewYcMcviczM9Nu+ZXU1FRJUnZ2tlsneeSd69Jz+v3/K92Z2ZmlfkJJQf3BRfTGOfrjGL1xjv44Rm+cK279caUOlxYolqQDBw4oPDxcwcHBrr71qiUnJysiIsJuW0REhFJTU5WRkaGQkJB875k0aZImTJiQb/uSJUsUGhrq9hqTkpJsfz6efFyS9PP2n7Xw2EK3f1ZJdGl/YI/eOEd/HKM3ztEfx+iNc8WlP+np6UU+1qVgl5ubqzp16mjHjh2qW7euy4V5w6hRozRixAjb69TUVFWvXl3t27dXWFiY2z4nOztbSUlJuuuuu2yzgmd/NVtKka6rd506tejkts8qiQrqDy6iN87RH8fojXP0xzF641xx60/e1caicCnY+fn5qW7dujp16pRXgl3VqlV17Ngxu23Hjh1TWFhYgaN1kmS1Wgt8zFlgYKBHfliXnjcoIOjiRgtLwOTxVN99Ab1xjv44Rm+coz+O0Rvnikt/XKnB5eVOXnrpJT399NPavn27q2+9arGxsVq2bJndtqSkJMXGxppeS1EwKxYAAJjJ5Xvs+vbtq/T0dDVu3FhBQUH5RspcmRl79uxZ/f7777bXe/fu1datW1WxYkXVqFFDo0aN0uHDh20TMwYOHKg333xTzzzzjB5++GF9//33mjNnjr799ltXvw1T8KxYAABgJpeD3dSpU9324Rs3btTtt99ue513L1xiYqJmzZqlo0eP6sCBA7b9NWvW1Lfffqvhw4dr2rRpio6O1nvvvVcslzqRGLEDAADmcjnYJSYmuu3D27VrJ8MwHO4v6KkS7dq105YtW9xWgyexjh0AADDTFT1S7I8//tCYMWPUq1cvHT9+cUmPRYsWaceOHW4trqRjxA4AAJjJ5WC3cuVK3XDDDVq3bp3mzZuns2fPSpK2bdumcePGub3AkoxnxQIAADO5HOxGjhypf//730pKSlJQUJBt+x133KG1a9e6tbiSjhE7AABgJpeD3S+//KLu3bvn2x4eHq6TJ0+6pShfYbvHLpd77AAAgOe5HOzKly+vo0eP5tu+ZcsWRUVFuaUoX8GIHQAAMJPLwe7+++/Xs88+q+TkZFksFuXm5urHH3/UU089pb59+3qixhKLdewAAICZXA52L774ourVq6fq1avr7NmzatCggdq0aaPbbrtNY8aM8USNJZZtxM4g2AEAAM9zeR27oKAgvfvuuxo7dqx++eUXnT17Vk2aNPHKs2OLO+6xAwAAZnJ5xG7ixIlKT09X9erV1alTJ/Xs2VN169ZVRkaGJk6c6IkaSyzusQMAAGZyOdhNmDDBtnbdpdLT0zVhwgS3FOUrWMcOAACYyeVgZxiGLBZLvu3btm1TxYoV3VKUr2DEDgAAmKnI99hVqFBBFotFFotF1113nV24y8nJ0dmzZzVw4ECPFFlS8axYAABgpiIHu6lTp8owDD388MOaMGGCypUrZ9sXFBSkmJgYxcbGeqTIkooROwAAYKYiB7vExERJUs2aNdWyZUsFBLg8obbUYR07AABgJpfvsbvjjjt0+vTpfNtPnTolf39/txTlKxixAwAAZrqiyRMFyczMVFBQ0FUX5EtYxw4AAJipyNdTX3/9dUmSxWLRe++9p2uuuca2LycnRz/88IPq1avn/gpLMEbsAACAmYoc7F577TVJF0fsZs6caXfZNW/yxMyZM91fYQnGOnYAAMBMRQ52e/fulSTdfvvtmjdvnipUqOCxonwFI3YAAMBMLt9jt3z5clWoUEFZWVnavXu3LlwgtDjCOnYAAMBMLge7jIwMPfLIIwoNDVXDhg114MABSdLjjz+ul156ye0FlmSM2AEAADO5HOxGjhypbdu2acWKFQoODrZtj4uL0+zZs91aXEnHOnYAAMBMLq8yPH/+fM2ePVu33nqr3WPFGjZsqD/++MOtxZV0jNgBAAAzuTxid+LECYWHh+fbfu7cObugB9axAwAA5nI52DVr1kzffvut7XVemHvvvfd4VuxlGLEDAABmcvlS7IsvvqiOHTtq586dunDhgqZNm6adO3fqp59+0sqVKz1RY4nFOnYAAMBMLo/YtWrVSlu3btWFCxd0ww03aMmSJQoPD9eaNWvUtGlTT9RYYjFiBwAAzOTyiJ0k1a5dW++++667a/E5rGMHAADMdEXBLicnR19++aV27dolSWrQoIG6du2qgIArOp3PYsQOAACYyeUktmPHDt19991KTk7W9ddfL0maPHmyqlSpogULFqhRo0ZuL7KkYh07AABgJpfvsXv00UfVsGFDHTp0SJs3b9bmzZt18OBB3XjjjRowYIAnaiyxGLEDAABmcnnEbuvWrdq4caMqVKhg21ahQgW98MILuuWWW9xaXEnHOnYAAMBMLo/YXXfddTp27Fi+7cePH1edOnXcUpSvuHTyhGEYXq4GAAD4uiIFu9TUVNvXpEmT9MQTT2ju3Lk6dOiQDh06pLlz52rYsGGaPHmyp+stUfKCncTMWAAA4HlFuhRbvnx5u8eFGYahnj172rbljUZ16dJFOTkEmDx5CxRLF++zuzToAQAAuFuRksby5cs9XYdPshux4z47AADgYUUKdm3btvV0HT7p0mDHzFgAAOBpLk+eQNER7AAAgJkIdh7kZ/m7vQQ7AADgaQQ7D2ORYgAAYBaCnYddupYdAACAJ7kc7DIyMpSenm57vX//fk2dOlVLlixxa2G+ghE7AABgFpeDXdeuXfXxxx9LklJSUtSiRQu9+uqr6tq1q2bMmOH2Aks6f8vFtewIdgAAwNNcDnabN29W69atJUlz585VRESE9u/fr48//livv/662wss6RixAwAAZnE52KWnp6ts2bKSpCVLlighIUF+fn669dZbtX//frcXWNLZ7rFjgWIAAOBhLge7OnXqaP78+Tp48KC+++47tW/fXpJ0/PhxhYWFub3Ako4ROwAAYBaXg93YsWP11FNPKSYmRi1atFBsbKyki6N3TZo0cXuBJV3e82IJdgAAwNNcfir9Pffco1atWuno0aNq3Lixbfudd96p7t27u7U4X8CIHQAAMIvLwU6SqlatqqpVq9pta968uVsK8jWsYwcAAMxSpGCXkJCgWbNmKSwsTAkJCU6PnTdvnlsK8xWM2AEAALMUKdiVK1dOFovF9mcUHevYAQAAsxQp2H344YcF/hmFY8QOAACYhWfFehjr2AEAALMUi2A3ffp0xcTEKDg4WC1atND69esdHpudna2JEyeqdu3aCg4OVuPGjbV48WITq3UNI3YAAMAsXg92s2fP1ogRIzRu3Dht3rxZjRs3Vnx8vI4fP17g8WPGjNHbb7+tN954Qzt37tTAgQPVvXt3bdmyxeTKi4Z17AAAgFm8HuymTJmi/v37q1+/fmrQoIFmzpyp0NBQffDBBwUe/8knn+i5555Tp06dVKtWLQ0aNEidOnXSq6++anLlRcOIHQAAMItL69hlZ2erQ4cOmjlzpurWrXvVH56VlaVNmzZp1KhRtm1+fn6Ki4vTmjVrCnxPZmamgoOD7baFhIRo9erVDo/PzMy0vU5NTZV08XvJzs6+2m/BJu9cl5/TXxdH7DIvZLr180oaR/0BvSkM/XGM3jhHfxyjN84Vt/64UodLwS4wMFA///yzywU5cvLkSeXk5CgiIsJue0REhH799dcC3xMfH68pU6aoTZs2ql27tpYtW6Z58+YpJ6fgyQmTJk3ShAkT8m1fsmSJQkNDr/6buExSUpLd679O/SVJ2rxls8rtZ6mYy/uDv9Eb5+iPY/TGOfrjGL1xrrj0Jz09vcjHuvzkiT59+uj999/XSy+95Opb3WLatGnq37+/6tWrJ4vFotq1a6tfv34OL92OGjVKI0aMsL1OTU1V9erV1b59e4WFhbmtruzsbCUlJemuu+5SYGCgbfs7c96R0qSGNzRUp8ad3PZ5JY2j/oDeFIb+OEZvnKM/jtEb54pbf/KuNhaFy8HuwoUL+uCDD7R06VI1bdpUZcqUsds/ZcqUIp+rcuXK8vf317Fjx+y2Hzt2LN8jy/JUqVJF8+fP1/nz53Xq1ClFRkZq5MiRqlWrVoHHW61WWa3WfNsDAwM98sO6/LyB/hf/bFiMYvHL4W2e6rsvoDfO0R/H6I1z9McxeuNccemPKzW4HOy2b9+um2++WZL022+/2e3LezpFUQUFBalp06ZatmyZunXrJknKzc3VsmXLNGTIEKfvDQ4OVlRUlLKzs/W///1PPXv2dOmzzcI6dgAAwCwuB7vly5e7tYARI0YoMTFRzZo1U/PmzTV16lSdO3dO/fr1kyT17dtXUVFRmjRpkiRp3bp1Onz4sG666SYdPnxY48ePV25urp555hm31uUuzIoFAABmcTnY5fn999/1xx9/qE2bNgoJCZFhGC6P2EnSfffdpxMnTmjs2LFKTk7WTTfdpMWLF9smVBw4cEB+fn+vynL+/HmNGTNGf/75p6655hp16tRJn3zyicqXL3+l34pHsY4dAAAwi8vB7tSpU+rZs6eWL18ui8WiPXv2qFatWnrkkUdUoUKFK1pPbsiQIQ4vva5YscLuddu2bbVz506XP8NbGLEDAABmcXmB4uHDhyswMFAHDhywWy7kvvvuK9aP9vKWAMv/v8fO4B47AADgWS6P2C1ZskTfffedoqOj7bbXrVtX+/fvd1thvoIROwAAYBaXR+zOnTtX4MK+p0+fLnBZkdKOe+wAAIBZXA52rVu31scff2x7bbFYlJubq5dfflm33367W4vzBYzYAQAAs7h8Kfbll1/WnXfeqY0bNyorK0vPPPOMduzYodOnT+vHH3/0RI0lGuvYAQAAs7g8YteoUSP99ttvatWqlbp27apz584pISFBW7ZsUe3atT1RY4nGiB0AADDLFa1jV65cOY0ePdrdtfgkfwv32AEAAHO4HOzatGmjdu3aqV27drrtttsUHBzsibp8BiN2AADALC5fim3fvr3Wrl2ru+++W+XLl1erVq00ZswYJSUlKT093RM1lmi2e+xYxw4AAHiYyyN2Y8aMkSRduHBBGzZs0MqVK7VixQq9/PLL8vPz0/nz591eZEnGiB0AADDLFT8r9s8//9Qvv/yibdu26eeff1bZsmXVpk0bd9bmE1jHDgAAmMXlYPfAAw9o5cqVyszMVJs2bdS2bVuNHDlSN954oywWiydqLNEYsQMAAGZxOdh9/vnnqly5sh599FHdcccdatWqVYFPosBF3GMHAADM4vLkiVOnTum9995TVlaWRo0apcqVK+u2227Tc889pyVLlniixhKNETsAAGAWl4NdhQoVdPfdd2vKlCnatGmTfv75Z1133XV65ZVX1LFjR0/UWKKxjh0AADCLy5diT506ZZsJu2LFCu3cuVPly5dXly5d1LZtW0/UWKIxYgcAAMzicrALDw9X5cqV1bp1a/Xv31/t2rXTDTfc4InafALPigUAAGZxOdj9/PPPatiwoSdq8UmM2AEAALO4HOzyQt2JEye0e/duSdL111+vKlWquLcyH8E6dgAAwCwuT544d+6cHn74YVWrVk1t2rRRmzZtFBkZqUceeYRHihWAETsAAGAWl4PdiBEjtHLlSi1YsEApKSlKSUnRV199pZUrV+rJJ5/0RI0lGsEOAACYxeVLsf/73/80d+5ctWvXzratU6dOCgkJUc+ePTVjxgx31lfisUAxAAAwi8sjdunp6YqIiMi3PTw8nEuxBWAdOwAAYBaXg11sbKzGjRun8+fP27ZlZGRowoQJio2NdWtxvoBLsQAAwCwuX4qdNm2a4uPj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2Fht3bpVkrRr1y41btxYZcqUse1v2bKlcnNztXv3blksFh05ckR33nmn0xpuvPFG25/LlCmjsLAwHT9+/Eq/JQClFMEOQKlXpkyZfJdG3SUkJKRIxwUGBtq9tlgsys3N9URJAHwY99gBQCHWrl2b73X9+vUlSfXr19e2bdt07tw52/4ff/xRfn5+uv7661W2bFnFxMRo2bJlptYMoHRixA5AqZeZmank5GS7bQEBAapcubIk6YsvvlCzZs3UqlUrffrpp1q/fr3ef/99SVLv3r01btw4JSYmavz48Tpx4oQef/xxPfjgg4qIiJAkjR8/XgMHDlR4eLg6duyotLQ0/fjjj3r88cfN/UYB+DyCHYBSb/HixapWrZrdtuuvv16//vqrpIszVj///HM99thjqlatmv773/+qQYMGkqTQ0FB99913Gjp0qG655RaFhoaqR48emjJliu1ciYmJOn/+vF577TU99dRTqly5su655x7zvkEApYbFMAzD20UAQHFlsVj05Zdfqlu3bt4uBQAKxT12AAAAPoJgBwAA4CO4xw4AnOBuFQAlCSN2AAAAPoJgBwAA4CMIdgAAAD6CYAcAAOAjCHYAAAA+gmAHAADgIwh2AAAAPoJgBwAA4CMIdgAAAD7i/wH7lFX0b+sIEwAAAABJRU5ErkJggg==\n" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "code", - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "plt.plot(losses, label=\"Training Loss\")\n", - "plt.plot(val_losses, label=\"Validation Loss\")\n", - "plt.xlabel(\"Epoch\")\n", - "plt.ylabel(\"Loss\")\n", - "plt.legend()\n", - "plt.title(\"Training vs Validation Loss\")\n", - "plt.show()\n" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 472 - }, - "id": "6_W_6I2nvGKM", - "outputId": "635de916-2ca4-41ca-ac6c-b1a126430db0" - }, - "execution_count": 59, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "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\n" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "code", - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "# Plot training loss for all epochs\n", - "epochs_range = range(1, len(losses) + 1)\n", - "plt.plot(epochs_range, losses, label=\"Training Loss\")\n", - "\n", - "# Match validation epochs range dynamically\n", - "val_epochs_range = range(len(losses) - len(val_losses) + 1, len(losses) + 1)\n", - "plt.plot(val_epochs_range, val_losses, label=\"Validation Loss\")\n", - "\n", - "plt.xlabel(\"Epoch\")\n", - "plt.ylabel(\"Loss\")\n", - "plt.legend()\n", - "plt.title(\"Training vs Validation Loss\")\n", - "plt.grid(True)\n", - "plt.show()\n" - ], - "metadata": { - "colab": { - "base_uri": "https://localhost:8080/", - "height": 472 - }, - "id": "ZeSo_R-ikXN7", - "outputId": "b9942b17-fca3-4902-ce7b-f7aa811a433c" - }, - "execution_count": 60, - "outputs": [ - { - "output_type": "display_data", - "data": { - "text/plain": [ - "
" - ], - "image/png": "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ww8/FENCQsSCggLp+bVr14oKhULMzMwURVEUY2NjxWnTpl23DQDEF154QXpcUFAgAhB//PFHl9VJRJ7BOTdEVCvcc889WLRokdO20NBQ6fvOnTs7Pde5c2ccOHAAAJCWlobWrVvD399fer5Lly6w2Ww4fvw4BEHAxYsXcd99992wDa1atZK+9/f3h8FgQHZ2dnVLIiKZMNwQUa3g7+9fbpjIVfz8/Cq1n1qtdnosCAJsNps7mkREbsQ5N0RUJ+zYsaPc42bNmgEAmjVrhoMHD6KwsFB6fuvWrVAoFLj11lsRGBiIhIQEpKamerTNRCQP9twQUa1gMpmQmZnptE2lUiE8PBwA8M0336B9+/b4xz/+gS+//BK7du3CJ598AgAYPnw4Zs6cieTkZMyaNQuXLl3C+PHj8cgjjyAqKgoAMGvWLDzxxBOIjIxE7969kZ+fj61bt2L8+PGeLZSI3I7hhohqhfXr1yMmJsZp26233opjx44BsK9kWr58OZ566inExMTgq6++QvPmzQEAer0eGzZswDPPPIMOHTpAr9dj0KBBePPNN6VjJScno6SkBG+99Raee+45hIeH44EHHvBcgUTkMYIoiqLcjSAiuhFBELBq1SoMGDBA7qYQUR3AOTdERETkVRhuiIiIyKtwzg0R1XocPSeiqmDPDREREXkVhhsiIiLyKgw3RERE5FUYboiIiMirMNwQERGRV2G4ISIiIq/CcENEREReheGGiIiIvArDDREREXmV/we98suyVVb8GAAAAABJRU5ErkJggg==\n" - }, - "metadata": {} - } - ] - }, - { - "cell_type": "code", - "source": [], - "metadata": { - "id": "NTDWZ5MOheXQ" - }, - "execution_count": null, - "outputs": [] - } - ] -} \ No newline at end of file