{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "bubcKFNzLDh_" }, "source": [ "# Pytorch ensemble" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "Uc1RGhnrk9GY", "outputId": "1b3dc026-c74a-46b1-f489-7d8538520300" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/400.9 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m400.9/400.9 kB\u001b[0m \u001b[31m12.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25h\u001b[?25l \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m0.0/247.0 kB\u001b[0m \u001b[31m?\u001b[0m eta \u001b[36m-:--:--\u001b[0m\r\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m247.0/247.0 kB\u001b[0m \u001b[31m18.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25h\n", "Using full imbalanced dataset. Class distribution:\n", "sentiment\n", "negative 6620\n", "positive 2039\n", "neutral 1663\n", "Name: count, dtype: int64\n", "\n", "Extracting features from the full dataset...\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 10322/10322 [03:03<00:00, 56.31it/s]\n", "[I 2025-08-20 03:48:21,149] A new study created in memory with name: no-name-3be815cb-86d8-41a9-abbe-29272bc3b1ab\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "--- PART 1: Starting Hyperparameter Search with Optuna ---\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "[I 2025-08-20 03:48:47,544] Trial 0 finished with value: 0.7823361823361823 and parameters: {'conv1_filters': 128, 'conv2_filters': 256, 'lstm_units': 128, 'dropout': 0.30401902591485513, 'focal_gamma': 1.8327338604956367, 'lr': 0.0024542281841373665}. Best is trial 0 with value: 0.7823361823361823.\n", "[I 2025-08-20 03:49:11,879] Trial 1 finished with value: 0.7891737891737892 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.2674942423523225, 'focal_gamma': 2.141870013328642, 'lr': 0.00017647796313897198}. Best is trial 1 with value: 0.7891737891737892.\n", "[I 2025-08-20 03:49:47,252] Trial 2 finished with value: 0.7156695156695156 and parameters: {'conv1_filters': 128, 'conv2_filters': 256, 'lstm_units': 256, 'dropout': 0.3964252476312402, 'focal_gamma': 1.7487842282032928, 'lr': 0.004415654681232052}. Best is trial 1 with value: 0.7891737891737892.\n", "[I 2025-08-20 03:50:12,187] Trial 3 finished with value: 0.7612535612535613 and parameters: {'conv1_filters': 128, 'conv2_filters': 256, 'lstm_units': 128, 'dropout': 0.35892734283519545, 'focal_gamma': 2.6212169077280243, 'lr': 0.000977244386983535}. Best is trial 1 with value: 0.7891737891737892.\n", "[I 2025-08-20 03:50:48,087] Trial 4 finished with value: 0.6752136752136753 and parameters: {'conv1_filters': 128, 'conv2_filters': 256, 'lstm_units': 256, 'dropout': 0.4683721405647675, 'focal_gamma': 2.0491982601972865, 'lr': 0.007679164444896244}. Best is trial 1 with value: 0.7891737891737892.\n", "[I 2025-08-20 03:51:22,129] Trial 5 finished with value: 0.7196581196581197 and parameters: {'conv1_filters': 64, 'conv2_filters': 256, 'lstm_units': 256, 'dropout': 0.20045274365995666, 'focal_gamma': 2.1233580280504336, 'lr': 0.005151503536944851}. Best is trial 1 with value: 0.7891737891737892.\n", "[I 2025-08-20 03:51:46,297] Trial 6 finished with value: 0.7612535612535613 and parameters: {'conv1_filters': 64, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.49159292378579106, 'focal_gamma': 1.646030396134748, 'lr': 0.0010966146464538307}. Best is trial 1 with value: 0.7891737891737892.\n", "[I 2025-08-20 03:52:20,007] Trial 7 finished with value: 0.7213675213675214 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 256, 'dropout': 0.35014720698111357, 'focal_gamma': 2.1777018236226855, 'lr': 0.005144771288556656}. Best is trial 1 with value: 0.7891737891737892.\n", "[I 2025-08-20 03:52:44,140] Trial 8 finished with value: 0.7743589743589744 and parameters: {'conv1_filters': 64, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.366078317734969, 'focal_gamma': 2.5440747380614703, 'lr': 0.0006256215192712549}. Best is trial 1 with value: 0.7891737891737892.\n", "[I 2025-08-20 03:53:08,480] Trial 9 finished with value: 0.7031339031339031 and parameters: {'conv1_filters': 64, 'conv2_filters': 256, 'lstm_units': 128, 'dropout': 0.45243738898524233, 'focal_gamma': 2.3541212782046346, 'lr': 0.003328230689442395}. Best is trial 1 with value: 0.7891737891737892.\n", "[I 2025-08-20 03:53:32,847] Trial 10 finished with value: 0.7811965811965812 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.2597766006445424, 'focal_gamma': 2.706864616744472, 'lr': 0.00010341008379570829}. Best is trial 1 with value: 0.7891737891737892.\n", "[I 2025-08-20 03:53:57,126] Trial 11 finished with value: 0.8011396011396011 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.2812723168755197, 'focal_gamma': 1.8900379069937014, 'lr': 0.00012876302263545235}. Best is trial 11 with value: 0.8011396011396011.\n", "[I 2025-08-20 03:54:21,263] Trial 12 finished with value: 0.8022792022792022 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.2746132444767511, 'focal_gamma': 1.929945112033818, 'lr': 0.00012222292984434045}. Best is trial 12 with value: 0.8022792022792022.\n", "[I 2025-08-20 03:54:45,511] Trial 13 finished with value: 0.7766381766381767 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.29883369451981967, 'focal_gamma': 2.9720614082537438, 'lr': 0.00025578454924883457}. Best is trial 12 with value: 0.8022792022792022.\n", "[I 2025-08-20 03:55:09,757] Trial 14 finished with value: 0.8028490028490028 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.23981881296007343, 'focal_gamma': 1.5062287644707946, 'lr': 0.0002948170729512786}. Best is trial 14 with value: 0.8028490028490028.\n", "[I 2025-08-20 03:55:33,981] Trial 15 finished with value: 0.8011396011396011 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.2039802068679372, 'focal_gamma': 1.56873102929835, 'lr': 0.00035994555781908527}. Best is trial 14 with value: 0.8028490028490028.\n", "[I 2025-08-20 03:55:58,336] Trial 16 finished with value: 0.8222222222222222 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.23265518178485783, 'focal_gamma': 1.5481662017221482, 'lr': 0.0003782195384596158}. Best is trial 16 with value: 0.8222222222222222.\n", "[I 2025-08-20 03:56:22,575] Trial 17 finished with value: 0.815954415954416 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.23864997474568897, 'focal_gamma': 1.5018900290355484, 'lr': 0.00044924467393715685}. Best is trial 16 with value: 0.8222222222222222.\n", "[I 2025-08-20 03:56:56,695] Trial 18 finished with value: 0.7851851851851852 and parameters: {'conv1_filters': 64, 'conv2_filters': 128, 'lstm_units': 256, 'dropout': 0.23203022683613705, 'focal_gamma': 1.6970525474822304, 'lr': 0.000578099667453005}. Best is trial 16 with value: 0.8222222222222222.\n", "[I 2025-08-20 03:57:20,955] Trial 19 finished with value: 0.7675213675213676 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.3163597299919248, 'focal_gamma': 2.338994878464391, 'lr': 0.0018426772621860663}. Best is trial 16 with value: 0.8222222222222222.\n", "[I 2025-08-20 03:57:45,245] Trial 20 finished with value: 0.7943019943019943 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.4055309381361124, 'focal_gamma': 1.5314538939925675, 'lr': 0.0004686443740368918}. Best is trial 16 with value: 0.8222222222222222.\n", "[I 2025-08-20 03:58:09,421] Trial 21 finished with value: 0.8096866096866097 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.23661718346568342, 'focal_gamma': 1.5656764270829684, 'lr': 0.0002512738715943372}. Best is trial 16 with value: 0.8222222222222222.\n", "[I 2025-08-20 03:58:33,693] Trial 22 finished with value: 0.8022792022792022 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.2320740511674958, 'focal_gamma': 1.6772311814797796, 'lr': 0.0008979007608764508}. Best is trial 16 with value: 0.8222222222222222.\n", "[I 2025-08-20 03:58:57,915] Trial 23 finished with value: 0.7943019943019943 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.24325599462079886, 'focal_gamma': 1.7876687110895717, 'lr': 0.0002220460330250616}. Best is trial 16 with value: 0.8222222222222222.\n", "[I 2025-08-20 03:59:22,102] Trial 24 finished with value: 0.81994301994302 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.2173743713251179, 'focal_gamma': 1.6110715040133343, 'lr': 0.00042291701388497247}. Best is trial 16 with value: 0.8222222222222222.\n", "[I 2025-08-20 03:59:46,421] Trial 25 finished with value: 0.7914529914529914 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.32908379292613893, 'focal_gamma': 1.9009845200658604, 'lr': 0.0005049438759665062}. Best is trial 16 with value: 0.8222222222222222.\n", "[I 2025-08-20 04:00:20,200] Trial 26 finished with value: 0.7794871794871795 and parameters: {'conv1_filters': 64, 'conv2_filters': 128, 'lstm_units': 256, 'dropout': 0.21097954690924964, 'focal_gamma': 2.0030413285050472, 'lr': 0.0015449350224921235}. Best is trial 16 with value: 0.8222222222222222.\n", "[I 2025-08-20 04:00:44,449] Trial 27 finished with value: 0.807977207977208 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.21929761275181317, 'focal_gamma': 1.6252870525385432, 'lr': 0.00039661789054966075}. Best is trial 16 with value: 0.8222222222222222.\n", "[I 2025-08-20 04:01:08,733] Trial 28 finished with value: 0.8068376068376069 and parameters: {'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.2575253128229996, 'focal_gamma': 1.7872225106166337, 'lr': 0.0008149413119779976}. Best is trial 16 with value: 0.8222222222222222.\n", "[I 2025-08-20 04:01:33,499] Trial 29 finished with value: 0.7931623931623931 and parameters: {'conv1_filters': 128, 'conv2_filters': 256, 'lstm_units': 128, 'dropout': 0.29108951231374386, 'focal_gamma': 1.7910526724395877, 'lr': 0.0007207586672504403}. Best is trial 16 with value: 0.8222222222222222.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "Optuna search complete. Best parameters found:\n", "{'conv1_filters': 128, 'conv2_filters': 128, 'lstm_units': 128, 'dropout': 0.23265518178485783, 'focal_gamma': 1.5481662017221482, 'lr': 0.0003782195384596158}\n", "\n", "--- PART 2: Training an ensemble of 5 models with the best parameters ---\n", "\n", "Training model 1/5...\n", "\n", "Training model 2/5...\n", "\n", "Training model 3/5...\n", "\n", "Training model 4/5...\n", "\n", "Training model 5/5...\n", "\n", "--- PART 3: Evaluating the ensemble of 5 models on the hold-out test set ---\n", "\n", "--- Final Ensemble Classification Report ---\n", " precision recall f1-score support\n", "\n", " negative 0.86 0.90 0.88 993\n", " neutral 0.73 0.78 0.75 250\n", " positive 0.75 0.58 0.66 306\n", "\n", " accuracy 0.82 1549\n", " macro avg 0.78 0.75 0.76 1549\n", "weighted avg 0.82 0.82 0.81 1549\n", "\n" ] }, { "data": { "image/png": "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vvkGM2bMgJ2dHSZOnAgLCwuF9+Tq6oqzZ89i27ZtSExMhEwmQ5MmTbBly5b33uBRs2ZN/P333wgICEBISAjy8/PRtGlTbN68WbRGojoMGTIECQkJWL16NQ4ePAhnZ2ds3rwZv/32m+g5zb/88gvGjRuHSZMmITs7G7NmzVIqSczLy4OPjw9Kly6NJUuWyNudnJwQEhKCCRMmYMeOHejTp08JvTsiAgCJUBIz04mIiIjoi8I5iUREREQkwiSRiIiIiESYJBIRERGRCJNEIiIiIhJhkkhEREREIkwSiYiIiEiESSIRERERiXyRi2kb1h/74U5En9iTU0vVHQIRkUazMCr88Z6fgipzh9eX3v1UKU3GSiIRERERiXyRlUQiIiIipUhYN3sbk0QiIiIiiUTdEWgcps1EREREJMJKIhERERGHm0X4iRARERGRCCuJRERERJyTKMJKIhERERGJsJJIRERExDmJIvxEiIiIiEiElUQiIiIizkkUYZJIRERExOFmEX4iRERERCTCSiIRERERh5tFWEkkIiIiIhFWEomIiIg4J1GEnwgRERERibCSSERERMQ5iSKsJBIRERGRCCuJRERERJyTKMIkkYiIiIjDzSJMm4mIiIhIhJVEIiIiIg43i/ATISIiIiIRVhKJiIiIWEkU4SdCRERERCKsJBIRERHp8O7mt7GSSEREREQirCQSERERcU6iCJNEIiIiIi6mLcK0mYiIiIhEWEkkIiIi4nCzCD8RIiIiIhJhJZGIiIiIcxJFWEkkIiIiIhFWEomIiIg4J1GEnwgRERERibCSSERERMQ5iSJMEomIiIg43CzCT4SIiIiIRFhJJCIiIuJwswgriUREREQkwkoiEREREeckivATISIiIiIRJolEREREEonqNiXk5eVhxowZcHR0hKGhISpXrow5c+ZAEAR5H0EQMHPmTNjb28PQ0BBubm64e/euwnlevHgBb29vmJmZwdzcHMOHD0d6erpSsTBJJCIiItIQ33//PVatWoWffvoJt27dwvfff48FCxZg+fLl8j4LFizAsmXLEBoaiujoaBgbG8Pd3R2ZmZnyPt7e3rhx4wYiIiIQHh6OEydOYNSoUUrFIhH+m5p+IQzrj1V3CEQiT04tVXcIREQazcJIV23XNuzyk8rO/Tq86HlJly5dYGtri7Vr18rbvLy8YGhoiM2bN0MQ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kijGSiIRERERibCSSERERFqPhUQxVhKJiIiISISVRCIiItJ6nJMoxiSRiIiItB5zRDEONxMRERGRCCuJREREpPU43CzGSiIRERERibCSSERERFqPhUQxVhKJiIiISISVRCIiItJ6OiwlirCSSEREREQirCQSERGR1mMhUYxJIhEREWk9LoEjxuFmIiIiIhJhJZGIiIi0ng4LiSKsJBIRERGRCCuJREREpPU4J1GMlUQiIiIiEmElkYiIiLQeC4lirCQSERERkQgriURERKT1JGAp8W1MEomIiEjrcQkcMQ43ExEREZEIK4lERESk9bgEjhgriUREREQkwkoiERERaT0WEsVYSSQiIiIiEVYSiYiISOvpsJQowkoiEREREYmwkkhERERaj4VEMSaJREREpPW4BI5YkZLEq1evFvmEderUKXYwRERERKQZipQk1qtXDxKJBIIgFLq/YJ9EIkFeXl6JBkhERESkaiwkihUpSYyNjVV1HERERESkQYqUJFaoUEHVcRARERGpDZfAESvWEjibNm1CixYt4ODggH///RcAsGTJEvzxxx8lGhwRERERqYfSSeKqVavg5+cHDw8PpKSkyOcgmpubY8mSJSUdHxEREZHKSVS4KWP27NmQSCQKW/Xq1eX7MzMz4evrCysrK5iYmMDLywuJiYkK54iLi4OnpyeMjIxgY2ODyZMnIzc3V8lIipEkLl++HGvWrMF3330HXV1deXujRo1w7do1pQMgIiIiov+pWbMm4uPj5dvJkyfl+yZNmoS//voLv/32G44fP44nT56gV69e8v15eXnw9PREdnY2Tp8+jQ0bNiAsLAwzZ85UOg6l10mMjY1F/fr1Re1SqRSvXr1SOgAiIiIidVPlOolZWVnIyspSaJNKpZBKpYX2L1WqFOzs7ETtqampWLt2LbZu3Yp27doBANavX48aNWrgzJkzaNasGQ4dOoSbN2/i8OHDsLW1Rb169TBnzhxMnToVs2fPhr6+fpHjVrqS6OjoiMuXL4vaDxw4gBo1aih7OiIiIiK105GobgsJCYFMJlPYQkJC3hnL3bt34eDggEqVKsHb2xtxcXEAgAsXLiAnJwdubm7yvtWrV0f58uURFRUFAIiKikLt2rVha2sr7+Pu7o60tDTcuHFDqc9E6Uqin58ffH19kZmZCUEQcPbsWfz6668ICQnBL7/8ouzp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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# =============================================================================\n", "# STEP 1: SETUP, LIBRARIES & DATA PREPARATION\n", "# =============================================================================\n", "!pip install optuna -q # Install Optuna\n", "import os\n", "import numpy as np\n", "import pandas as pd\n", "import librosa\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "from tqdm import tqdm\n", "import kagglehub\n", "import optuna\n", "\n", "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "from torch.utils.data import DataLoader, Dataset\n", "from torch.optim.lr_scheduler import ReduceLROnPlateau\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.preprocessing import LabelEncoder\n", "from sklearn.metrics import classification_report, confusion_matrix\n", "\n", "# --- Setup Device (GPU/CPU) ---\n", "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", "print(f\"\\nUsing device: {device}\")" ] }, { "cell_type": "markdown", "metadata": { "id": "25208162" }, "source": [ "## Data Loading and Processing\n", "\n", "This section downloads and processes the RAVDESS and CREMA-D datasets. The audio files are loaded, and sentiment labels are extracted based on the filenames. The datasets are then combined and the full, imbalanced dataset is used for training with Focal Loss." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "d51ad88a" }, "outputs": [], "source": [ "# --- Download & Process Datasets ---\n", "RAVDESS_PATH = kagglehub.dataset_download(\"uwrfkaggler/ravdess-emotional-speech-audio\")\n", "CREMA_D_PATH = kagglehub.dataset_download(\"ejlok1/cremad\")\n", "\n", "sentiment_map = {'happy': 'positive', 'surprised': 'positive', 'sad': 'negative', 'angry': 'negative', 'fearful': 'negative', 'disgust': 'negative', 'neutral': 'neutral', 'calm': 'neutral'}\n", "ravdess_emotion_map = {'01': 'neutral', '02': 'calm', '03': 'happy', '04': 'sad', '05': 'angry', '06': 'fearful', '07': 'disgust', '08': 'surprised'}\n", "ravdess_data = []\n", "for dirpath, _, filenames in os.walk(RAVDESS_PATH):\n", " for filename in filenames:\n", " if filename.endswith('.wav'):\n", " emotion_code = filename.split('-')[2]; emotion = ravdess_emotion_map.get(emotion_code); sentiment = sentiment_map.get(emotion)\n", " if sentiment: ravdess_data.append({\"filepath\": os.path.join(dirpath, filename), \"sentiment\": sentiment})\n", "ravdess_df = pd.DataFrame(ravdess_data)\n", "\n", "crema_emotion_map = {'HAP': 'happy', 'SAD': 'sad', 'ANG': 'angry', 'FEA': 'fearful', 'DIS': 'disgust', 'NEU': 'neutral'}\n", "crema_data = []\n", "crema_audio_path = os.path.join(CREMA_D_PATH, \"AudioWAV\")\n", "for filename in os.listdir(crema_audio_path):\n", " if filename.endswith('.wav'):\n", " emotion_code = filename.split('_')[2]; emotion = crema_emotion_map.get(emotion_code); sentiment = sentiment_map.get(emotion)\n", " if sentiment: crema_data.append({\"filepath\": os.path.join(crema_audio_path, filename), \"sentiment\": sentiment})\n", "crema_df = pd.DataFrame(crema_data)\n", "\n", "# --- Use the FULL, IMBALANCED dataset for Focal Loss ---\n", "combined_df = pd.concat([ravdess_df, crema_df], ignore_index=True).sample(frac=1, random_state=42).reset_index(drop=True)\n", "print(\"\\nUsing full imbalanced dataset. Class distribution:\")\n", "print(combined_df['sentiment'].value_counts())" ] }, { "cell_type": "markdown", "metadata": { "id": "81862d87" }, "source": [ "## Feature Extraction and Dataset Class\n", "\n", "This section defines the `extract_features` function to extract MFCCs, delta MFCCs, and delta-delta MFCCs from the audio files. It also defines the `SpeechDataset` class to handle the features and labels, preparing the data for use with PyTorch DataLoaders." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "fdbdfafa" }, "outputs": [], "source": [ "# --- Define Helper Classes and Functions ---\n", "def extract_features(file_path, n_mfcc=40, max_pad_len=216):\n", " try:\n", " audio, sr = librosa.load(file_path, res_type='kaiser_fast', sr=None)\n", " mfccs = librosa.feature.mfcc(y=audio, sr=sr, n_mfcc=n_mfcc)\n", " delta_mfccs = librosa.feature.delta(mfccs); delta2_mfccs = librosa.feature.delta(mfccs, order=2)\n", " all_features = np.concatenate((mfccs, delta_mfccs, delta2_mfccs))\n", " if all_features.shape[1] > max_pad_len: all_features = all_features[:, :max_pad_len]\n", " else: all_features = np.pad(all_features, ((0, 0), (0, max_pad_len - all_features.shape[1])), mode='constant')\n", " except Exception as e: return None\n", " return all_features\n", "\n", "class SpeechDataset(Dataset):\n", " def __init__(self, features, labels):\n", " self.features = [torch.tensor(f, dtype=torch.float32) for f in features]\n", " self.labels = torch.tensor(labels, dtype=torch.long)\n", " def __len__(self): return len(self.features)\n", " def __getitem__(self, idx): return self.features[idx], self.labels[idx]\n", "\n", "# --- Feature Extraction (run once) ---\n", "print(\"\\nExtracting features from the full dataset...\")\n", "X_features = [extract_features(fp) for fp in tqdm(combined_df['filepath'])]\n", "y_labels = combined_df['sentiment'].tolist()\n", "X_filtered = [x for x in X_features if x is not None]; y_filtered = [y for x, y in zip(X_features, y_labels) if x is not None]\n", "le = LabelEncoder(); y_encoded = le.fit_transform(y_filtered)\n", "\n", "# --- Final Data Split ---\n", "# We create a final hold-out test set ONCE.\n", "X_train_val, X_test, y_train_val, y_test = train_test_split(X_filtered, y_encoded, test_size=0.15, random_state=42, stratify=y_encoded)\n", "test_dataset = SpeechDataset(X_test, y_test)\n", "test_loader = DataLoader(test_dataset, batch_size=32, shuffle=False)" ] }, { "cell_type": "markdown", "metadata": { "id": "85540e16" }, "source": [ "## Model Definition and Hyperparameter Search with Optuna\n", "\n", "This section defines the `FocalLoss` class and the `Attention` module. It also defines the `define_model` function for Optuna's hyperparameter search and the `objective` function that Optuna will optimize. The Optuna study is created and optimized to find the best hyperparameters." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "909cc14d" }, "outputs": [], "source": [ "class FocalLoss(nn.Module):\n", " def __init__(self, alpha=1, gamma=2, reduction='mean'):\n", " super(FocalLoss, self).__init__(); self.alpha = alpha; self.gamma = gamma; self.reduction = reduction\n", " def forward(self, inputs, targets):\n", " ce_loss = F.cross_entropy(inputs, targets, reduction='none'); pt = torch.exp(-ce_loss)\n", " focal_loss = self.alpha * (1 - pt)**self.gamma * ce_loss\n", " return focal_loss.mean() if self.reduction == 'mean' else focal_loss.sum()\n", "\n", "class Attention(nn.Module):\n", " def __init__(self, hidden_size):\n", " super(Attention, self).__init__(); self.attention = nn.Linear(hidden_size, 1, bias=False)\n", " def forward(self, lstm_output):\n", " scores = self.attention(lstm_output).squeeze(2); weights = F.softmax(scores, dim=1).unsqueeze(1)\n", " return torch.bmm(weights, lstm_output).squeeze(1)\n", "\n", "def define_model(trial, input_shape, num_classes):\n", " # Suggest hyperparameters for the model architecture\n", " conv1_filters = trial.suggest_categorical(\"conv1_filters\", [64, 128])\n", " conv2_filters = trial.suggest_categorical(\"conv2_filters\", [128, 256])\n", " lstm_units = trial.suggest_categorical(\"lstm_units\", [128, 256])\n", " dropout_rate = trial.suggest_float(\"dropout\", 0.2, 0.5)\n", "\n", " class SpeechModel(nn.Module): # Define inside so it gets recreated with new params\n", " def __init__(self):\n", " super(SpeechModel, self).__init__()\n", " self.conv_layers = nn.Sequential(\n", " nn.Conv1d(input_shape[0], conv1_filters, 5, padding='same'), nn.BatchNorm1d(conv1_filters), nn.ReLU(), nn.MaxPool1d(2), nn.Dropout(dropout_rate),\n", " nn.Conv1d(conv1_filters, conv2_filters, 5, padding='same'), nn.BatchNorm1d(conv2_filters), nn.ReLU(), nn.MaxPool1d(2), nn.Dropout(dropout_rate))\n", " with torch.no_grad():\n", " dummy_output = self.conv_layers(torch.zeros(1, input_shape[0], input_shape[1]))\n", " lstm_input_size = dummy_output.shape[1]\n", " self.lstm = nn.LSTM(lstm_input_size, lstm_units, batch_first=True, bidirectional=True)\n", " self.attention = Attention(lstm_units * 2)\n", " self.classifier = nn.Sequential(nn.Linear(lstm_units * 2, 128), nn.ReLU(), nn.Dropout(dropout_rate), nn.Linear(128, num_classes))\n", " def forward(self, x):\n", " x = self.conv_layers(x).permute(0, 2, 1); lstm_out, _ = self.lstm(x)\n", " return self.classifier(self.attention(lstm_out))\n", " return SpeechModel()\n", "\n", "def objective(trial):\n", " # --- Data for this trial ---\n", " X_train, X_val, y_train, y_val = train_test_split(X_train_val, y_train_val, test_size=0.2, random_state=42, stratify=y_train_val)\n", " train_dataset = SpeechDataset(X_train, y_train); val_dataset = SpeechDataset(X_val, y_val)\n", " train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True); val_loader = DataLoader(val_dataset, batch_size=32, shuffle=False)\n", "\n", " # --- Model, Loss, Optimizer ---\n", " INPUT_SHAPE = (120, 216); NUM_CLASSES = len(le.classes_)\n", " model = define_model(trial, INPUT_SHAPE, NUM_CLASSES).to(device)\n", "\n", " focal_gamma = trial.suggest_float(\"focal_gamma\", 1.5, 3.0)\n", " criterion = FocalLoss(gamma=focal_gamma)\n", " lr = trial.suggest_float(\"lr\", 1e-4, 1e-2, log=True)\n", " optimizer = torch.optim.AdamW(model.parameters(), lr=lr)\n", "\n", " # --- Training Loop ---\n", " best_val_acc = 0\n", " for epoch in range(15): # A shorter run for hyperparameter search\n", " model.train()\n", " for features, labels in train_loader:\n", " features, labels = features.to(device), labels.to(device); optimizer.zero_grad()\n", " outputs = model(features); loss = criterion(outputs, labels); loss.backward(); optimizer.step()\n", "\n", " model.eval(); val_correct = 0\n", " with torch.no_grad():\n", " for features, labels in val_loader:\n", " features, labels = features.to(device), labels.to(device)\n", " val_correct += (torch.max(model(features).data, 1)[1] == labels).sum().item()\n", " val_acc = val_correct / len(val_dataset)\n", " if val_acc > best_val_acc: best_val_acc = val_acc\n", "\n", " return best_val_acc\n", "\n", "print(\"\\n--- PART 1: Starting Hyperparameter Search with Optuna ---\")\n", "study = optuna.create_study(direction=\"maximize\")\n", "study.optimize(objective, n_trials=30) # Increase trials for better search\n", "best_params = study.best_params\n", "print(\"\\nOptuna search complete. Best parameters found:\")\n", "print(best_params)" ] }, { "cell_type": "markdown", "metadata": { "id": "9584660f" }, "source": [ "## Ensemble Training\n", "\n", "This section trains an ensemble of models using the best hyperparameters found by Optuna. Each model in the ensemble is trained on a different train/validation split of the data to promote diversity." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "cee415bd" }, "outputs": [], "source": [ "# =============================================================================\n", "# PART 2: TRAIN THE ENSEMBLE\n", "# =============================================================================\n", "N_ENSEMBLE = 5\n", "print(f\"\\n--- PART 2: Training an ensemble of {N_ENSEMBLE} models with the best parameters ---\")\n", "\n", "def create_final_model(params, input_shape, num_classes):\n", " # Recreate the model structure using the BEST params from Optuna\n", " class FinalModel(nn.Module):\n", " def __init__(self):\n", " super(FinalModel, self).__init__()\n", " self.conv_layers = nn.Sequential(\n", " nn.Conv1d(input_shape[0], params['conv1_filters'], 5, padding='same'), nn.BatchNorm1d(params['conv1_filters']), nn.ReLU(), nn.MaxPool1d(2), nn.Dropout(params['dropout']),\n", " nn.Conv1d(params['conv1_filters'], params['conv2_filters'], 5, padding='same'), nn.BatchNorm1d(params['conv2_filters']), nn.ReLU(), nn.MaxPool1d(2), nn.Dropout(params['dropout']))\n", " with torch.no_grad(): dummy_output = self.conv_layers(torch.zeros(1, input_shape[0], input_shape[1]))\n", " lstm_input_size = dummy_output.shape[1]\n", " self.lstm = nn.LSTM(lstm_input_size, params['lstm_units'], batch_first=True, bidirectional=True)\n", " self.attention = Attention(params['lstm_units'] * 2)\n", " self.classifier = nn.Sequential(nn.Linear(params['lstm_units'] * 2, 128), nn.ReLU(), nn.Dropout(params['dropout']), nn.Linear(128, num_classes))\n", " def forward(self, x):\n", " x = self.conv_layers(x).permute(0, 2, 1); lstm_out, _ = self.lstm(x)\n", " return self.classifier(self.attention(lstm_out))\n", " return FinalModel()\n", "\n", "for i in range(N_ENSEMBLE):\n", " print(f\"\\nTraining model {i+1}/{N_ENSEMBLE}...\")\n", " # Get a different train/val split for each model\n", " X_train, X_val, y_train, y_val = train_test_split(X_train_val, y_train_val, test_size=0.2, random_state=i, stratify=y_train_val)\n", " train_dataset = SpeechDataset(X_train, y_train); val_dataset = SpeechDataset(X_val, y_val)\n", " train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True); val_loader = DataLoader(val_dataset, batch_size=32, shuffle=False)\n", "\n", " model = create_final_model(best_params, (120, 216), len(le.classes_)).to(device)\n", " criterion = FocalLoss(gamma=best_params['focal_gamma'])\n", " optimizer = torch.optim.AdamW(model.parameters(), lr=best_params['lr'])\n", " scheduler = ReduceLROnPlateau(optimizer, mode='min', factor=0.5, patience=5)\n", "\n", " best_val_loss = float('inf'); patience_counter = 0\n", " for epoch in range(60): # Full training run\n", " model.train()\n", " for features, labels in train_loader:\n", " features, labels = features.to(device), labels.to(device); optimizer.zero_grad()\n", " outputs = model(features); loss = criterion(outputs, labels); loss.backward(); optimizer.step()\n", "\n", " model.eval(); val_loss = 0\n", " with torch.no_grad():\n", " for features, labels in val_loader:\n", " features, labels = features.to(device), labels.to(device); val_loss += criterion(model(features), labels).item()\n", "\n", " avg_val_loss = val_loss / len(val_loader)\n", " scheduler.step(avg_val_loss)\n", " if avg_val_loss < best_val_loss:\n", " best_val_loss = avg_val_loss; torch.save(model.state_dict(), f'ensemble_model_{i}.pth'); patience_counter = 0\n", " else:\n", " patience_counter += 1\n", " if patience_counter >= 10: break # Early stopping" ] }, { "cell_type": "markdown", "metadata": { "id": "089e88a0" }, "source": [ "## Ensemble Evaluation\n", "\n", "This section evaluates the trained ensemble of models on the hold-out test set. The predictions from each model are averaged (in terms of probabilities) to make the final prediction. The classification report and confusion matrix are then displayed to assess the ensemble's performance." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "71b503ed" }, "outputs": [], "source": [ "# =============================================================================\n", "# PART 3: EVALUATE THE ENSEMBLE\n", "# =============================================================================\n", "print(f\"\\n--- PART 3: Evaluating the ensemble of {N_ENSEMBLE} models on the hold-out test set ---\")\n", "models = []\n", "for i in range(N_ENSEMBLE):\n", " model = create_final_model(best_params, (120, 216), len(le.classes_)).to(device)\n", " model.load_state_dict(torch.load(f'ensemble_model_{i}.pth'))\n", " model.eval()\n", " models.append(model)\n", "\n", "all_preds, all_labels = [], []\n", "with torch.no_grad():\n", " for features, labels in test_loader:\n", " features = features.to(device)\n", " # Get predictions from all models in the ensemble\n", " all_model_probs = [F.softmax(model(features), dim=1) for model in models]\n", " # Average the probabilities\n", " mean_probs = torch.mean(torch.stack(all_model_probs), dim=0)\n", " # Get the final prediction\n", " _, predicted = torch.max(mean_probs.data, 1)\n", " all_preds.extend(predicted.cpu().numpy())\n", " all_labels.extend(labels.numpy())\n", "\n", "print(\"\\n--- Final Ensemble Classification Report ---\")\n", "print(classification_report(all_labels, all_preds, target_names=le.classes_))\n", "cm = confusion_matrix(all_labels, all_preds)\n", "plt.figure(figsize=(8, 6))\n", "sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', xticklabels=le.classes_, yticklabels=le.classes_)\n", "plt.title('Final Ensemble Confusion Matrix'); plt.ylabel('True Label'); plt.xlabel('Predicted Label')\n", "plt.show()" ] } ], "metadata": { "accelerator": "GPU", "colab": { "gpuType": "T4", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "08d5f1ac3e9e43d28bf0f2a1ca3780a9": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "099820472ef94622bc930c7dcc27392a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "12ef45e353234cd187b89bd3b4adc885": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_8de1ae82920f4af996346673195773f2", "max": 159, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_ffb9e0b266b04194bb777818b49b7b1e", "value": 159 } }, "1622a1fc464742bdaeeec936fb81fd2c": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "1b77a27420aa4d7d90af158073b07e0c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "25ce37ab6aaf4bf6b0dcb920e2d3cb3e": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2d1043343d8d4d1f8eb0044e1fb0e48c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ba121eca7b8f47559d54e7a3e02cc32c", "max": 380204696, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_8ab02e1b70cf46b6b2c2a38699d64de5", "value": 380204696 } }, "3719dfed7c0840e6bc152595a3c85487": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_5534f8d2d13b4f47b0dfacb3be042b68", "placeholder": "​", "style": "IPY_MODEL_099820472ef94622bc930c7dcc27392a", "value": " 380M/380M [00:06<00:00, 34.9MB/s]" } }, "3a4ece5788cb4e4fa02ed2e22c6c7416": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_880aab255d3c44798ec400644408b089", "placeholder": "​", "style": "IPY_MODEL_f8f99acab78d454b8505aa41c5b2fdb9", "value": "model.safetensors: 100%" } }, "3c66cc92b6dc443daa79dd82e564f407": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "40e143e654424e8f96a8acc62749b56c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_8a2b1e5cd1ed41208a04ce10bd37505d", "IPY_MODEL_12ef45e353234cd187b89bd3b4adc885", "IPY_MODEL_4934e2a2e84948d993219a887e6f932a" ], "layout": "IPY_MODEL_08d5f1ac3e9e43d28bf0f2a1ca3780a9" } }, "4934e2a2e84948d993219a887e6f932a": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_fbdc89bc7bca4e7b9af17480f1b51770", "placeholder": "​", "style": "IPY_MODEL_9051309263bf4dcab2a84a14085e010f", "value": " 159/159 [00:00<00:00, 4.26kB/s]" } }, "4a05f692345540a7ab688eae2ff4c635": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_3a4ece5788cb4e4fa02ed2e22c6c7416", "IPY_MODEL_2d1043343d8d4d1f8eb0044e1fb0e48c", "IPY_MODEL_a7a6f6ff7cac4c1b8dce48b4038af21f" ], "layout": "IPY_MODEL_d90a3d5595744e57b456a64dce5a6662" } }, "4ce71846fdcc4524ae55b33671370e81": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "5534f8d2d13b4f47b0dfacb3be042b68": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5d5dc262dd2a4ec282a1125b9dbaf63a": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5e10377b33264c4a9ac9727d8b9e8e44": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "678984ff6763443b9e57ad16e65e0c14": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "789e1107230e4431a3b8fc36ccc0f370": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_aea70cfcdeb94841bc1bc616cbbd1530", "max": 380267417, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_678984ff6763443b9e57ad16e65e0c14", "value": 380267417 } }, "7bcc87bdc1de4542be9816c23ef918d8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ddf902c6d15240f294215ca9ebcec5b9", "placeholder": "​", "style": "IPY_MODEL_3c66cc92b6dc443daa79dd82e564f407", "value": "pytorch_model.bin: 100%" } }, "82dc818a6f8049b08e9482b672cf3418": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "880aab255d3c44798ec400644408b089": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "8a2b1e5cd1ed41208a04ce10bd37505d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_25ce37ab6aaf4bf6b0dcb920e2d3cb3e", "placeholder": "​", "style": "IPY_MODEL_5e10377b33264c4a9ac9727d8b9e8e44", "value": "preprocessor_config.json: 100%" } }, "8ab02e1b70cf46b6b2c2a38699d64de5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "8de1ae82920f4af996346673195773f2": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "9051309263bf4dcab2a84a14085e010f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "99248a3e649b4b4fb4a6693fc781a3ae": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_82dc818a6f8049b08e9482b672cf3418", "placeholder": "​", "style": "IPY_MODEL_e27a9962ac30459c8dae3d495c40ab8c", "value": "config.json: " } }, "a7a6f6ff7cac4c1b8dce48b4038af21f": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_c85639bd3d5240278f96912779017988", "placeholder": "​", "style": "IPY_MODEL_4ce71846fdcc4524ae55b33671370e81", "value": " 380M/380M [00:02<00:00, 167MB/s]" } }, "abc8a5b72f034606b3fe3b9e5d0ef8bb": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "aea70cfcdeb94841bc1bc616cbbd1530": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b63361a7078549919d77d03dbe797aa9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_99248a3e649b4b4fb4a6693fc781a3ae", "IPY_MODEL_f77ea67f2d644e949477239def77cce3", "IPY_MODEL_d5b9e59652574ae39463a62e91acbc6e" ], "layout": "IPY_MODEL_ef93f9eb83cb461f90c8b5cb85fab024" } }, "ba121eca7b8f47559d54e7a3e02cc32c": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c85639bd3d5240278f96912779017988": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d5b9e59652574ae39463a62e91acbc6e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_abc8a5b72f034606b3fe3b9e5d0ef8bb", "placeholder": "​", "style": "IPY_MODEL_1b77a27420aa4d7d90af158073b07e0c", "value": " 1.84k/? [00:00<00:00, 33.1kB/s]" } }, "d90a3d5595744e57b456a64dce5a6662": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "dbfe5751c7a843cbac2f760232c268b2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_7bcc87bdc1de4542be9816c23ef918d8", "IPY_MODEL_789e1107230e4431a3b8fc36ccc0f370", "IPY_MODEL_3719dfed7c0840e6bc152595a3c85487" ], "layout": "IPY_MODEL_5d5dc262dd2a4ec282a1125b9dbaf63a" } }, "ddf902c6d15240f294215ca9ebcec5b9": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e27a9962ac30459c8dae3d495c40ab8c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "ef93f9eb83cb461f90c8b5cb85fab024": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "f4f3e6103c844b89b42c71709ee180ba": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "f77ea67f2d644e949477239def77cce3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_1622a1fc464742bdaeeec936fb81fd2c", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_f4f3e6103c844b89b42c71709ee180ba", "value": 1 } }, "f8f99acab78d454b8505aa41c5b2fdb9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "fbdc89bc7bca4e7b9af17480f1b51770": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ffb9e0b266b04194bb777818b49b7b1e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } } } } }, "nbformat": 4, "nbformat_minor": 0 }