{ "cells": [ { "cell_type": "code", "source": [], "metadata": { "id": "HoacGdvoz75B" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "from google.colab import drive\n", "drive.mount('/content/drive')" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "NpaIUZn6z8f7", "outputId": "7fdc9611-07d6-459e-e59a-29487c32cd69" }, "execution_count": 3, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Mounted at /content/drive\n" ] } ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "vw91dJb4zsG7" }, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import os, gc, re, warnings\n", "warnings.filterwarnings(\"ignore\")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 424 }, "id": "A5ZMtUPEz7Fh", "outputId": "253e374a-a83d-40f4-ea90-0ff5091d3e0c" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Text Category\n", "0 बिहार मे होबय वाला नगर निगम \\nचुनाव 2022 के नव... Politics\n", "1 राज्य मे भूमि सँ जुड़ल भ्रष्टाचार \\nकेर मामिला ... Politics\n", "2 गांधीनगर | राष्ट्रीय एकता दिवस पर \\nसोम दिन गु... Politics\n", "3 गुजरात केर मोरबी मे रवि दिन सांझ भेल दर्दनाक द... Politics\n", "4 गुजरातक मोरबी\\nकेर उक्त झुलैत पुल \\nलगभग 150 स... Politics\n", "... ... ...\n", "15465 । मांस काठमांडू।नेपालगुंज में लक्ष्मी अंतरसंचा... Economy\n", "15466 । ३१ जुलाई काठमाण्डू।टाटा मोटर्स के आधिकारिक व... Economy\n", "15467 । १३ अप्रैल काठमाण्डू।कोरियाई मोटर्स कंपनी ग्र... Economy\n", "15468 । आसंजन काठमाण्डू।स्पोर्ट्स हैचबैक तसेया त्याट... Economy\n", "15469 । ३ काठमाण्डू।आईएमएस मोटर्स काठमांडू के बैंक म... Economy\n", "\n", "[15470 rows x 2 columns]" ], "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TextCategory
0बिहार मे होबय वाला नगर निगम \\nचुनाव 2022 के नव...Politics
1राज्य मे भूमि सँ जुड़ल भ्रष्टाचार \\nकेर मामिला ...Politics
2गांधीनगर | राष्ट्रीय एकता दिवस पर \\nसोम दिन गु...Politics
3गुजरात केर मोरबी मे रवि दिन सांझ भेल दर्दनाक द...Politics
4गुजरातक मोरबी\\nकेर उक्त झुलैत पुल \\nलगभग 150 स...Politics
.........
15465। मांस काठमांडू।नेपालगुंज में लक्ष्मी अंतरसंचा...Economy
15466। ३१ जुलाई काठमाण्डू।टाटा मोटर्स के आधिकारिक व...Economy
15467। १३ अप्रैल काठमाण्डू।कोरियाई मोटर्स कंपनी ग्र...Economy
15468। आसंजन काठमाण्डू।स्पोर्ट्स हैचबैक तसेया त्याट...Economy
15469। ३ काठमाण्डू।आईएमएस मोटर्स काठमांडू के बैंक म...Economy
\n", "

15470 rows × 2 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 4 } ], "source": [ "dftr = pd.read_csv(\"/content/drive/MyDrive/merged_data.csv\")\n", "dftr = dftr.dropna()\n", "dftr = dftr.reset_index(drop=True)\n", "dftr" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "7czIovIJzRvF", "outputId": "c2e7b66a-a58b-4ee8-ff25-771f41fe903c" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "Culture 3192\n", "Literature 2758\n", "Politics 2594\n", "Sports 2210\n", "Entertainment 1078\n", "Opinion 992\n", "EduTech 784\n", "Economy 693\n", "Health 636\n", "Interview 533\n", "Name: Category, dtype: int64" ] }, "metadata": {}, "execution_count": 5 } ], "source": [ "dftr['Category'].value_counts()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "id": "i1-80czNzRvG" }, "outputs": [], "source": [ "dftr.Text = dftr.Text.astype(str)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "GzYd_Boe3D9C", "outputId": "47e14ba8-db0c-4cde-a8de-4e83dc461af6" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[K |████████████████████████████████| 5.5 MB 15.1 MB/s \n", "\u001b[K |████████████████████████████████| 182 kB 67.1 MB/s \n", "\u001b[K |████████████████████████████████| 7.6 MB 54.7 MB/s \n", "\u001b[?25h" ] } ], "source": [ "! pip install transformers -q" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "id": "JskBUBgU0XY5" }, "outputs": [], "source": [ "from transformers import AutoModel,AutoTokenizer\n", "import torch\n", "import torch.nn.functional as F\n", "from tqdm import tqdm" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "id": "htnqPsYk0YMd" }, "outputs": [], "source": [ "def mean_pooling(model_output, attention_mask):\n", " token_embeddings = model_output.last_hidden_state.detach().cpu()\n", " input_mask_expanded = (\n", " attention_mask.unsqueeze(-1).expand(token_embeddings.size()).float()\n", " )\n", " return torch.sum(token_embeddings * input_mask_expanded, 1) / torch.clamp(\n", " input_mask_expanded.sum(1), min=1e-9\n", " )" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "id": "4tpCHL360qu_" }, "outputs": [], "source": [ "BATCH_SIZE = 16\n", "\n", "class EmbedDataset(torch.utils.data.Dataset):\n", " def __init__(self,df):\n", " self.df = df.reset_index(drop=True)\n", " def __len__(self):\n", " return len(self.df)\n", " def __getitem__(self,idx):\n", " text = self.df.loc[idx,\"Text\"]\n", " tokens = tokenizer(\n", " text,\n", " None,\n", " add_special_tokens=True,\n", " padding='max_length',\n", " truncation=True,\n", " max_length=MAX_LEN,return_tensors=\"pt\")\n", " tokens = {k:v.squeeze(0) for k,v in tokens.items()}\n", " return tokens\n", "\n", "ds_tr = EmbedDataset(dftr) # <-----------------------------------------> mind your head\n", "#ds_tr = EmbedDataset(train) # for emoji makes sense\n", "embed_dataloader_tr = torch.utils.data.DataLoader(ds_tr,\\\n", " batch_size=BATCH_SIZE,\\\n", " shuffle=False)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "id": "-pN9dF9P0wpA" }, "outputs": [], "source": [ "tokenizer = None\n", "MAX_LEN = 640\n", "\n", "def get_embeddings(MODEL_NM='', MAX=640, BATCH_SIZE=4, verbose=True):\n", " global tokenizer, MAX_LEN\n", " DEVICE=\"cuda\"\n", " model = AutoModel.from_pretrained( MODEL_NM,from_tf=True ) #TRue for TF.h5 model\n", " tokenizer = AutoTokenizer.from_pretrained( MODEL_NM )\n", " MAX_LEN = MAX\n", "\n", " model = model.to(DEVICE)\n", " model.eval()\n", " all_train_text_feats = []\n", " for batch in tqdm(embed_dataloader_tr,total=len(embed_dataloader_tr)):\n", " input_ids = batch[\"input_ids\"].to(DEVICE)\n", " attention_mask = batch[\"attention_mask\"].to(DEVICE)\n", " with torch.no_grad():\n", " model_output = model(input_ids=input_ids,attention_mask=attention_mask)\n", " sentence_embeddings = mean_pooling(model_output, attention_mask.detach().cpu())\n", " #sentence_embeddings = max_pooling(model_output, attention_mask.detach().cpu()) #max pooling\n", " # Normalize the embeddings\n", " sentence_embeddings = F.normalize(sentence_embeddings, p=2, dim=1)\n", " sentence_embeddings = sentence_embeddings.squeeze(0).detach().cpu().numpy()\n", " all_train_text_feats.extend(sentence_embeddings)\n", " all_train_text_feats = np.array(all_train_text_feats)\n", " if verbose:\n", " print('Train embeddings shape',all_train_text_feats.shape)\n", "\n", " return all_train_text_feats" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "id": "3KrBlZ732Qk9" }, "outputs": [], "source": [ "from transformers import AutoTokenizer, AutoModelForMaskedLM" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 237, "referenced_widgets": [ "e96896658b654eed8b968404645d0ce2", "18a4c50558434e0290dd7146a4fbfecf", "84a98a576e0249a59849cc30c7224f20", "e40536cd305045b0bb8aeecfd21cb956", "1b15bace409c4f4089f40a856b6e1338", "74e25a277d244040ae97abc9dde27f68", "eba06679f61f457b8de2817c7450ef24", "0b340f8a07e04471ac8ce7c17c61acba", "4c87386df89a4157bf67851ad066bb94", "f5ebefe5c7274db7b81dc329742a55e9", "6fc5465c7f69419ebe26ac752133676f", "4fcccd4ec6e54e608b823a93a59ac2b6", "a5ca839581e6414fba8dc778b5cf2cb9", "a6dbe20598484fcd9f13675e697dfc7b", "74f5680b28364d34a98ab4261563fc12", "cbdb3c1dcc984f67a5856137830afe9c", "4633fec68037492c92effc18055964e2", "3b1fbd3a31f3422aa249db2d1c933a65", "bd2a23d5260345279fbf87befba2e5c8", "6a2ed2b29770404a851a069f2a78c5da", "bd8042817a254f35a6ff1c52c70cead2", "f1a13f54dc4f48f8a613f522485755e1", "c40ed648d38545e390bee2431c5a707a", "ee7cfc940c804296894abe79e31ecbe6", "bc50f92e9d0d48bba21f16541fc37ed9", "fe96466bdfcb41739954dc0270571406", "69a754c07e454149aaa42ea63971f249", "1ca2e994552f43558ee18ea4f832d2ec", "b15d86eff02147bea51624bc82f94a7d", "ccc737848a20419684a47c4dff68dc8a", "aad77fce445540cfbe295df700107b6a", "d7bce53523fd4cafb20182edcd405533", "b6b326e3fe1148b29c5570b742e8b8c6" ] }, "id": "0MTqTCpZzRvO", "outputId": "88d2aa13-88d2-4a11-b9a7-dd2f0fab696d" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "config.json: 0%| | 0.00/652 [00:00" ] }, "metadata": {}, "execution_count": 29 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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GWlzTGhoqBo3biwvLy8FBgZqyJAhSklJSVMWCikAAAAAACBD27x5s/r27audO3dq3bp1Sk5OVv369RUfH289ZuDAgVq+fLkWLlyozZs369KlS2revLl1/+3bt9W4cWMlJSVp+/btmjVrlmbOnKkRI0akKQuz9gAAAAAAAKdLTExUYmKizTYPDw95eHjcc+zq1attXs+cOVOBgYEKCQlRjRo1FBMTo+nTp2vevHmqXbu2JGnGjBkqUaKEdu7cqcqVK2vt2rU6cuSIfvvtNwUFBalMmTL68MMPNXToUI0aNUru7u525WZECgAAAAAAJmZ0C88/LcHBwfL397dZgoOD7fo7xcTESJJy5MghSQoJCVFycrLq1q1rPaZ48eIqUKCAduzYIUnasWOHnnnmGQUFBVmPadCggWJjY3X48GG7/lyJESkAAAAAAMAAw4YN06BBg2y23W80yv+XmpqqN998U1WrVlWpUqUkSREREXJ3d1f27Nltjg0KClJERIT1mLuLKH/t/2ufvSikAAAAAAAAp/unNp4H6du3r/78809t3bo1HVI9GK09AAAAAACYmMUlYy4Po1+/flqxYoU2btyofPnyWbfnzp1bSUlJun79us3xkZGRyp07t/WY/z+Lz1+v/zrGHhRSAAAAAABAhmaxWNSvXz8tXbpUGzZsUOHChW32lytXTm5ublq/fr112/HjxxUaGqoqVapIkqpUqaJDhw4pKirKesy6devk5+enkiVL2p2F1h4AAAAAAJCh9e3bV/PmzdMvv/wiX19f6zNN/P39lS1bNvn7+6tr164aNGiQcuTIIT8/P/Xv319VqlRR5cqVJUn169dXyZIl1aFDB40fP14RERF677331Ldv3zS1GFFIAQAAAADAxFKNDuAA06ZNkyS98MILNttnzJih119/XZI0adIkZcmSRS1atFBiYqIaNGigL7/80nps1qxZtWLFCvXu3VtVqlSRt7e3OnXqpA8++CBNWSikAAAAAACADM1isTzwGE9PT02dOlVTp079x2MKFiyoVatW/acsPCMFAAAAAADAToxIAQAAAADAxMzQ2pORMCIFAAAAAADAThRSAAAAAAAA7ERrDwAAAAAAJvbgx7QiLRiRAgAAAAAAYCcKKQAAAAAAAHaitQcAAAAAABNLdTE6gbkwIgUAAAAAAMBOFFIAAAAAAADsRGsPAAAA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\n" }, "metadata": {} } ], "source": [ "from sklearn.metrics import classification_report\n", "print(classification_report(y_test, pred))\n", "import matplotlib.pyplot as plt\n", "#countvector\n", "import seaborn as sns\n", "from sklearn.metrics import confusion_matrix\n", "cf_matrix = confusion_matrix(y_test, pred)\n", "fig, ax = plt.subplots(figsize=(15,10))\n", "sns.heatmap(cf_matrix, linewidths=1, annot=True, ax=ax, fmt='g')" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "SNjAyQGcMJt0", "outputId": "a5a8600b-3b38-46b3-9638-675fc0ec6369" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "F1 Score : 0.8093083387201034\n" ] } ], "source": [ "from sklearn.svm import SVC\n", "clf=SVC(kernel='rbf',gamma = 10,C = 10, random_state=42)\n", "clf.fit(x_train, y_train) # training model on train data\n", "\n", "clfval = clf.predict(x_test) # predicting test data\n", "print('F1 Score : {}'.format(f1_score(y_test, clfval, average='micro'))) # printing F1 score" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 947 }, "id": "wF3oPRpHQy-1", "outputId": "10784375-2781-44d1-f380-2e7c7187e615" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ " precision recall f1-score support\n", "\n", " Culture 0.79 0.78 0.78 659\n", " Economy 0.83 0.90 0.86 151\n", " EduTech 0.56 0.48 0.52 159\n", "Entertainment 0.81 0.72 0.76 224\n", " Health 0.75 0.71 0.73 110\n", " Interview 0.90 0.80 0.85 91\n", " Literature 0.80 0.82 0.81 593\n", " Opinion 0.87 0.80 0.84 179\n", " Politics 0.86 0.89 0.88 514\n", " Sports 0.84 0.91 0.88 414\n", "\n", " accuracy 0.81 3094\n", " macro avg 0.80 0.78 0.79 3094\n", " weighted avg 0.81 0.81 0.81 3094\n", "\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 31 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": {} } ], "source": [ "from sklearn.metrics import classification_report\n", "print(classification_report(y_test, clfval))\n", "import matplotlib.pyplot as plt\n", "#countvector\n", "import seaborn as sns\n", "from sklearn.metrics import confusion_matrix\n", "cf_matrix = confusion_matrix(y_test, clfval)\n", "fig, ax = plt.subplots(figsize=(15,10))\n", "sns.heatmap(cf_matrix, linewidths=1, annot=True, ax=ax, fmt='g')" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "id": "tMnrK8XpzRvY" }, "outputs": [], "source": [ "from sklearn.model_selection import KFold" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "OJdjIRNBXyur", "outputId": "e0ff21e8-ef3a-45e5-dd9e-4a635c6cea66" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "F1 Score : 0.8093083387201034\n", " precision recall f1-score support\n", "\n", " Culture 0.79 0.78 0.78 659\n", " Economy 0.83 0.90 0.86 151\n", " EduTech 0.56 0.48 0.52 159\n", "Entertainment 0.81 0.72 0.76 224\n", " Health 0.75 0.71 0.73 110\n", " Interview 0.90 0.80 0.85 91\n", " Literature 0.80 0.82 0.81 593\n", " Opinion 0.87 0.80 0.84 179\n", " Politics 0.86 0.89 0.88 514\n", " Sports 0.84 0.91 0.88 414\n", "\n", " accuracy 0.81 3094\n", " macro avg 0.80 0.78 0.79 3094\n", " weighted avg 0.81 0.81 0.81 3094\n", "\n", "F1 Score : 0.826115061409179\n", " precision recall f1-score support\n", "\n", " Culture 0.79 0.84 0.81 637\n", " Economy 0.77 0.80 0.78 137\n", " EduTech 0.66 0.56 0.60 153\n", "Entertainment 0.82 0.75 0.78 221\n", " Health 0.75 0.69 0.72 133\n", " Interview 0.85 0.83 0.84 99\n", " Literature 0.81 0.82 0.82 549\n", " Opinion 0.95 0.79 0.86 206\n", " Politics 0.88 0.92 0.90 496\n", " Sports 0.86 0.91 0.89 463\n", "\n", " accuracy 0.83 3094\n", " macro avg 0.82 0.79 0.80 3094\n", " weighted avg 0.83 0.83 0.82 3094\n", "\n", "F1 Score : 0.8306399482870072\n", " precision recall f1-score support\n", "\n", " Culture 0.81 0.81 0.81 649\n", " Economy 0.84 0.83 0.83 141\n", " EduTech 0.61 0.51 0.56 162\n", "Entertainment 0.81 0.73 0.77 183\n", " Health 0.75 0.69 0.72 118\n", " Interview 0.90 0.81 0.85 110\n", " Literature 0.80 0.83 0.82 539\n", " Opinion 0.92 0.87 0.90 212\n", " Politics 0.88 0.92 0.90 550\n", " Sports 0.88 0.93 0.91 430\n", "\n", " accuracy 0.83 3094\n", " macro avg 0.82 0.79 0.81 3094\n", " weighted avg 0.83 0.83 0.83 3094\n", "\n", "F1 Score : 0.8180349062702004\n", " precision recall f1-score support\n", "\n", " Culture 0.78 0.83 0.81 620\n", " Economy 0.82 0.86 0.84 124\n", " EduTech 0.58 0.47 0.52 152\n", "Entertainment 0.80 0.74 0.77 211\n", " Health 0.76 0.64 0.69 138\n", " Interview 0.87 0.77 0.82 122\n", " Literature 0.81 0.80 0.81 541\n", " Opinion 0.89 0.80 0.84 207\n", " Politics 0.86 0.92 0.89 535\n", " Sports 0.86 0.91 0.88 444\n", "\n", " accuracy 0.82 3094\n", " macro avg 0.80 0.78 0.79 3094\n", " weighted avg 0.82 0.82 0.82 3094\n", "\n", "F1 Score : 0.8112475759534583\n", " precision recall f1-score support\n", "\n", " Culture 0.78 0.79 0.79 627\n", " Economy 0.87 0.80 0.83 140\n", " EduTech 0.61 0.47 0.54 158\n", "Entertainment 0.85 0.77 0.81 239\n", " Health 0.81 0.64 0.71 137\n", " Interview 0.90 0.80 0.85 111\n", " Literature 0.78 0.81 0.79 536\n", " Opinion 0.85 0.83 0.84 188\n", " Politics 0.82 0.91 0.86 499\n", " Sports 0.86 0.93 0.89 459\n", "\n", " accuracy 0.81 3094\n", " macro avg 0.81 0.77 0.79 3094\n", " weighted avg 0.81 0.81 0.81 3094\n", "\n", "F1 MEAN Score : 0.8190691661279896\n" ] } ], "source": [ "kfold = KFold(n_splits=5, shuffle=True, random_state=42)\n", "\n", "f1 = []\n", "\n", "for train_index, test_index in kfold.split(X_train):\n", "\n", " x_train, x_test = X_train[train_index], X_train[test_index]\n", " y_train, y_test = Y_train[train_index], Y_train[test_index]\n", " #print(x_train.shape, x_test.shape, y_train.shape, y_test.shape)\n", " clf=SVC(kernel='rbf',gamma = 10,C = 10, random_state=42)\n", " clf.fit(x_train, y_train)\n", " clfval = clf.predict(x_test) # predicting test data\n", " print('F1 Score : {}'.format(f1_score(y_test, clfval, average='micro')))\n", " print(classification_report(y_test, clfval))\n", " f1.append(f1_score(y_test, clfval, average='micro'))\n", "print('F1 MEAN Score : {}'.format(np.mean(f1)))" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "xOK4rYxjiM4M", "outputId": "9a4bc1ae-4a6c-4051-dba1-6303cba334b0" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "F1 Score : 0.8112475759534583\n" ] } ], "source": [ "from sklearn.svm import SVC\n", "clf=SVC(kernel='rbf',gamma = 10,C = 10, random_state=42)\n", "clf.fit(x_train, y_train) # training model on train data\n", "\n", "clfval = clf.predict(x_test) # predicting test data\n", "print('F1 Score : {}'.format(f1_score(y_test, clfval, average='micro'))) # printing F1 score" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "HXZ7CJtSiVQw", "outputId": "efa743ee-255c-4beb-f977-371412bc804c" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "F1 Score : 0.779896574014221\n" ] } ], "source": [ "from sklearn.linear_model import LogisticRegression\n", "lrr=LogisticRegression(solver='saga', n_jobs=1, C=1e5)\n", "lrr.fit(x_train, y_train)\n", "lrrval = lrr.predict(x_test)\n", "print('F1 Score : {}'.format(f1_score(y_test, lrrval, average='micro')))" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "yfDOHX5fitEa", "outputId": "75625486-6b76-4cd0-863d-acd66b4ed156" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "F1 Score : 0.7776341305753071\n", " precision recall f1-score support\n", "\n", " Culture 0.76 0.74 0.75 659\n", " Economy 0.81 0.85 0.83 151\n", " EduTech 0.51 0.40 0.45 159\n", "Entertainment 0.76 0.75 0.76 224\n", " Health 0.71 0.67 0.69 110\n", " Interview 0.78 0.74 0.76 91\n", " Literature 0.76 0.80 0.78 593\n", " Opinion 0.76 0.73 0.75 179\n", " Politics 0.86 0.89 0.87 514\n", " Sports 0.83 0.86 0.84 414\n", "\n", " accuracy 0.78 3094\n", " macro avg 0.75 0.74 0.75 3094\n", " weighted avg 0.77 0.78 0.78 3094\n", "\n", "F1 Score : 0.8002585649644475\n", " precision recall f1-score support\n", "\n", " Culture 0.78 0.80 0.79 637\n", " Economy 0.73 0.80 0.76 137\n", " EduTech 0.61 0.47 0.53 153\n", "Entertainment 0.78 0.74 0.76 221\n", " Health 0.75 0.67 0.71 133\n", " Interview 0.75 0.73 0.74 99\n", " Literature 0.77 0.80 0.78 549\n", " Opinion 0.89 0.74 0.81 206\n", " Politics 0.87 0.92 0.89 496\n", " Sports 0.85 0.89 0.87 463\n", "\n", " accuracy 0.80 3094\n", " macro avg 0.78 0.76 0.77 3094\n", " weighted avg 0.80 0.80 0.80 3094\n", "\n", "F1 Score : 0.7892695539754362\n", " precision recall f1-score support\n", "\n", " Culture 0.78 0.75 0.76 649\n", " Economy 0.82 0.83 0.83 141\n", " EduTech 0.58 0.40 0.47 162\n", "Entertainment 0.71 0.73 0.72 183\n", " Health 0.73 0.64 0.68 118\n", " Interview 0.80 0.75 0.77 110\n", " Literature 0.73 0.81 0.76 539\n", " Opinion 0.88 0.77 0.82 212\n", " Politics 0.85 0.91 0.88 550\n", " Sports 0.85 0.91 0.88 430\n", "\n", " accuracy 0.79 3094\n", " macro avg 0.77 0.75 0.76 3094\n", " weighted avg 0.79 0.79 0.79 3094\n", "\n", "F1 Score : 0.7805429864253394\n", " precision recall f1-score support\n", "\n", " Culture 0.75 0.79 0.77 620\n", " Economy 0.77 0.80 0.79 124\n", " EduTech 0.50 0.35 0.41 152\n", "Entertainment 0.76 0.72 0.74 211\n", " Health 0.73 0.57 0.64 138\n", " Interview 0.88 0.71 0.79 122\n", " Literature 0.74 0.77 0.76 541\n", " Opinion 0.79 0.74 0.77 207\n", " Politics 0.85 0.90 0.88 535\n", " Sports 0.84 0.91 0.87 444\n", "\n", " accuracy 0.78 3094\n", " macro avg 0.76 0.73 0.74 3094\n", " weighted avg 0.78 0.78 0.78 3094\n", "\n", "F1 Score : 0.7802197802197802\n", " precision recall f1-score support\n", "\n", " Culture 0.77 0.74 0.76 627\n", " Economy 0.79 0.74 0.76 140\n", " EduTech 0.52 0.36 0.43 158\n", "Entertainment 0.78 0.76 0.77 239\n", " Health 0.78 0.61 0.69 137\n", " Interview 0.88 0.78 0.83 111\n", " Literature 0.73 0.79 0.76 536\n", " Opinion 0.82 0.81 0.81 188\n", " Politics 0.81 0.89 0.85 499\n", " Sports 0.84 0.90 0.87 459\n", "\n", " accuracy 0.78 3094\n", " macro avg 0.77 0.74 0.75 3094\n", " weighted avg 0.78 0.78 0.78 3094\n", "\n", "F1 MEAN Score : 0.785585003232062\n" ] } ], "source": [ "kfold = KFold(n_splits=5, shuffle=True, random_state=42)\n", "\n", "f1 = []\n", "\n", "for train_index, test_index in kfold.split(X_train):\n", "\n", " x_train, x_test = X_train[train_index], X_train[test_index]\n", " y_train, y_test = Y_train[train_index], Y_train[test_index]\n", " #print(x_train.shape, x_test.shape, y_train.shape, y_test.shape)\n", " clf=LogisticRegression(solver='saga', n_jobs=1, C=1e5)\n", " clf.fit(x_train, y_train)\n", " clfval = clf.predict(x_test) # predicting test data\n", " print('F1 Score : {}'.format(f1_score(y_test, clfval, average='micro')))\n", " print(classification_report(y_test, clfval))\n", " f1.append(f1_score(y_test, clfval, average='micro'))\n", "print('F1 MEAN Score : {}'.format(np.mean(f1)))" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 652 }, "id": "wTSCOpD9kXYA", "outputId": "aaf2cace-68c9-4a0d-c344-a3d104782321" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 37 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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ol27dmn79u2OIygoSD179tT27dsporhAcnKyjhw5In9/f7OjWFZoaOhN29cfPHhQVapUMSlRwTFnzhz5+flluRAncseVK1fk7p71o02hQoVks9lMSlSweHl5yd/fX5cuXdKaNWvUoUMHsyMBuYoZKTkUHh6usLAwBQUF6b777tOUKVOUkpKi3r17mx3NkpKTk7N8W/nbb79p+/btKlWqlCpXrmxiMuvq37+/Fi5cqC+//FLe3t46e/asJMnHx0eenp4mp7OmYcOGqVWrVqpcubIuX76shQsX6scff9SaNWvMjmZZ3t7eN133x8vLS6VLl+Z6QLlk8ODBateunapUqaIzZ85o1KhRKlSokLp37252NMsaNGiQmjZtqrfeektdu3bV1q1bNWPGDM2YMcPsaJZms9k0Z84chYWFqXBh3nLntnbt2mncuHGqXLmy6tatq19//VXvvPOO+vTpY3Y0S1uzZo3sdrtq1qypw4cP67XXXlOtWrX4TATL4696Dj355JM6d+6cRo4cqbNnz6pBgwZavXr1TReghXNs27ZNzZo1c9wODw+XJIWFhWnu3LkmpbK26dOnS5IefvjhLO1z5szhgnm5JCEhQb169VJcXJx8fHxUr149rVmzRo8++qjZ0QCnOXXqlLp3764LFy7I19dX999/v37++Wf5+vqaHc2yGjdurOXLl2vYsGH6z3/+o6pVq2rKlClchDOXff/99zpx4gQf5F3k/fff14gRI/Tiiy8qISFB5cuX13PPPaeRI0eaHc3SEhMTNWzYMJ06dUqlSpVSp06dNG7cOBUpUsTsaECucrPb7XazQwAAAAAAAOQHXCMFAAAAAADAIAopAAAAAAAABlFIAQAAAAAAMIhCCgAAAAAAgEEUUgAAAAAAAAyikAIAAAAAAGAQhRQAAAAAAACDKKQAAAAAAAAYRCEFAAAAAADAIAopAAAAAAAABlFIAQAAAAAAMOj/ARp3Kt3zhSE6AAAAAElFTkSuQmCC\n" }, "metadata": {} } ], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from sklearn.metrics import confusion_matrix\n", "cf_matrix = confusion_matrix(y_test, clfval)\n", "fig, ax = plt.subplots(figsize=(15,10))\n", "sns.heatmap(cf_matrix, linewidths=1, annot=True, ax=ax, fmt='g')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "iM8dSpKqZV-h" }, "outputs": [], "source": [ "# nepali BERT" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 255, "referenced_widgets": [ "dd083e9312f34cfe8712574bd16c2520", "54891ad613ed4f27bb3aa9be849132b1", "007304dd7fb74a1b9d3b390f13e73a03", "4298e20b35474077a0f872ddbc6db987", "076956eb941c4cd6a402c1335aa3bba1", "4b7ba118f59646e59cec9056ffcbcaa3", "525d941c1e3541919bacb96f9adfdd91", "821aa443392a4ac99d1adb7cc9138840", "888b6d0488a649f7a4469b93f1bc7bc6", "20b7ae08f2de4b86bda6c5f94054eb75", "879f999eba754a20861a37fcb275c7e0", "fe72571856854a17bf5df0b4ff3ff604", "d7c45455a8e8445c929c8c83ab1f9fa1", "748462ab70364e168c082c7573b52238", "67fdea3f80f54b849854ec829e37d80b", "7a1044e4ca444ae990d163dff600a113", "f58360c8802b490fb23cb4a17a81911e", "a42f03dc2a5849beb94666ff1648ff5b", "020a891f78e14676b691abd046356725", "0550c59aa57f40e094beae25cc5b0dc3", "118705ff5aa84e59801ce43e13bf782f", "23531ca8f9e14e7dbc8f1ab522131142", "4528dd10b894401e98dcaf0dd547bf13", "d7892059dc6048b0bfa8e18998125727", "8664160808b0488bba20727074611c9f", "e9f2d971371a4c5cac7c9eab4ec30d89", "511fdf809305494ca560dd7a84e8f904", "802d3e98e6b94a6881d3eb2f11ddb235", "a360588788c34e59869144df00b459ec", "a8395f7eabf54ffc8329dfed96cc400a", "2f56fa2517b2460a8d432ea866b657dd", "5253b2271568488da290f23826fa8979", "ae16930d4b7e498e888c0b1a26ca9ecc" ] }, "id": "UlN39Ni9ZVxc", "outputId": "9076dee9-3bde-4651-b872-09487e2e77fc" }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "dd083e9312f34cfe8712574bd16c2520", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Downloading: 0%| | 0.00/589 [00:00 0\n", " return factor" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "zfaYfi2d9RdR" }, "outputs": [], "source": [ "'''def forward(self, ids, mask, token_type_ids):\n", " _, features = self.roberta(ids, attention_mask = mask, token_type_ids = token_type_ids, return_dict=False)\n", " output_2 = self.l2(features)\n", " output = self.fc(output_2)\n", " return output'''" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "yzvl5u0Y-78P" }, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "ZeDUevemwumm" }, "outputs": [], "source": [ "class BertModule(nn.Module):\n", " def __init__(self, name, num_labels):\n", " super().__init__()\n", " self.name = name\n", " self.num_labels = num_labels\n", " self.from_tf = True #for tensorflow model(tf_model.h5)\n", "\n", " self.reset_weights()\n", "\n", " def reset_weights(self):\n", " self.bert = AutoModel.from_pretrained(self.name,from_tf=self.from_tf)\n", " self.classifier=nn.Linear(self.bert.config.hidden_size, self.num_labels)\n", "\n", " def forward(self, **kwargs):\n", " pred = self.bert(**kwargs)\n", " pred = self.classifier(pred.pooler_output)\n", " return pred" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "bWZNU48UwzL8" }, "outputs": [], "source": [ "pipeline = Pipeline([\n", " ('tokenizer', HuggingfacePretrainedTokenizer(TOKENIZER)),\n", " ('net', NeuralNetClassifier(\n", " BertModule,\n", " module__name=PRETRAINED_MODEL,\n", " train_split=None,\n", " module__num_labels=8,\n", " optimizer=OPTMIZER,\n", " lr=LR,\n", " max_epochs=MAX_EPOCHS,\n", " criterion=CRITERION,\n", " batch_size=BATCH_SIZE,\n", " iterator_train__shuffle=True,\n", " device=DEVICE,\n", " callbacks=[\n", " LRScheduler(LambdaLR, lr_lambda=lr_schedule, step_every='batch'),\n", " ProgressBar(),\n", " ],\n", " )),\n", "])" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 575 }, "id": "YA4pBaicab-A", "outputId": "09b6db1b-c6f7-4870-9fe0-fb7d33ade964" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Re-initializing module because the following parameters were re-set: name, num_labels.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "All TF 2.0 model weights were used when initializing BertModel.\n", "\n", "All the weights of BertModel were initialized from the TF 2.0 model.\n", "If your task is similar to the task the model of the checkpoint was trained on, you can already use BertModel for predictions without further training.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Re-initializing criterion.\n", "Re-initializing optimizer.\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ " 0%| | 0/1148 [00:00\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/sklearn/pipeline.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, X, y, **fit_params)\u001b[0m\n\u001b[1;32m 392\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_final_estimator\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;34m\"passthrough\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 393\u001b[0m \u001b[0mfit_params_last_step\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfit_params_steps\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msteps\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 394\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_final_estimator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mXt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params_last_step\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 395\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 396\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/classifier.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, X, y, **fit_params)\u001b[0m\n\u001b[1;32m 139\u001b[0m \u001b[0;31m# this is actually a pylint bug:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 140\u001b[0m \u001b[0;31m# https://github.com/PyCQA/pylint/issues/1085\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 141\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mNeuralNetClassifier\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 142\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mpredict_proba\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, X, y, **fit_params)\u001b[0m\n\u001b[1;32m 1228\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minitialize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1229\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1230\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpartial_fit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1231\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1232\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mpartial_fit\u001b[0;34m(self, X, y, classes, **fit_params)\u001b[0m\n\u001b[1;32m 1187\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnotify\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'on_train_begin'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1188\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1189\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit_loop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1190\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyboardInterrupt\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1191\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mfit_loop\u001b[0;34m(self, X, y, epochs, **fit_params)\u001b[0m\n\u001b[1;32m 1100\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1101\u001b[0m self.run_single_epoch(iterator_train, training=True, prefix=\"train\",\n\u001b[0;32m-> 1102\u001b[0;31m step_fn=self.train_step, **fit_params)\n\u001b[0m\u001b[1;32m 1103\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1104\u001b[0m self.run_single_epoch(iterator_valid, training=False, prefix=\"valid\",\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mrun_single_epoch\u001b[0;34m(self, iterator, training, prefix, step_fn, **fit_params)\u001b[0m\n\u001b[1;32m 1135\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mbatch\u001b[0m \u001b[0;32min\u001b[0m \u001b[0miterator\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1136\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnotify\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"on_batch_begin\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbatch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtraining\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtraining\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1137\u001b[0;31m \u001b[0mstep\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstep_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1138\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecord_batch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprefix\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m\"_loss\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstep\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"loss\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1139\u001b[0m batch_size = (get_len(batch[0]) if isinstance(batch, (tuple, list))\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mtrain_step\u001b[0;34m(self, batch, **fit_params)\u001b[0m\n\u001b[1;32m 1014\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mstep\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'loss'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1015\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1016\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_step_optimizer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstep_fn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1017\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mstep_accumulator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_step\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1018\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36m_step_optimizer\u001b[0;34m(self, step_fn)\u001b[0m\n\u001b[1;32m 970\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 971\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 972\u001b[0;31m \u001b[0moptimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstep_fn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 973\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 974\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mtrain_step\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/optim/lr_scheduler.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[0minstance\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_step_count\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 64\u001b[0m \u001b[0mwrapped\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__get__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minstance\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcls\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 65\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mwrapped\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 66\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 67\u001b[0m \u001b[0;31m# Note that the returned function here is no longer a bound method,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/optim/optimizer.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0mprofile_name\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"Optimizer.step#{}.step\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__class__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mautograd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprofiler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecord_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprofile_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 113\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 114\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/autograd/grad_mode.py\u001b[0m in \u001b[0;36mdecorate_context\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mdecorate_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclone\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 27\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 28\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mF\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdecorate_context\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/optim/adamw.py\u001b[0m in \u001b[0;36mstep\u001b[0;34m(self, closure)\u001b[0m\n\u001b[1;32m 117\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mclosure\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 118\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0menable_grad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 119\u001b[0;31m \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclosure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 120\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 121\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mgroup\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparam_groups\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mstep_fn\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mstep_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1005\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_zero_grad_optimizer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1006\u001b[0;31m \u001b[0mstep\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrain_step_single\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1007\u001b[0m \u001b[0mstep_accumulator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstore_step\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1008\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mtrain_step_single\u001b[0;34m(self, batch, **fit_params)\u001b[0m\n\u001b[1;32m 904\u001b[0m \u001b[0mXi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0myi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0munpack_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 905\u001b[0m \u001b[0my_pred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minfer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mXi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 906\u001b[0;31m \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loss\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_pred\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0myi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mXi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtraining\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 907\u001b[0m \u001b[0mloss\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 908\u001b[0m return {\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/classifier.py\u001b[0m in \u001b[0;36mget_loss\u001b[0;34m(self, y_pred, y_true, *args, **kwargs)\u001b[0m\n\u001b[1;32m 124\u001b[0m \u001b[0meps\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfinfo\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_pred\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0meps\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 125\u001b[0m \u001b[0my_pred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlog\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_pred\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0meps\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 126\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loss\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_pred\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_true\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 127\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 128\u001b[0m \u001b[0;31m# pylint: disable=signature-differs\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mget_loss\u001b[0;34m(self, y_pred, y_true, X, training)\u001b[0m\n\u001b[1;32m 1569\u001b[0m \"\"\"\n\u001b[1;32m 1570\u001b[0m \u001b[0my_true\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mto_tensor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_true\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdevice\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdevice\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1571\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcriterion_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_pred\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my_true\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1572\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1573\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mget_dataset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 1128\u001b[0m if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks or _global_backward_hooks\n\u001b[1;32m 1129\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1130\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1131\u001b[0m \u001b[0;31m# Do not call functions when jit is used\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1132\u001b[0m \u001b[0mfull_backward_hooks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnon_full_backward_hooks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/nn/modules/loss.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, input, target)\u001b[0m\n\u001b[1;32m 611\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 612\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mTensor\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0mTensor\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m->\u001b[0m \u001b[0mTensor\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 613\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mF\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbinary_cross_entropy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweight\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mweight\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreduction\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreduction\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 614\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 615\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/nn/functional.py\u001b[0m in \u001b[0;36mbinary_cross_entropy\u001b[0;34m(input, target, weight, size_average, reduce, reduction)\u001b[0m\n\u001b[1;32m 3081\u001b[0m \u001b[0mweight\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mweight\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mexpand\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mnew_size\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3082\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 3083\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_C\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_nn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbinary_cross_entropy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtarget\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweight\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mreduction_enum\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3084\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3085\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mRuntimeError\u001b[0m: Found dtype Long but expected Float" ] } ], "source": [ "%time pipeline.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "shIKFCBpxKPX" }, "outputs": [], "source": [ "torch.manual_seed(42)\n", "torch.cuda.manual_seed(42)\n", "torch.cuda.manual_seed_all(42)\n", "np.random.seed(42)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 491 }, "id": "AZ2BpdIhxPED", "outputId": "591739c1-0429-4791-879b-6387223a1564" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Some weights of the model checkpoint at Sakonii/deberta-base-nepali were not used when initializing DebertaModel: ['cls.predictions.bias', 'cls.predictions.transform.LayerNorm.bias', 'cls.predictions.decoder.weight', 'cls.predictions.transform.LayerNorm.weight', 'cls.predictions.decoder.bias', 'cls.predictions.transform.dense.weight', 'cls.predictions.transform.dense.bias']\n", "- This IS expected if you are initializing DebertaModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n", "- This IS NOT expected if you are initializing DebertaModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n", "\n", " 0%| | 0/1148 [00:00\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/sklearn/pipeline.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, X, y, **fit_params)\u001b[0m\n\u001b[1;32m 392\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_final_estimator\u001b[0m \u001b[0;34m!=\u001b[0m \u001b[0;34m\"passthrough\"\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 393\u001b[0m \u001b[0mfit_params_last_step\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfit_params_steps\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msteps\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 394\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_final_estimator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mXt\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params_last_step\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 395\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 396\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/classifier.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, X, y, **fit_params)\u001b[0m\n\u001b[1;32m 139\u001b[0m \u001b[0;31m# this is actually a pylint bug:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 140\u001b[0m \u001b[0;31m# https://github.com/PyCQA/pylint/issues/1085\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 141\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mNeuralNetClassifier\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 142\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 143\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mpredict_proba\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mfit\u001b[0;34m(self, X, y, **fit_params)\u001b[0m\n\u001b[1;32m 1228\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minitialize\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1229\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1230\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpartial_fit\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1231\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1232\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mpartial_fit\u001b[0;34m(self, X, y, classes, **fit_params)\u001b[0m\n\u001b[1;32m 1187\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnotify\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'on_train_begin'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1188\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1189\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfit_loop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mX\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1190\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyboardInterrupt\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1191\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mfit_loop\u001b[0;34m(self, X, y, epochs, **fit_params)\u001b[0m\n\u001b[1;32m 1100\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1101\u001b[0m self.run_single_epoch(iterator_train, training=True, prefix=\"train\",\n\u001b[0;32m-> 1102\u001b[0;31m step_fn=self.train_step, **fit_params)\n\u001b[0m\u001b[1;32m 1103\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1104\u001b[0m self.run_single_epoch(iterator_valid, training=False, prefix=\"valid\",\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mrun_single_epoch\u001b[0;34m(self, iterator, training, prefix, step_fn, **fit_params)\u001b[0m\n\u001b[1;32m 1135\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mbatch\u001b[0m \u001b[0;32min\u001b[0m \u001b[0miterator\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1136\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnotify\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"on_batch_begin\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mbatch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtraining\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mtraining\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1137\u001b[0;31m \u001b[0mstep\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mstep_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1138\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhistory\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecord_batch\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprefix\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0;34m\"_loss\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstep\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"loss\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitem\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1139\u001b[0m batch_size = (get_len(batch[0]) if isinstance(batch, (tuple, list))\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mtrain_step\u001b[0;34m(self, batch, **fit_params)\u001b[0m\n\u001b[1;32m 1014\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mstep\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'loss'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1015\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1016\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_step_optimizer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstep_fn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1017\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mstep_accumulator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_step\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1018\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36m_step_optimizer\u001b[0;34m(self, step_fn)\u001b[0m\n\u001b[1;32m 970\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 971\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 972\u001b[0;31m \u001b[0moptimizer\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstep_fn\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 973\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 974\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mtrain_step\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbatch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/optim/lr_scheduler.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 63\u001b[0m \u001b[0minstance\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_step_count\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 64\u001b[0m \u001b[0mwrapped\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__get__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minstance\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mcls\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 65\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mwrapped\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 66\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 67\u001b[0m \u001b[0;31m# Note that the returned function here is no longer a bound method,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/optim/optimizer.py\u001b[0m in \u001b[0;36mwrapper\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 111\u001b[0m \u001b[0mprofile_name\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"Optimizer.step#{}.step\"\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__class__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__name__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 112\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mautograd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mprofiler\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrecord_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprofile_name\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 113\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 114\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mwrapper\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 115\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/autograd/grad_mode.py\u001b[0m in \u001b[0;36mdecorate_context\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 25\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mdecorate_context\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 26\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclone\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 27\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 28\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mcast\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mF\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdecorate_context\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 29\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/optim/adamw.py\u001b[0m in \u001b[0;36mstep\u001b[0;34m(self, closure)\u001b[0m\n\u001b[1;32m 117\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mclosure\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 118\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0menable_grad\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 119\u001b[0;31m \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mclosure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 120\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 121\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mgroup\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mparam_groups\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mstep_fn\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mstep_fn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1005\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_zero_grad_optimizer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1006\u001b[0;31m \u001b[0mstep\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtrain_step_single\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1007\u001b[0m \u001b[0mstep_accumulator\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstore_step\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstep\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1008\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36mtrain_step_single\u001b[0;34m(self, batch, **fit_params)\u001b[0m\n\u001b[1;32m 903\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_set_training\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 904\u001b[0m \u001b[0mXi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0myi\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0munpack_data\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 905\u001b[0;31m \u001b[0my_pred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minfer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mXi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 906\u001b[0m \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loss\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my_pred\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0myi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mX\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mXi\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mtraining\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 907\u001b[0m \u001b[0mloss\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbackward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/skorch/net.py\u001b[0m in \u001b[0;36minfer\u001b[0;34m(self, x, **fit_params)\u001b[0m\n\u001b[1;32m 1424\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mMapping\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1425\u001b[0m \u001b[0mx_dict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_merge_x_and_fit_params\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1426\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodule_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mx_dict\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1427\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmodule_\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mfit_params\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1428\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *input, **kwargs)\u001b[0m\n\u001b[1;32m 1128\u001b[0m if not (self._backward_hooks or self._forward_hooks or self._forward_pre_hooks or _global_backward_hooks\n\u001b[1;32m 1129\u001b[0m or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1130\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0minput\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1131\u001b[0m \u001b[0;31m# Do not call functions when jit is used\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1132\u001b[0m \u001b[0mfull_backward_hooks\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mnon_full_backward_hooks\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, **kwargs)\u001b[0m\n\u001b[1;32m 15\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mforward\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 16\u001b[0m \u001b[0mpred\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbert\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 17\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mpred\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlogits\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;31mAttributeError\u001b[0m: 'BaseModelOutput' object has no attribute 'logits'" ] } ], "source": [ "%time pipeline.fit(X_train, y_train)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "7CIMeiwJxSBB", "outputId": "a4ae90a1-28ac-4fb8-b56b-00250c1a75ce" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 1min, sys: 72.7 ms, total: 1min\n", "Wall time: 1min\n" ] } ], "source": [ "%%time\n", "with torch.inference_mode():\n", " y_pred = pipeline.predict(X_test)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "klFNuYHIznkQ", "outputId": "c1559db6-efcc-4e8a-85cf-98b4fee97594" }, "outputs": [ { "data": { "text/plain": [ "0.834640522875817" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "accuracy_score(y_test, y_pred)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "iT83HG3Yzujb", "outputId": "767ea1e4-a296-4987-83cb-de7903bd96b7" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "F1 Score : 0.834640522875817\n", " precision recall f1-score support\n", "\n", " 0 0.83 1.00 0.91 2554\n", " 1 0.00 0.00 0.00 506\n", "\n", " accuracy 0.83 3060\n", " macro avg 0.42 0.50 0.45 3060\n", "weighted avg 0.70 0.83 0.76 3060\n", "\n" ] } ], "source": [ "from sklearn.metrics import confusion_matrix, f1_score, classification_report\n", "print('F1 Score : {}'.format(f1_score(y_test, y_pred, average='micro')))\n", "print(classification_report(y_test, y_pred))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 609 }, "id": "Ko4rgtJe0CiU", "outputId": "1102d0d4-04d9-4c7c-fc38-d36cea3bce43" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from sklearn.metrics import confusion_matrix, f1_score\n", "cf_matrix = confusion_matrix(y_test, y_pred)\n", "fig, ax = plt.subplots(figsize=(15,10))\n", "sns.heatmap(cf_matrix, linewidths=1, annot=True, ax=ax, fmt='g')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "OCR4cW4yM4-X" }, "outputs": [], "source": [ "# deberta" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "cJDmaDlonfge", "outputId": "8452adf7-2ba5-4383-f740-f39cf248c939" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "F1 Score : 0.8137254901960784\n", " precision recall f1-score support\n", "\n", " 0 0.86 0.77 0.81 755\n", " 1 0.95 0.99 0.97 1010\n", " 2 0.55 0.66 0.60 217\n", " 3 0.72 0.67 0.70 273\n", " 4 0.82 0.87 0.85 292\n", " 5 0.53 0.56 0.55 186\n", " 6 0.64 0.49 0.55 148\n", " 7 0.74 0.84 0.79 179\n", "\n", " accuracy 0.81 3060\n", " macro avg 0.73 0.73 0.73 3060\n", "weighted avg 0.82 0.81 0.81 3060\n", "\n" ] } ], "source": [ "print('F1 Score : {}'.format(f1_score(y_test, y_pred, average='micro')))\n", "print(classification_report(y_test, y_pred))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 612 }, "id": "JRyKi4bangMS", "outputId": "91171cbe-8987-4962-afec-7f6bbb66ca72" }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from sklearn.metrics import confusion_matrix\n", "\n", "cf_matrix = confusion_matrix(y_test, y_pred)\n", "fig, ax = plt.subplots(figsize=(15,10))\n", "sns.heatmap(cf_matrix, linewidths=1, annot=True, ax=ax, fmt='g')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "GS_YvaTGnvCt" }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "id": "d_9EcWGk2cwK" }, "source": [ "# tensorflow model" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "p029caIE2lnE" }, "outputs": [], "source": [ "! pip install transformers -q" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ulunKB682cOI", "outputId": "d53edfa8-1aa3-4c38-b1ca-56f04dff39e3" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "TF version: 2.9.2\n" ] } ], "source": [ "import os\n", "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "from sklearn.model_selection import train_test_split\n", "import tensorflow as tf\n", "print(f'TF version: {tf.__version__}')\n", "from tensorflow.keras import layers\n", "import transformers" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "pHjXHPDM2iT4" }, "outputs": [], "source": [ "def set_seed(seed=42):\n", " np.random.seed(seed)\n", " tf.random.set_seed(seed)\n", " os.environ['PYTHONHASHSEED'] = str(seed)\n", "# os.environ['TF_DETERMINISTIC_OPS'] = '1'\n", "set_seed(42)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 861 }, "id": "WXRLitt22uFZ", "outputId": "bf83f234-521c-42b9-d09a-81906fd26bb5" }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
textcovid_statsvaccinationcovid_politicshumourlockdowncivic_viewslife_during_pandemiccovid_waves_and_variants
0चितवनमा ९३ हजार बढीले लगाए कोरोनाविरुद्धको खोप01000001
1जोरबिजोर भनेको गाडी संख्या धेरै भएर ट्राफिक जा...00000100
2३१ सय ८ जना संक्रमित थपिदा १५ सय ९५ जना डिस्चा...10000000
3कोरोनाको जोखिम बढ्दै: झापाको दमक फेरी १ हफ्ता ...00001000
4कोरोना खोप राज्यले निःशुल्क लगाइरहेकै छ र थप ल...01000100
\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ], "text/plain": [ " text covid_stats \\\n", "0 चितवनमा ९३ हजार बढीले लगाए कोरोनाविरुद्धको खोप 0 \n", "1 जोरबिजोर भनेको गाडी संख्या धेरै भएर ट्राफिक जा... 0 \n", "2 ३१ सय ८ जना संक्रमित थपिदा १५ सय ९५ जना डिस्चा... 1 \n", "3 कोरोनाको जोखिम बढ्दै: झापाको दमक फेरी १ हफ्ता ... 0 \n", "4 कोरोना खोप राज्यले निःशुल्क लगाइरहेकै छ र थप ल... 0 \n", "\n", " vaccination covid_politics humour lockdown civic_views \\\n", "0 1 0 0 0 0 \n", "1 0 0 0 0 1 \n", "2 0 0 0 0 0 \n", "3 0 0 0 1 0 \n", "4 1 0 0 0 1 \n", "\n", " life_during_pandemic covid_waves_and_variants \n", "0 0 1 \n", "1 0 0 \n", "2 0 0 \n", "3 0 0 \n", "4 0 0 " ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n", "---------DataFrame Summary---------\n", "\n", "RangeIndex: 12241 entries, 0 to 12240\n", "Data columns (total 9 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 text 12241 non-null object\n", " 1 covid_stats 12241 non-null int64 \n", " 2 vaccination 12241 non-null int64 \n", " 3 covid_politics 12241 non-null int64 \n", " 4 humour 12241 non-null int64 \n", " 5 lockdown 12241 non-null int64 \n", " 6 civic_views 12241 non-null int64 \n", " 7 life_during_pandemic 12241 non-null int64 \n", " 8 covid_waves_and_variants 12241 non-null int64 \n", "dtypes: int64(8), object(1)\n", "memory usage: 860.8+ KB\n" ] } ], "source": [ "df = pd.read_csv('https://github.com/naamiinepal/covid-tweet-classification/blob/main/training/datasets/nepali_tweets_dataset_labelled_tweets_feb_23.csv?raw=true')\n", "display(df.head())\n", "print('\\n---------DataFrame Summary---------')\n", "df.info()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "aVhgsjuD23ss", "outputId": "334eaec9-7167-4ff2-909b-b6a8d8bb6ba9" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Training examples: 9792, validation examples: 2449\n" ] } ], "source": [ "train_df, val_df = train_test_split(df, test_size=0.2, random_state=42)\n", "print(f'Training examples: {len(train_df)}, validation examples: {len(val_df)}')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "nuhTxllK29vM" }, "outputs": [], "source": [ "TARGET_COLS = ['covid_stats', 'vaccination', 'covid_politics', 'humour', 'lockdown', 'civic_views','life_during_pandemic','covid_waves_and_variants']\n", "\n", "MAX_LENGTH = 512\n", "BATCH_SIZE = 8\n", "BERT_MODEL = \"NepBERTa/NepBERTa\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "GGel6-153aaW" }, "outputs": [], "source": [ "class BertDataGenerator(tf.keras.utils.Sequence):\n", " def __init__(\n", " self,\n", " text,\n", " labels,\n", " batch_size=BATCH_SIZE,\n", " shuffle=True,\n", " include_targets=True,\n", " ):\n", " self.text = text\n", " self.labels = labels\n", " self.shuffle = shuffle\n", " self.batch_size = batch_size\n", " self.include_targets = include_targets\n", " self.tokenizer = transformers.BertTokenizer.from_pretrained(\n", " BERT_MODEL, do_lower_case=True\n", " )\n", " self.indexes = np.arange(len(self.text))\n", " self.on_epoch_end()\n", "\n", " def __len__(self):\n", " return len(self.text) // self.batch_size\n", "\n", " def __getitem__(self, idx):\n", " indexes = self.indexes[idx * self.batch_size : (idx + 1) * self.batch_size]\n", " batch_texts = self.text[indexes]\n", "\n", " encoded = self.tokenizer.batch_encode_plus(\n", " batch_texts.tolist(),\n", " add_special_tokens=True,\n", " max_length=MAX_LENGTH,\n", " return_attention_mask=True,\n", " return_token_type_ids=True,\n", " return_tensors=\"tf\",\n", " truncation=True,\n", " padding='max_length'\n", " )\n", "\n", " input_ids = np.array(encoded[\"input_ids\"], dtype=\"int32\")\n", " attention_masks = np.array(encoded[\"attention_mask\"], dtype=\"int32\")\n", " token_type_ids = np.array(encoded[\"token_type_ids\"], dtype=\"int32\")\n", "\n", " if self.include_targets:\n", " labels = np.array(self.labels[indexes], dtype=\"float32\")\n", " return [input_ids, attention_masks, token_type_ids], labels\n", " else:\n", " return [input_ids, attention_masks, token_type_ids]\n", "\n", " def on_epoch_end(self):\n", " if self.shuffle:\n", " np.random.RandomState(42).shuffle(self.indexes)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "QGAYLx2I39UM" }, "outputs": [], "source": [ "train_data = BertDataGenerator(\n", " train_df[\"text\"].values.astype(\"str\"),\n", " np.array(train_df[TARGET_COLS]),\n", " batch_size=BATCH_SIZE,\n", " shuffle=True,\n", ")\n", "valid_data = BertDataGenerator(\n", " val_df[\"text\"].values.astype(\"str\"),\n", " np.array(val_df[TARGET_COLS]),\n", " batch_size=BATCH_SIZE,\n", " shuffle=False,\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "b4Vmb2bQ4D5n", "outputId": "93dc0cc6-1bd9-48f8-ebe9-1f128e73c188" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "input_ids:\n", "[[ 0 3400 2421 ... 1 1 1]\n", " [ 0 2221 2175 ... 1 1 1]\n", " [ 0 6411 4101 ... 1 1 1]\n", " ...\n", " [ 0 2175 25274 ... 1 1 1]\n", " [ 0 4229 1010 ... 1 1 1]\n", " [ 0 3687 1026 ... 1 1 1]] \n", " With shape (8, 512) and dtype int32\n", "\n", "attention_mask:\n", "[[1 1 1 ... 0 0 0]\n", " [1 1 1 ... 0 0 0]\n", " [1 1 1 ... 0 0 0]\n", " ...\n", " [1 1 1 ... 0 0 0]\n", " [1 1 1 ... 0 0 0]\n", " [1 1 1 ... 0 0 0]] \n", " With shape (8, 512) and dtype int32\n", "\n", "token_type_ids:\n", "[[0 0 0 ... 0 0 0]\n", " [0 0 0 ... 0 0 0]\n", " [0 0 0 ... 0 0 0]\n", " ...\n", " [0 0 0 ... 0 0 0]\n", " [0 0 0 ... 0 0 0]\n", " [0 0 0 ... 0 0 0]] \n", " With shape (8, 512) and dtype int32\n", "\n", "Labels:\n", "[[1. 0. 0. 0. 0. 0. 0. 0.]\n", " [0. 0. 0. 0. 0. 0. 0. 0.]\n", " [0. 0. 0. 0. 1. 0. 0. 0.]\n", " [0. 0. 0. 1. 0. 0. 0. 0.]\n", " [0. 0. 0. 0. 1. 0. 0. 0.]\n", " [0. 0. 0. 0. 0. 0. 1. 0.]\n", " [0. 0. 0. 1. 0. 0. 0. 0.]\n", " [0. 0. 0. 0. 0. 1. 0. 0.]] \n", " With shape (8, 8) and dtype float32\n" ] } ], "source": [ "inputs, labels = next(iter(train_data))\n", "print(f'input_ids:\\n{inputs[0]} \\n With shape {inputs[0].shape} and dtype {inputs[0].dtype}\\n')\n", "print(f'attention_mask:\\n{inputs[1]} \\n With shape {inputs[1].shape} and dtype {inputs[0].dtype}\\n')\n", "print(f'token_type_ids:\\n{inputs[2]} \\n With shape {inputs[2].shape} and dtype {inputs[0].dtype}\\n')\n", "print(f'Labels:\\n{labels} \\n With shape {labels.shape} and dtype {labels.dtype}')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "T50actkc4XEe" }, "outputs": [], "source": [ "def get_model():\n", " input_ids = tf.keras.layers.Input(\n", " shape=(MAX_LENGTH,), dtype=tf.int32, name=\"input_ids\"\n", " )\n", "\n", " attention_masks = tf.keras.layers.Input(\n", " shape=(MAX_LENGTH,), dtype=tf.int32, name=\"attention_masks\"\n", " )\n", "\n", " token_type_ids = tf.keras.layers.Input(\n", " shape=(MAX_LENGTH,), dtype=tf.int32, name=\"token_type_ids\"\n", " )\n", "\n", " bert_model = transformers.TFBertModel.from_pretrained(BERT_MODEL)\n", " bert_model.trainable = True\n", "\n", " bert_output = bert_model.bert(\n", " input_ids, attention_mask=attention_masks, token_type_ids=token_type_ids\n", " )\n", " cls_output = bert_output.last_hidden_state[:, 0, :]\n", " output = layers.Dense(8)(cls_output)\n", " model = tf.keras.Model(inputs=[input_ids, attention_masks, token_type_ids], outputs=output)\n", "\n", " return model\n", "\n", "\n", "optimizer=tf.optimizers.Adam(learning_rate=5e-5)\n", "\n", "\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "LHKt_ZDJCUx8", "outputId": "16b8f118-7fe1-46ee-93de-5a95a7b10074" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Looking in indexes: https://pypi.org/simple, https://us-python.pkg.dev/colab-wheels/public/simple/\n", "Collecting tensorflow_addons\n", " Downloading tensorflow_addons-0.18.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.1 MB)\n", "\u001b[K |████████████████████████████████| 1.1 MB 24.4 MB/s \n", "\u001b[?25hRequirement already satisfied: typeguard>=2.7 in /usr/local/lib/python3.7/dist-packages (from tensorflow_addons) (2.7.1)\n", "Requirement already satisfied: packaging in /usr/local/lib/python3.7/dist-packages (from tensorflow_addons) (21.3)\n", "Requirement already satisfied: pyparsing!=3.0.5,>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging->tensorflow_addons) (3.0.9)\n", "Installing collected packages: tensorflow-addons\n", "Successfully installed tensorflow-addons-0.18.0\n" ] } ], "source": [ "pip install tensorflow_addons" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "PcRNtod9BsLl" }, "outputs": [], "source": [ "import tensorflow as tf\n", "import tensorflow_addons as tfa\n", "def get_loss_metrics():\n", " loss = tf.keras.losses.BinaryCrossentropy(from_logits=True)\n", " metrics = [\n", " tf.metrics.BinaryAccuracy(),\n", " tfa.metrics.F1Score(num_classes=8, average=\"weighted\", threshold=0.5),\n", " tf.keras.metrics.AUC(\n", " 2449,\n", " curve=\"PR\",\n", " multi_label=True,\n", " num_labels=8,\n", " from_logits=True,\n", " ),\n", " ]\n", "\n", " return loss, metrics" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "49hCKrGm6WqN", "outputId": "677272d8-cbba-4c6c-81e5-b79f04c76bec" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Some layers from the model checkpoint at NepBERTa/NepBERTa were not used when initializing TFBertModel: ['mlm___cls']\n", "- This IS expected if you are initializing TFBertModel from the checkpoint of a model trained on another task or with another architecture (e.g. initializing a BertForSequenceClassification model from a BertForPreTraining model).\n", "- This IS NOT expected if you are initializing TFBertModel from the checkpoint of a model that you expect to be exactly identical (initializing a BertForSequenceClassification model from a BertForSequenceClassification model).\n", "Some layers of TFBertModel were not initialized from the model checkpoint at NepBERTa/NepBERTa and are newly initialized: ['bert/pooler/dense/bias:0', 'bert/pooler/dense/kernel:0']\n", "You should probably TRAIN this model on a down-stream task to be able to use it for predictions and inference.\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Model: \"model\"\n", "__________________________________________________________________________________________________\n", " Layer (type) Output Shape Param # Connected to \n", "==================================================================================================\n", " input_ids (InputLayer) [(None, 512)] 0 [] \n", " \n", " attention_masks (InputLayer) [(None, 512)] 0 [] \n", " \n", " token_type_ids (InputLayer) [(None, 512)] 0 [] \n", " \n", " bert (TFBertMainLayer) TFBaseModelOutputWi 109482240 ['input_ids[0][0]', \n", " thPoolingAndCrossAt 'attention_masks[0][0]', \n", " tentions(last_hidde 'token_type_ids[0][0]'] \n", " n_state=(None, 512, \n", " 768), \n", " pooler_output=(Non \n", " e, 768), \n", " past_key_values=No \n", " ne, hidden_states=N \n", " one, attentions=Non \n", " e, cross_attentions \n", " =None) \n", " \n", " tf.__operators__.getitem (Slic (None, 768) 0 ['bert[0][0]'] \n", " ingOpLambda) \n", " \n", " dense (Dense) (None, 8) 6152 ['tf.__operators__.getitem[0][0]'\n", " ] \n", " \n", "==================================================================================================\n", "Total params: 109,488,392\n", "Trainable params: 109,488,392\n", "Non-trainable params: 0\n", "__________________________________________________________________________________________________\n" ] } ], "source": [ "tf.keras.backend.clear_session()\n", "model = get_model()\n", "model.summary()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "811sszb3DR68" }, "outputs": [], "source": [ "loss, metrics = get_loss_metrics()\n", "model.compile(optimizer=optimizer, loss=loss, metrics=metrics)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "RnpqEzBG6jjJ", "outputId": "171bbea1-3309-4d00-eae7-3aeb92f7b1ab" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Epoch 1/5\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "WARNING:tensorflow:Gradients do not exist for variables ['tf_bert_model/bert/pooler/dense/kernel:0', 'tf_bert_model/bert/pooler/dense/bias:0'] when minimizing the loss. If you're using `model.compile()`, did you forget to provide a `loss`argument?\n", "WARNING:tensorflow:Gradients do not exist for variables ['tf_bert_model/bert/pooler/dense/kernel:0', 'tf_bert_model/bert/pooler/dense/bias:0'] when minimizing the loss. If you're using `model.compile()`, did you forget to provide a `loss`argument?\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "1224/1224 [==============================] - 1299s 1s/step - loss: 0.2240 - binary_accuracy: 0.9041 - f1_score: 0.6557 - auc: 0.7494 - val_loss: 0.2109 - val_binary_accuracy: 0.9114 - val_f1_score: 0.6737 - val_auc: 0.8044\n", "Epoch 2/5\n", "1224/1224 [==============================] - 1277s 1s/step - loss: 0.1700 - binary_accuracy: 0.9272 - f1_score: 0.7646 - auc: 0.8348 - val_loss: 0.1922 - val_binary_accuracy: 0.9201 - val_f1_score: 0.7248 - val_auc: 0.8367\n", "Epoch 3/5\n", "1224/1224 [==============================] - 1276s 1s/step - loss: 0.1531 - binary_accuracy: 0.9363 - f1_score: 0.8033 - auc: 0.8692 - val_loss: 0.1994 - val_binary_accuracy: 0.9152 - val_f1_score: 0.7088 - val_auc: 0.8284\n", "Epoch 4/5\n", "1224/1224 [==============================] - 1276s 1s/step - loss: 0.1268 - binary_accuracy: 0.9476 - f1_score: 0.8442 - auc: 0.9071 - val_loss: 0.1939 - val_binary_accuracy: 0.9287 - val_f1_score: 0.7901 - val_auc: 0.8386\n", "Epoch 5/5\n", " 275/1224 [=====>........................] - ETA: 15:09 - loss: 0.0909 - binary_accuracy: 0.9665 - f1_score: 0.9049 - auc: 0.9507" ] } ], "source": [ "model.fit(train_data, validation_data=valid_data, epochs=5)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "68tsCjjA7xhV", "outputId": "3987559e-7b1b-4f28-c001-b8dfe13667b7" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "306/306 [==============================] - 111s 340ms/step\n" ] }, { "data": { "text/plain": [ "array([[-2.1905882 , -3.2394354 , -3.13258 , -2.1132884 , -2.4265406 ,\n", " -0.6075255 , -1.2629524 , -1.5562562 ],\n", " [-3.583075 , 2.5596383 , 0.3140234 , -5.727357 , -5.440543 ,\n", " -5.8377833 , -5.9488435 , -3.1575963 ],\n", " [-5.6693244 , 2.5711992 , 0.31066525, -4.5653663 , -4.1973977 ,\n", " -2.9523754 , -4.2711267 , -4.5014157 ],\n", " [-6.0214763 , 2.1736732 , -0.54616076, -3.678521 , -3.931436 ,\n", " -5.0702376 , -2.831023 , -2.5294201 ],\n", " [-5.866425 , 1.5135366 , -1.4845128 , -1.75077 , -2.6480722 ,\n", " -0.91907746, -2.4754624 , -2.8797846 ]], dtype=float32)" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred = model.predict(valid_data)\n", "pred[:5]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "z6_qTOKWGJhN", "outputId": "63cd1a07-d362-4c2d-c6ea-533939260043" }, "outputs": [ { "data": { "text/plain": [ "array([[1, 0, 0, ..., 1, 0, 0],\n", " [0, 1, 1, ..., 0, 0, 0],\n", " [0, 1, 1, ..., 0, 0, 0],\n", " ...,\n", " [0, 1, 1, ..., 0, 0, 0],\n", " [0, 1, 0, ..., 0, 0, 0],\n", " [0, 0, 0, ..., 1, 0, 0]])" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valid_data.labels" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "7uM0EOfHHvYb", "outputId": "6a7b1ac7-4ce8-4290-f9b8-99e9122a9ed2" }, "outputs": [ { "data": { "text/plain": [ "PreTrainedTokenizer(name_or_path='NepBERTa/NepBERTa', vocab_size=30523, model_max_len=1000000000000000019884624838656, is_fast=False, padding_side='right', truncation_side='right', special_tokens={'unk_token': '[UNK]', 'sep_token': '[SEP]', 'pad_token': '[PAD]', 'cls_token': '[CLS]', 'mask_token': '[MASK]'})" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 627 }, "id": "eBfa_mbEGvr6", "outputId": "8a7a1a36-bb0c-4705-c3f5-f245b2d15f7d" }, "outputs": [ { "ename": "ValueError", "evalue": "ignored", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mValueError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mmodel\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpredict\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalid_data\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtext\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py\u001b[0m in \u001b[0;36merror_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 65\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;31m# pylint: disable=broad-except\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 66\u001b[0m \u001b[0mfiltered_tb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_process_traceback_frames\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__traceback__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 67\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwith_traceback\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfiltered_tb\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 68\u001b[0m \u001b[0;32mfinally\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 69\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mfiltered_tb\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m/usr/local/lib/python3.7/dist-packages/keras/engine/training.py\u001b[0m in \u001b[0;36mtf__predict_function\u001b[0;34m(iterator)\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 14\u001b[0m \u001b[0mdo_return\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mTrue\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 15\u001b[0;31m \u001b[0mretval_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mag__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconverted_call\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mag__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mld\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mstep_function\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mag__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mld\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mag__\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mld\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0miterator\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfscope\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 16\u001b[0m \u001b[0;32mexcept\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[0mdo_return\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mFalse\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mValueError\u001b[0m: in user code:\n\n File \"/usr/local/lib/python3.7/dist-packages/keras/engine/training.py\", line 1845, in predict_function *\n return step_function(self, iterator)\n File \"/usr/local/lib/python3.7/dist-packages/keras/engine/training.py\", line 1834, in step_function **\n outputs = model.distribute_strategy.run(run_step, args=(data,))\n File \"/usr/local/lib/python3.7/dist-packages/keras/engine/training.py\", line 1823, in run_step **\n outputs = model.predict_step(data)\n File \"/usr/local/lib/python3.7/dist-packages/keras/engine/training.py\", line 1791, in predict_step\n return self(x, training=False)\n File \"/usr/local/lib/python3.7/dist-packages/keras/utils/traceback_utils.py\", line 67, in error_handler\n raise e.with_traceback(filtered_tb) from None\n File \"/usr/local/lib/python3.7/dist-packages/keras/engine/input_spec.py\", line 200, in assert_input_compatibility\n raise ValueError(f'Layer \"{layer_name}\" expects {len(input_spec)} input(s),'\n\n ValueError: Layer \"model\" expects 3 input(s), but it received 1 input tensors. Inputs received: []\n" ] } ], "source": [ "model.predict(valid_data.text)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "irT-es5kHGHk" }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": { "id": "GEDb6_BZOmIe" }, "source": [ "# multi label Bert type model finetuning" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "AszFa0klO0C1", "outputId": "ecc08111-03b1-4825-bb7d-82348d048705" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[K |████████████████████████████████| 5.5 MB 13.8 MB/s \n", "\u001b[K |████████████████████████████████| 182 kB 75.6 MB/s \n", "\u001b[K |████████████████████████████████| 7.6 MB 47.6 MB/s \n", "\u001b[?25h" ] } ], "source": [ "!pip install transformers -q" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "0LdbRKQnOrOB" }, "outputs": [], "source": [ "import os\n", "import re\n", "import string\n", "import json\n", "import numpy as np\n", "import pandas as pd\n", "from sklearn import metrics\n", "\n", "import transformers\n", "import torch\n", "from torch.utils.data import Dataset, DataLoader, RandomSampler, SequentialSampler\n", "from transformers import BertTokenizer, AutoTokenizer, BertModel, BertConfig, AutoModel, AdamW, get_linear_schedule_with_warmup, get_cosine_schedule_with_warmup\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "pd.set_option(\"display.max_columns\", None)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 206 }, "id": "Pswry9G_OweL", "outputId": "0c885dea-3633-45dd-e40c-9ba4266a3ff1" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ " Text Category\n", "0 बिहार मे होबय वाला नगर निगम \\nचुनाव 2022 के नव... Politics\n", "1 राज्य मे भूमि सँ जुड़ल भ्रष्टाचार \\nकेर मामिला ... Politics\n", "2 गांधीनगर | राष्ट्रीय एकता दिवस पर \\nसोम दिन गु... Politics\n", "3 गुजरात केर मोरबी मे रवि दिन सांझ भेल दर्दनाक द... Politics\n", "4 गुजरातक मोरबी\\nकेर उक्त झुलैत पुल \\nलगभग 150 स... Politics" ], "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TextCategory
0बिहार मे होबय वाला नगर निगम \\nचुनाव 2022 के नव...Politics
1राज्य मे भूमि सँ जुड़ल भ्रष्टाचार \\nकेर मामिला ...Politics
2गांधीनगर | राष्ट्रीय एकता दिवस पर \\nसोम दिन गु...Politics
3गुजरात केर मोरबी मे रवि दिन सांझ भेल दर्दनाक द...Politics
4गुजरातक मोरबी\\nकेर उक्त झुलैत पुल \\nलगभग 150 स...Politics
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {} } ], "source": [ "df = pd.read_csv('/content/drive/MyDrive/merged_data.csv')\n", "df = df.dropna()\n", "df = df.reset_index(drop=True)\n", "display(df.head())" ] }, { "cell_type": "code", "source": [ "# Create one-hot encoding for 'Category' with column names as unique values\n", "df_one_hot = pd.get_dummies(df['Category'])\n", "df_one_hot" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 444 }, "id": "4_fNJOcndC7m", "outputId": "ae8bc913-7875-4173-c33f-9b1187120615" }, "execution_count": 29, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Culture Economy EduTech Entertainment Health Interview \\\n", "0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 \n", "2 0 0 0 0 0 0 \n", "3 0 0 0 0 0 0 \n", "4 0 0 0 0 0 0 \n", "... ... ... ... ... ... ... \n", "15465 0 1 0 0 0 0 \n", "15466 0 1 0 0 0 0 \n", "15467 0 1 0 0 0 0 \n", "15468 0 1 0 0 0 0 \n", "15469 0 1 0 0 0 0 \n", "\n", " Literature Opinion Politics Sports \n", "0 0 0 1 0 \n", "1 0 0 1 0 \n", "2 0 0 1 0 \n", "3 0 0 1 0 \n", "4 0 0 1 0 \n", "... ... ... ... ... \n", "15465 0 0 0 0 \n", "15466 0 0 0 0 \n", "15467 0 0 0 0 \n", "15468 0 0 0 0 \n", "15469 0 0 0 0 \n", "\n", "[15470 rows x 10 columns]" ], "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
CultureEconomyEduTechEntertainmentHealthInterviewLiteratureOpinionPoliticsSports
00000000010
10000000010
20000000010
30000000010
40000000010
.................................
154650100000000
154660100000000
154670100000000
154680100000000
154690100000000
\n", "

15470 rows × 10 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 29 } ] }, { "cell_type": "code", "source": [ "# Concatenate one-hot encoding with the original DataFrame\n", "df = pd.concat([df, df_one_hot], axis=1)" ], "metadata": { "id": "V37S2kv5eTLm" }, "execution_count": 30, "outputs": [] }, { "cell_type": "code", "source": [ "df.head()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 643 }, "id": "XAp5dLD-eVUy", "outputId": "948e4ea3-0535-4829-b5f3-620d2e3cf157" }, "execution_count": 31, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " Text Category Culture \\\n", "0 बिहार मे होबय वाला नगर निगम \\nचुनाव 2022 के नव... Politics 0 \n", "1 राज्य मे भूमि सँ जुड़ल भ्रष्टाचार \\nकेर मामिला ... Politics 0 \n", "2 गांधीनगर | राष्ट्रीय एकता दिवस पर \\nसोम दिन गु... Politics 0 \n", "3 गुजरात केर मोरबी मे रवि दिन सांझ भेल दर्दनाक द... Politics 0 \n", "4 गुजरातक मोरबी\\nकेर उक्त झुलैत पुल \\nलगभग 150 स... Politics 0 \n", "\n", " Economy EduTech Entertainment Health Interview Literature Opinion \\\n", "0 0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 0 \n", "2 0 0 0 0 0 0 0 \n", "3 0 0 0 0 0 0 0 \n", "4 0 0 0 0 0 0 0 \n", "\n", " Politics Sports \n", "0 1 0 \n", "1 1 0 \n", "2 1 0 \n", "3 1 0 \n", "4 1 0 " ], "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
TextCategoryCultureEconomyEduTechEntertainmentHealthInterviewLiteratureOpinionPoliticsSports
0बिहार मे होबय वाला नगर निगम \\nचुनाव 2022 के नव...Politics0000000010
1राज्य मे भूमि सँ जुड़ल भ्रष्टाचार \\nकेर मामिला ...Politics0000000010
2गांधीनगर | राष्ट्रीय एकता दिवस पर \\nसोम दिन गु...Politics0000000010
3गुजरात केर मोरबी मे रवि दिन सांझ भेल दर्दनाक द...Politics0000000010
4गुजरातक मोरबी\\nकेर उक्त झुलैत पुल \\nलगभग 150 स...Politics0000000010
\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 31 } ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "rDIVLgyUO_g5", "outputId": "2201e38f-f506-404a-8cee-2ec91a71ae84" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Training examples: 12376, validation examples: 3094\n" ] } ], "source": [ "from sklearn.model_selection import train_test_split\n", "df_train, df_dev = train_test_split(df, test_size=0.2, random_state=42)\n", "print(f'Training examples: {len(df_train)}, validation examples: {len(df_dev)}')" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "beXrYXW0PB7b", "outputId": "57b9b249-310c-43f0-870c-21d9f8d093f8" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " index Text Category \\\n", "0 14374 पवन.- कार्टून मे उत्‍तराधिकारी सन कोनो चीज नहि... Interview \n", "1 14492 उत्तर – संगीत क विधिवत शिक्षा हम उस्ताद जौहर अ... Interview \n", "2 9144 3- बाल शिक्षासँ वंचित- परिवार में आर्थिक स्थित... Literature \n", "3 3268 एहिमे हिज्जेक गडबडी, शब्दक अशुद्धि, तकनीकी जे ... Culture \n", "4 2664 आ दोसर, जेना कि कतहु पढ़नहुँ छी जे पृथ्वी पर कत... Culture \n", "... ... ... ... \n", "12371 5191 राम जानकी विवाहपञ्चमी महोत्सव विशेषः अन्तिम वि... Culture \n", "12372 13418 \"दर्शन,– प्रवीण नारायण चौधरी,चलैत चलू – बढैत च... Opinion \n", "12373 5390 जिला विधिक सेवा प्राधिकरण के \\nतत्वावधान में म... Culture \n", "12374 860 वार्ड नं.२के मतगणना जारी छै । तथापि आएल मतगणना... Politics \n", "12375 7270 क्रिस्टियन रेसल रॉयलडो रोनाल्डो आरू अल्वारो मड... Sports \n", "\n", " Culture Economy EduTech Entertainment Health Interview \\\n", "0 0 0 0 0 0 1 \n", "1 0 0 0 0 0 1 \n", "2 0 0 0 0 0 0 \n", "3 1 0 0 0 0 0 \n", "4 1 0 0 0 0 0 \n", "... ... ... ... ... ... ... \n", "12371 1 0 0 0 0 0 \n", "12372 0 0 0 0 0 0 \n", "12373 1 0 0 0 0 0 \n", "12374 0 0 0 0 0 0 \n", "12375 0 0 0 0 0 0 \n", "\n", " Literature Opinion Politics Sports \n", "0 0 0 0 0 \n", "1 0 0 0 0 \n", "2 1 0 0 0 \n", "3 0 0 0 0 \n", "4 0 0 0 0 \n", "... ... ... ... ... \n", "12371 0 0 0 0 \n", "12372 0 1 0 0 \n", "12373 0 0 0 0 \n", "12374 0 0 1 0 \n", "12375 0 0 0 1 \n", "\n", "[12376 rows x 13 columns]" ], "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
indexTextCategoryCultureEconomyEduTechEntertainmentHealthInterviewLiteratureOpinionPoliticsSports
014374पवन.- कार्टून मे उत्‍तराधिकारी सन कोनो चीज नहि...Interview0000010000
114492उत्तर – संगीत क विधिवत शिक्षा हम उस्ताद जौहर अ...Interview0000010000
291443- बाल शिक्षासँ वंचित- परिवार में आर्थिक स्थित...Literature0000001000
33268एहिमे हिज्जेक गडबडी, शब्दक अशुद्धि, तकनीकी जे ...Culture1000000000
42664आ दोसर, जेना कि कतहु पढ़नहुँ छी जे पृथ्वी पर कत...Culture1000000000
..........................................
123715191राम जानकी विवाहपञ्चमी महोत्सव विशेषः अन्तिम वि...Culture1000000000
1237213418\"दर्शन,– प्रवीण नारायण चौधरी,चलैत चलू – बढैत च...Opinion0000000100
123735390जिला विधिक सेवा प्राधिकरण के \\nतत्वावधान में म...Culture1000000000
12374860वार्ड नं.२के मतगणना जारी छै । तथापि आएल मतगणना...Politics0000000010
123757270क्रिस्टियन रेसल रॉयलडो रोनाल्डो आरू अल्वारो मड...Sports0000000001
\n", "

12376 rows × 13 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 33 } ], "source": [ "df_train = df_train.reset_index()\n", "df_train" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 913 }, "id": "_RnAcL-xPEyg", "outputId": "8c225fad-9d95-416a-d477-a618448b0c47" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " index Text Category \\\n", "0 2519 ‘‘ देशमे अस्थिरता अशान्ति मचाबके काज नीयोजित र... Politics \n", "1 6025 । एजेंसी डेप्टो २०। रविवार क॑ बेन स्टोक्स न॑ द... Sports \n", "2 6366 । काठमांडू उपाध्यक्ष न्द बहादुर राज पसांग बैंग... Sports \n", "3 6962 । अक्टूबर के बाहर काठमांडू।नेपाली केरऽ कप्तान ... Sports \n", "4 13347 \"तुलसी कृपा रघुबंसमनि की लोह लै लौका तिरा॥\"\",\"... Opinion \n", "... ... ... ... \n", "3089 13860 \"बुद्धौ शरणमन्विच्छ कृपणाः फलहेतवः ॥४९॥\"\",एहि ... Opinion \n", "3090 12897 प्रश्न मैथिली भाषाक संरक्षणक अछि, प्रश्न नव रा... EduTech \n", "3091 5066 व्यक्तित्व परिचय एवं साक्षात्कार,– प्रवीण नारा... Culture \n", "3092 3975 \"मोहन भारद्वाज, मधुबनी। फरबरी १९, २०१७. मैथिली... Culture \n", "3093 3433 \"धरान, १६ दिसम्बर २०१८. मैथिली जिन्दाबाद!!\",\"क... Culture \n", "\n", " Culture Economy EduTech Entertainment Health Interview Literature \\\n", "0 0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 0 \n", "2 0 0 0 0 0 0 0 \n", "3 0 0 0 0 0 0 0 \n", "4 0 0 0 0 0 0 0 \n", "... ... ... ... ... ... ... ... \n", "3089 0 0 0 0 0 0 0 \n", "3090 0 0 1 0 0 0 0 \n", "3091 1 0 0 0 0 0 0 \n", "3092 1 0 0 0 0 0 0 \n", "3093 1 0 0 0 0 0 0 \n", "\n", " Opinion Politics Sports \n", "0 0 1 0 \n", "1 0 0 1 \n", "2 0 0 1 \n", "3 0 0 1 \n", "4 1 0 0 \n", "... ... ... ... \n", "3089 1 0 0 \n", "3090 0 0 0 \n", "3091 0 0 0 \n", "3092 0 0 0 \n", "3093 0 0 0 \n", "\n", "[3094 rows x 13 columns]" ], "text/html": [ "\n", "
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
indexTextCategoryCultureEconomyEduTechEntertainmentHealthInterviewLiteratureOpinionPoliticsSports
02519‘‘ देशमे अस्थिरता अशान्ति मचाबके काज नीयोजित र...Politics0000000010
16025। एजेंसी डेप्टो २०। रविवार क॑ बेन स्टोक्स न॑ द...Sports0000000001
26366। काठमांडू उपाध्यक्ष न्द बहादुर राज पसांग बैंग...Sports0000000001
36962। अक्टूबर के बाहर काठमांडू।नेपाली केरऽ कप्तान ...Sports0000000001
413347\"तुलसी कृपा रघुबंसमनि की लोह लै लौका तिरा॥\"\",\"...Opinion0000000100
..........................................
308913860\"बुद्धौ शरणमन्विच्छ कृपणाः फलहेतवः ॥४९॥\"\",एहि ...Opinion0000000100
309012897प्रश्न मैथिली भाषाक संरक्षणक अछि, प्रश्न नव रा...EduTech0010000000
30915066व्यक्तित्व परिचय एवं साक्षात्कार,– प्रवीण नारा...Culture1000000000
30923975\"मोहन भारद्वाज, मधुबनी। फरबरी १९, २०१७. मैथिली...Culture1000000000
30933433\"धरान, १६ दिसम्बर २०१८. मैथिली जिन्दाबाद!!\",\"क...Culture1000000000
\n", "

3094 rows × 13 columns

\n", "
\n", "
\n", "\n", "
\n", " \n", "\n", " \n", "\n", " \n", "
\n", "\n", "\n", "
\n", " \n", "\n", "\n", "\n", " \n", "
\n", "
\n", "
\n" ] }, "metadata": {}, "execution_count": 34 } ], "source": [ "df_dev = df_dev.reset_index()\n", "df_dev" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "yqw0hGtAPHPL", "outputId": "6adc1e96-e0ce-4289-ad28-2ff00f0c0196" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "(12376, 13)\n", "(3094, 13)\n" ] } ], "source": [ "print(df_train.shape)\n", "print(df_dev.shape)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "id": "E9wP-NzkPMn2" }, "outputs": [], "source": [ "device = 'cuda' if torch.cuda.is_available() else 'cpu'" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "id": "QVYt2itwPOiQ" }, "outputs": [], "source": [ "# Sections of config\n", "\n", "# Defining some key variables that will be used later on in the training\n", "MAX_LEN = 256\n", "TRAIN_BATCH_SIZE = 32\n", "VALID_BATCH_SIZE = 16\n", "EPOCHS = 4\n", "LEARNING_RATE = 5e-5\n", "tokenizer = AutoTokenizer.from_pretrained('NepBERTa/NepBERTa')" ] }, { "cell_type": "code", "source": [ "df['Category'].unique()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "L_lLrGv0Z5Aw", "outputId": "b8135e51-c0df-4b2e-9c0a-db4546e16392" }, "execution_count": 38, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "array(['Politics', 'Culture', 'Sports', 'Literature', 'Entertainment',\n", " 'Health', 'EduTech', 'Opinion', 'Interview', 'Economy'],\n", " dtype=object)" ] }, "metadata": {}, "execution_count": 38 } ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "LhKyZsMMPTz4", "outputId": "44858eae-42ad-48ff-9f17-e7e972521aa2" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ "['Politics',\n", " 'Culture',\n", " 'Sports',\n", " 'Literature',\n", " 'Entertainment',\n", " 'Health',\n", " 'EduTech',\n", " 'Opinion',\n", " 'Interview',\n", " 'Economy']" ] }, "metadata": {}, "execution_count": 39 } ], "source": [ "target_cols = ['Politics', 'Culture', 'Sports', 'Literature', 'Entertainment',\n", " 'Health', 'EduTech', 'Opinion', 'Interview', 'Economy']\n", "target_cols" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "id": "LhPmKFjkPV7J" }, "outputs": [], "source": [ "class BERTDataset(Dataset):\n", " def __init__(self, df, tokenizer, max_len):\n", " self.df = df\n", " self.max_len = max_len\n", " self.text = df.Text\n", " self.tokenizer = tokenizer\n", " self.targets = df[target_cols].values\n", "\n", " def __len__(self):\n", " return len(self.df)\n", "\n", " def __getitem__(self, index):\n", " text = self.text[index]\n", " inputs = self.tokenizer.encode_plus(\n", " text,\n", " truncation=True,\n", " add_special_tokens=True,\n", " max_length=self.max_len,\n", " padding='max_length',\n", " return_token_type_ids=True\n", " )\n", " ids = inputs['input_ids']\n", " mask = inputs['attention_mask']\n", " token_type_ids = inputs[\"token_type_ids\"]\n", "\n", " return {\n", " 'ids': torch.tensor(ids, dtype=torch.long),\n", " 'mask': torch.tensor(mask, dtype=torch.long),\n", " 'token_type_ids': torch.tensor(token_type_ids, dtype=torch.long),\n", " 'targets': torch.tensor(self.targets[index], dtype=torch.float)\n", " }" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "id": "aHG6rpyZPYOc" }, "outputs": [], "source": [ "train_dataset = BERTDataset(df_train, tokenizer, MAX_LEN)\n", "valid_dataset = BERTDataset(df_dev, tokenizer, MAX_LEN)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "id": "Z-2fqmrGPacn" }, "outputs": [], "source": [ "train_loader = DataLoader(train_dataset, batch_size=TRAIN_BATCH_SIZE,\n", " num_workers=4, shuffle=True, pin_memory=True)\n", "valid_loader = DataLoader(valid_dataset, batch_size=VALID_BATCH_SIZE,\n", " num_workers=4, shuffle=False, pin_memory=True)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "1CoypLuyPeOD", "outputId": "26991222-ffa0-45fd-ce99-4ecc943158d2" }, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "All TF 2.0 model weights were used when initializing BertModel.\n", "\n", "All the weights of BertModel were initialized from the TF 2.0 model.\n", "If your task is similar to the task the model of the checkpoint was trained on, you can already use BertModel for predictions without further training.\n" ] } ], "source": [ "# Creating the customized model, by adding a drop out and a dense layer on top of distil bert to get the final output for the model.\n", "\n", "class BERTClass(torch.nn.Module):\n", " def __init__(self):\n", " super(BERTClass, self).__init__()\n", " self.roberta = AutoModel.from_pretrained('NepBERTa/NepBERTa', from_tf = True)\n", " self.l2 = torch.nn.Dropout(0.5)\n", " self.fc = torch.nn.Linear(768,10)\n", "\n", " def forward(self, ids, mask, token_type_ids):\n", " _, features = self.roberta(ids, attention_mask = mask, token_type_ids = token_type_ids, return_dict=False)\n", " output_2 = self.l2(features)\n", " output = self.fc(output_2)\n", " return output\n", "\n", "model = BERTClass()\n", "model.to(device);" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "id": "dt8ex1foPkwh" }, "outputs": [], "source": [ "def loss_fn(outputs, targets):\n", " return torch.nn.BCEWithLogitsLoss()(outputs, targets)" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "id": "xjr7wIG8Po-6" }, "outputs": [], "source": [ "optimizer = AdamW(params = model.parameters(), lr=LEARNING_RATE, weight_decay=1e-6)" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "id": "cbxUdhgw8w43" }, "outputs": [], "source": [ "scheduler = get_cosine_schedule_with_warmup(\n", " optimizer,\n", " num_warmup_steps=0,\n", " num_training_steps=len(train_loader) * EPOCHS\n", " )" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "id": "h4OHZ1IbPqlF" }, "outputs": [], "source": [ "def validation():\n", " model.eval()\n", " fin_targets=[]\n", " fin_outputs=[]\n", " with torch.no_grad():\n", " for _, data in enumerate(valid_loader, 0):\n", " ids = data['ids'].to(device, dtype = torch.long)\n", " mask = data['mask'].to(device, dtype = torch.long)\n", " token_type_ids = data['token_type_ids'].to(device, dtype = torch.long)\n", " targets = data['targets'].to(device, dtype = torch.float)\n", " outputs = model(ids, mask, token_type_ids)\n", " fin_targets.extend(targets.cpu().detach().numpy().tolist())\n", " fin_outputs.extend(torch.sigmoid(outputs).cpu().detach().numpy().tolist())\n", " return fin_outputs, fin_targets" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "id": "HcwI4uXePtjX" }, "outputs": [], "source": [ "def train(epoch):\n", " model.train()\n", " for _,data in enumerate(train_loader, 0):\n", " ids = data['ids'].to(device, dtype = torch.long)\n", " mask = data['mask'].to(device, dtype = torch.long)\n", " token_type_ids = data['token_type_ids'].to(device, dtype = torch.long)\n", " targets = data['targets'].to(device, dtype = torch.float)\n", " outputs = model(ids, mask, token_type_ids)\n", " loss = loss_fn(outputs, targets)\n", " loss.backward()\n", " torch.nn.utils.clip_grad_norm_(model.parameters(), max_norm=1.0)\n", " optimizer.step()\n", " scheduler.step()\n", " optimizer.zero_grad()\n", " print(f'Epoch: {epoch}, Loss: {loss.item()}')\n", " outputs, targets = validation()\n", " outputs = np.array(outputs) >= 0.5\n", " accuracy = metrics.accuracy_score(targets, outputs)\n", " f1_score_micro = metrics.f1_score(targets, outputs, average='micro')\n", " f1_score_macro = metrics.f1_score(targets, outputs, average='macro')\n", " print(f\"Accuracy Score = {accuracy}\")\n", " print(f\"F1 Score (Micro) = {f1_score_micro}\")\n", " print(f\"F1 Score (Macro) = {f1_score_macro}\")\n", " print('\\n')\n" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "kRENHYzgPvzN", "outputId": "f1e3f3cd-f78b-425b-a751-1059dfeb0299" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch: 0, Loss: 0.11394881457090378\n", "Accuracy Score = 0.7133160956690369\n", "F1 Score (Micro) = 0.7708697170799861\n", "F1 Score (Macro) = 0.6620882447650736\n", "\n", "\n", "Epoch: 1, Loss: 0.056467846035957336\n", "Accuracy Score = 0.7957336780866192\n", "F1 Score (Micro) = 0.8271004527922188\n", "F1 Score (Macro) = 0.7777480100592717\n", "\n", "\n", "Epoch: 2, Loss: 0.07918363064527512\n", "Accuracy Score = 0.8190045248868778\n", "F1 Score (Micro) = 0.8407622203811101\n", "F1 Score (Macro) = 0.8112309453618414\n", "\n", "\n", "Epoch: 3, Loss: 0.054994549602270126\n", "Accuracy Score = 0.8361344537815126\n", "F1 Score (Micro) = 0.853991769547325\n", "F1 Score (Macro) = 0.8326270924585992\n", "\n", "\n" ] } ], "source": [ "for epoch in range(EPOCHS):\n", " train(epoch)" ] }, { "cell_type": "code", "source": [], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "4fvdGfQLoxaG", "outputId": "37813162-0699-4aa2-b608-4dbbb15ba677" }, "execution_count": 56, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch: 0, Loss: 0.11774052679538727\n", "Accuracy Score = 0.8387201034259858\n", "F1 Score (Micro) = 0.8543307086614174\n", "F1 Score (Macro) = 0.8331537892778929\n", "\n", "\n" ] } ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "IiP-yv7RPz5C", "outputId": "b43fb649-b098-4dae-c8ae-e9428f9559c9" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Accuracy Score = 0.8387201034259858\n", "F1 Score (Micro) = 0.8543307086614174\n", "F1 Score (Macro) = 0.8331537892778929\n", "F1 Score (Weighted) = 0.8537167986623573\n" ] } ], "source": [ "outputs, targets = validation()\n", "outputs = np.array(outputs) >= 0.5\n", "accuracy = metrics.accuracy_score(targets, outputs)\n", "f1_score_micro = metrics.f1_score(targets, outputs, average='micro')\n", "f1_score_macro = metrics.f1_score(targets, outputs, average='macro')\n", "f1_score_weighted = metrics.f1_score(targets, outputs, average='weighted')\n", "print(f\"Accuracy Score = {accuracy}\")\n", "print(f\"F1 Score (Micro) = {f1_score_micro}\")\n", "print(f\"F1 Score (Macro) = {f1_score_macro}\")\n", "print(f\"F1 Score (Weighted) = {f1_score_weighted}\")" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "C4E-5wGcQSYP", "outputId": "2e050b74-a5c4-4f56-b2eb-0a7e663b44dd" }, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "0.9073170731707317 \n", " 0.8417721518987341 \n", " 0.9136690647482014 \n", " 0.8557213930348259 \n", " 0.8026607538802661 \n", " 0.7512690355329948 \n", " 0.641025641025641 \n", " 0.9005847953216374 \n", " 0.8383233532934132 \n", " 0.8791946308724832\n" ] } ], "source": [ "print(metrics.f1_score(outputs[:,0],np.array(targets)[:,0]),'\\n',\n", "metrics.f1_score(outputs[:,1],np.array(targets)[:,1]),'\\n',\n", "metrics.f1_score(outputs[:,2],np.array(targets)[:,2]),'\\n',\n", "metrics.f1_score(outputs[:,3],np.array(targets)[:,3]),'\\n',\n", "metrics.f1_score(outputs[:,4],np.array(targets)[:,4]),'\\n',\n", "metrics.f1_score(outputs[:,5],np.array(targets)[:,5]),'\\n',\n", "metrics.f1_score(outputs[:,6],np.array(targets)[:,6]),'\\n',\n", "metrics.f1_score(outputs[:,7],np.array(targets)[:,7]),'\\n',\n", "metrics.f1_score(outputs[:,8],np.array(targets)[:,8]),'\\n',\n", "metrics.f1_score(outputs[:,9],np.array(targets)[:,9])\n", ")" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "id": "Jwc2h18NQWul" }, "outputs": [], "source": [ "torch.save(model.state_dict(), 'model.bin')" ] } ], "metadata": { "accelerator": "GPU", "colab": { "provenance": [] }, "gpuClass": "standard", "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.6" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "007304dd7fb74a1b9d3b390f13e73a03": { "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_821aa443392a4ac99d1adb7cc9138840", "max": 589, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_888b6d0488a649f7a4469b93f1bc7bc6", "value": 589 } }, "020a891f78e14676b691abd046356725": { "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 } }, "0550c59aa57f40e094beae25cc5b0dc3": { "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": "" } }, "0766b7d42af943d0b4d37cab4bddf569": { "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 } }, "076956eb941c4cd6a402c1335aa3bba1": { "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 } }, "0c31a369e5db4e0bbf689734f4dcd415": { "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 } }, "0ddf0870774544bc9122761b7968c2ec": { "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 } }, "118705ff5aa84e59801ce43e13bf782f": { "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 } }, "14feea72286044c3ac19c79bdb4a5d15": { "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": "" } }, "18c49519429c41f195d703bed69a4443": { "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 } }, "1967dfefa2e24c76a680a450dfa66e6f": { "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": "" } }, "1a602627ce7742e7bf9af421ab365430": { "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 } }, "20b7ae08f2de4b86bda6c5f94054eb75": { "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 } }, "23531ca8f9e14e7dbc8f1ab522131142": { "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": "" } }, "2f56fa2517b2460a8d432ea866b657dd": { "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": "" } }, "32293f1a4a3e4b49b27f4be3fe5c3b1a": { "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_bc565a24c7fb4bb799eb45d251cc9a57", "placeholder": "​", "style": "IPY_MODEL_14feea72286044c3ac19c79bdb4a5d15", "value": " 413/413 [00:00<00:00, 14.0kB/s]" } }, "3367b5295e4b44d5a3aee0aaf5fbd73a": { "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": "" } }, "363c84ef86a34e6a93f4db2723a3c9f4": { "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_768426a2c2ee437389cdded02f3f0c48", "placeholder": "​", "style": "IPY_MODEL_44323c2a91184648aa0af06e91ab980d", "value": " 557M/557M [00:11<00:00, 60.9MB/s]" } }, "36620b6e478042989fe2ce175b627125": { "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": "" } }, "39a62a0780dc4911bd30d366ac81b6f3": { "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": "" } }, "3cdaa669bed14105a18bb904190b43a6": { "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_c9a5a153a6d8456fb867a2bbeee2368d", "placeholder": "​", "style": "IPY_MODEL_7d940db073774c888ab9a98316fbc3ae", "value": "Downloading: 100%" } }, "3d7fc90750fc4fd28b2b6bef0ca6e601": { "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_0ddf0870774544bc9122761b7968c2ec", "placeholder": "​", "style": "IPY_MODEL_68e41c648aef493ab2290e9bd95ab244", "value": "Downloading: 100%" } }, "4298e20b35474077a0f872ddbc6db987": { "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_20b7ae08f2de4b86bda6c5f94054eb75", "placeholder": "​", "style": "IPY_MODEL_879f999eba754a20861a37fcb275c7e0", "value": " 589/589 [00:00<00:00, 6.83kB/s]" } }, "44323c2a91184648aa0af06e91ab980d": { "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": "" } }, "4528dd10b894401e98dcaf0dd547bf13": { "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_d7892059dc6048b0bfa8e18998125727", "IPY_MODEL_8664160808b0488bba20727074611c9f", "IPY_MODEL_e9f2d971371a4c5cac7c9eab4ec30d89" ], "layout": "IPY_MODEL_511fdf809305494ca560dd7a84e8f904" } }, "499f1d9965704b1a9601ca6701e886de": { "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_9541cd9ae94e469f8c0ed5ce66a0b01d", "placeholder": "​", "style": "IPY_MODEL_c4dbec2e026a4722bbf17bef4ad5741b", "value": "Downloading: 100%" } }, "4b7ba118f59646e59cec9056ffcbcaa3": { "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 } }, "4d8556c2c15046f481701f853e13b126": { "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_8c3c9b20a3154dceb842acbf88160743", "IPY_MODEL_7dc6e325b5454fe294d3fe960fa8f2f0", "IPY_MODEL_363c84ef86a34e6a93f4db2723a3c9f4" ], "layout": "IPY_MODEL_d96a8fd5fb1540a0902e1fac49912602" } }, "511fdf809305494ca560dd7a84e8f904": { "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 } }, "51bbf362fa7a49d0802a970b5443b01d": { "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_f183c27d35414a5facef4bed84aded9b", "placeholder": "​", "style": "IPY_MODEL_3367b5295e4b44d5a3aee0aaf5fbd73a", "value": " 2.13M/2.13M [00:00<00:00, 2.72MB/s]" } }, "5253b2271568488da290f23826fa8979": { "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 } }, "525d941c1e3541919bacb96f9adfdd91": { "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": "" } }, "54891ad613ed4f27bb3aa9be849132b1": { "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_4b7ba118f59646e59cec9056ffcbcaa3", "placeholder": "​", "style": "IPY_MODEL_525d941c1e3541919bacb96f9adfdd91", "value": "Downloading: 100%" } }, "5d7a2ed7e1eb431ca509ede35d4e562f": { "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_0c31a369e5db4e0bbf689734f4dcd415", "placeholder": "​", "style": "IPY_MODEL_ec44446c5ce541e4a23d601aaa581a69", "value": "Downloading: 100%" } }, "662f45e53d6d45f49c249cabc6f1dc91": { "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_a79e620eb592460e986ea5c305ebeaec", "max": 2134747, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_39a62a0780dc4911bd30d366ac81b6f3", "value": 2134747 } }, "67c61a63e12e48dda06d76fd11a0d7e5": { "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": "" } }, "67fdea3f80f54b849854ec829e37d80b": { "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_118705ff5aa84e59801ce43e13bf782f", "placeholder": "​", "style": "IPY_MODEL_23531ca8f9e14e7dbc8f1ab522131142", "value": " 438M/438M [00:13<00:00, 35.7MB/s]" } }, "68e41c648aef493ab2290e9bd95ab244": { "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": "" } }, "6ebab858b53d466a96db54ced3956fd0": { "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 } }, "708178f346da4f1597853c0218a73e03": { "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 } }, "70d42517af9f49e38cf99b7c97b05239": { "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_d3b1b8f83ae34e7d90ab862e23d2d5d9", "placeholder": "​", "style": "IPY_MODEL_9afec31fa2c542edbc191282ee03df73", "value": " 773/773 [00:00<00:00, 10.1kB/s]" } }, "714bdef5435d45ac8dbb7666c0e7232e": { "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_7ceed10a595343168a068bebf9746bca", "max": 413, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_67c61a63e12e48dda06d76fd11a0d7e5", "value": 413 } }, "748462ab70364e168c082c7573b52238": { "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_020a891f78e14676b691abd046356725", "max": 438141995, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_0550c59aa57f40e094beae25cc5b0dc3", "value": 438141995 } }, "768426a2c2ee437389cdded02f3f0c48": { "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 } }, "7a1044e4ca444ae990d163dff600a113": { "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 } }, "7ceed10a595343168a068bebf9746bca": { "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 } }, "7d940db073774c888ab9a98316fbc3ae": { "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": "" } }, "7dc6e325b5454fe294d3fe960fa8f2f0": { "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_708178f346da4f1597853c0218a73e03", "max": 557064301, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_c792e1ae15ce4fa29ccac9e75780bdd1", "value": 557064301 } }, "802d3e98e6b94a6881d3eb2f11ddb235": { "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 } }, "821aa443392a4ac99d1adb7cc9138840": { "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 } }, "8445fd819a6a46fcbf75e99cbb18b4ce": { "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 } }, "8664160808b0488bba20727074611c9f": { "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_a8395f7eabf54ffc8329dfed96cc400a", "max": 528678, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_2f56fa2517b2460a8d432ea866b657dd", "value": 528678 } }, "879f999eba754a20861a37fcb275c7e0": { "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": "" } }, "888b6d0488a649f7a4469b93f1bc7bc6": { "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": "" } }, "8c3c9b20a3154dceb842acbf88160743": { "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_18c49519429c41f195d703bed69a4443", "placeholder": "​", "style": "IPY_MODEL_36620b6e478042989fe2ce175b627125", "value": "Downloading: 100%" } }, "91b65e18dfae4ee08c23d8d70436f3d2": { "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_6ebab858b53d466a96db54ced3956fd0", "placeholder": "​", "style": "IPY_MODEL_1967dfefa2e24c76a680a450dfa66e6f", "value": " 239/239 [00:00<00:00, 6.91kB/s]" } }, "93fa5389c5e844d98eb849c08c035c1d": { "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": "" } }, "95400b69037c4c3b8ce7ada698d046ce": { "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 } }, "9541cd9ae94e469f8c0ed5ce66a0b01d": { "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 } }, "9afec31fa2c542edbc191282ee03df73": { "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": "" } }, "9dfcb1560dcd483ab5c000d6e43771f3": { "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_b5422f0f1b65405ea399b64dd602c2a4", "max": 239, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_93fa5389c5e844d98eb849c08c035c1d", "value": 239 } }, "a054cd75df6a40a1a8a23cb82c73e73d": { "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 } }, "a2b590b036264886835d76ebae8de084": { "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_5d7a2ed7e1eb431ca509ede35d4e562f", "IPY_MODEL_714bdef5435d45ac8dbb7666c0e7232e", "IPY_MODEL_32293f1a4a3e4b49b27f4be3fe5c3b1a" ], "layout": "IPY_MODEL_0766b7d42af943d0b4d37cab4bddf569" } }, "a360588788c34e59869144df00b459ec": { "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": "" } }, "a42f03dc2a5849beb94666ff1648ff5b": { "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": "" } }, "a79e620eb592460e986ea5c305ebeaec": { "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 } }, "a8395f7eabf54ffc8329dfed96cc400a": { "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 } }, "ae16930d4b7e498e888c0b1a26ca9ecc": { "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": "" } }, "b1715cd48f6741088b3bf7b22f21030f": { "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_3d7fc90750fc4fd28b2b6bef0ca6e601", "IPY_MODEL_fcd6ab186c394b4fab091e2ec64cf7d2", "IPY_MODEL_70d42517af9f49e38cf99b7c97b05239" ], "layout": "IPY_MODEL_8445fd819a6a46fcbf75e99cbb18b4ce" } }, "b5422f0f1b65405ea399b64dd602c2a4": { "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 } }, "bc565a24c7fb4bb799eb45d251cc9a57": { "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 } }, "c100b12a53de481ea1e5bce81995319c": { "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_499f1d9965704b1a9601ca6701e886de", "IPY_MODEL_662f45e53d6d45f49c249cabc6f1dc91", "IPY_MODEL_51bbf362fa7a49d0802a970b5443b01d" ], "layout": "IPY_MODEL_1a602627ce7742e7bf9af421ab365430" } }, "c4dbec2e026a4722bbf17bef4ad5741b": { "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": "" } }, "c792e1ae15ce4fa29ccac9e75780bdd1": { "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": "" } }, "c9a5a153a6d8456fb867a2bbeee2368d": { "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 } }, "d0979c33cdc54526b5dd002b2c23bef6": { "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": "" } }, "d3b1b8f83ae34e7d90ab862e23d2d5d9": { "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 } }, "d7892059dc6048b0bfa8e18998125727": { "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_802d3e98e6b94a6881d3eb2f11ddb235", "placeholder": "​", "style": "IPY_MODEL_a360588788c34e59869144df00b459ec", "value": "Downloading: 100%" } }, "d7c45455a8e8445c929c8c83ab1f9fa1": { "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_f58360c8802b490fb23cb4a17a81911e", "placeholder": "​", "style": "IPY_MODEL_a42f03dc2a5849beb94666ff1648ff5b", "value": "Downloading: 100%" } }, "d96a8fd5fb1540a0902e1fac49912602": { "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 } }, "dca828d0f4824d5a80125caf02b1bd18": { "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_3cdaa669bed14105a18bb904190b43a6", "IPY_MODEL_9dfcb1560dcd483ab5c000d6e43771f3", "IPY_MODEL_91b65e18dfae4ee08c23d8d70436f3d2" ], "layout": "IPY_MODEL_a054cd75df6a40a1a8a23cb82c73e73d" } }, "dd083e9312f34cfe8712574bd16c2520": { "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_54891ad613ed4f27bb3aa9be849132b1", "IPY_MODEL_007304dd7fb74a1b9d3b390f13e73a03", "IPY_MODEL_4298e20b35474077a0f872ddbc6db987" ], "layout": "IPY_MODEL_076956eb941c4cd6a402c1335aa3bba1" } }, "e9f2d971371a4c5cac7c9eab4ec30d89": { "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_5253b2271568488da290f23826fa8979", "placeholder": "​", "style": "IPY_MODEL_ae16930d4b7e498e888c0b1a26ca9ecc", "value": " 529k/529k [00:00<00:00, 1.41MB/s]" } }, "ec44446c5ce541e4a23d601aaa581a69": { "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": "" } }, "f183c27d35414a5facef4bed84aded9b": { "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 } }, "f58360c8802b490fb23cb4a17a81911e": { "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 } }, "fcd6ab186c394b4fab091e2ec64cf7d2": { "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_95400b69037c4c3b8ce7ada698d046ce", "max": 773, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_d0979c33cdc54526b5dd002b2c23bef6", "value": 773 } }, "fe72571856854a17bf5df0b4ff3ff604": { "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_d7c45455a8e8445c929c8c83ab1f9fa1", "IPY_MODEL_748462ab70364e168c082c7573b52238", "IPY_MODEL_67fdea3f80f54b849854ec829e37d80b" ], "layout": "IPY_MODEL_7a1044e4ca444ae990d163dff600a113" } }, "e96896658b654eed8b968404645d0ce2": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "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_18a4c50558434e0290dd7146a4fbfecf", "IPY_MODEL_84a98a576e0249a59849cc30c7224f20", "IPY_MODEL_e40536cd305045b0bb8aeecfd21cb956" ], "layout": "IPY_MODEL_1b15bace409c4f4089f40a856b6e1338" } }, "18a4c50558434e0290dd7146a4fbfecf": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "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_74e25a277d244040ae97abc9dde27f68", "placeholder": "​", "style": "IPY_MODEL_eba06679f61f457b8de2817c7450ef24", "value": "config.json: 100%" } }, "84a98a576e0249a59849cc30c7224f20": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "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_0b340f8a07e04471ac8ce7c17c61acba", "max": 652, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_4c87386df89a4157bf67851ad066bb94", "value": 652 } }, "e40536cd305045b0bb8aeecfd21cb956": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "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_f5ebefe5c7274db7b81dc329742a55e9", "placeholder": "​", "style": "IPY_MODEL_6fc5465c7f69419ebe26ac752133676f", "value": " 652/652 [00:00<00:00, 34.7kB/s]" } }, "1b15bace409c4f4089f40a856b6e1338": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "74e25a277d244040ae97abc9dde27f68": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "eba06679f61f457b8de2817c7450ef24": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "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": "" } }, "0b340f8a07e04471ac8ce7c17c61acba": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "4c87386df89a4157bf67851ad066bb94": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "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": "" } }, "f5ebefe5c7274db7b81dc329742a55e9": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "6fc5465c7f69419ebe26ac752133676f": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "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": "" } }, "4fcccd4ec6e54e608b823a93a59ac2b6": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "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_a5ca839581e6414fba8dc778b5cf2cb9", "IPY_MODEL_a6dbe20598484fcd9f13675e697dfc7b", "IPY_MODEL_74f5680b28364d34a98ab4261563fc12" ], "layout": "IPY_MODEL_cbdb3c1dcc984f67a5856137830afe9c" } }, "a5ca839581e6414fba8dc778b5cf2cb9": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "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_4633fec68037492c92effc18055964e2", "placeholder": "​", "style": "IPY_MODEL_3b1fbd3a31f3422aa249db2d1c933a65", "value": "tf_model.h5: 100%" } }, "a6dbe20598484fcd9f13675e697dfc7b": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "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_bd2a23d5260345279fbf87befba2e5c8", "max": 533687680, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_6a2ed2b29770404a851a069f2a78c5da", "value": 533687680 } }, "74f5680b28364d34a98ab4261563fc12": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "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_bd8042817a254f35a6ff1c52c70cead2", "placeholder": "​", "style": "IPY_MODEL_f1a13f54dc4f48f8a613f522485755e1", "value": " 534M/534M [00:04<00:00, 213MB/s]" } }, "cbdb3c1dcc984f67a5856137830afe9c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "4633fec68037492c92effc18055964e2": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "3b1fbd3a31f3422aa249db2d1c933a65": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "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": "" } }, "bd2a23d5260345279fbf87befba2e5c8": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "6a2ed2b29770404a851a069f2a78c5da": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "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": "" } }, "bd8042817a254f35a6ff1c52c70cead2": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "f1a13f54dc4f48f8a613f522485755e1": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "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": "" } }, "c40ed648d38545e390bee2431c5a707a": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "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_ee7cfc940c804296894abe79e31ecbe6", "IPY_MODEL_bc50f92e9d0d48bba21f16541fc37ed9", "IPY_MODEL_fe96466bdfcb41739954dc0270571406" ], "layout": "IPY_MODEL_69a754c07e454149aaa42ea63971f249" } }, "ee7cfc940c804296894abe79e31ecbe6": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "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_1ca2e994552f43558ee18ea4f832d2ec", "placeholder": "​", "style": "IPY_MODEL_b15d86eff02147bea51624bc82f94a7d", "value": "vocab.txt: 100%" } }, "bc50f92e9d0d48bba21f16541fc37ed9": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "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_ccc737848a20419684a47c4dff68dc8a", "max": 546517, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_aad77fce445540cfbe295df700107b6a", "value": 546517 } }, "fe96466bdfcb41739954dc0270571406": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "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_d7bce53523fd4cafb20182edcd405533", "placeholder": "​", "style": "IPY_MODEL_b6b326e3fe1148b29c5570b742e8b8c6", "value": " 547k/547k [00:00<00:00, 16.3MB/s]" } }, "69a754c07e454149aaa42ea63971f249": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "1ca2e994552f43558ee18ea4f832d2ec": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "b15d86eff02147bea51624bc82f94a7d": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "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": "" } }, "ccc737848a20419684a47c4dff68dc8a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "aad77fce445540cfbe295df700107b6a": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "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": "" } }, "d7bce53523fd4cafb20182edcd405533": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "b6b326e3fe1148b29c5570b742e8b8c6": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "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": "" } } } } }, "nbformat": 4, "nbformat_minor": 0 }