diff --git a/week7/community_contributions/finetuning-joshua/Week7_Complete_FineTuning.ipynb b/week7/community_contributions/finetuning-joshua/Week7_Complete_FineTuning.ipynb index 67ede7e..bb1e960 100644 --- a/week7/community_contributions/finetuning-joshua/Week7_Complete_FineTuning.ipynb +++ b/week7/community_contributions/finetuning-joshua/Week7_Complete_FineTuning.ipynb @@ -1,5 +1,107 @@ { "cells": [ + { + "cell_type": "code", + "execution_count": null, + "id": "d2afa3e9", + "metadata": {}, + "outputs": [], + "source": [ + "# Evaluation utilities for the fine-tuned open-source model (Week 7)\n", + "import re\n", + "import math\n", + "import numpy as np\n", + "import torch\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Extract numeric price from model output\n", + "def extract_price(text: str) -> float:\n", + " text = (text or \"\").replace(\"$\", \"\").replace(\",\", \"\")\n", + " m = re.search(r\"[-+]?\\d*\\.\\d+|\\d+\", text)\n", + " return float(m.group(0)) if m else 0.0\n", + "\n", + "# Build prompt consistent with Week 7 training template\n", + "def build_pricing_prompt(item) -> str:\n", + " # Matches the training format used in Week 7\n", + " return (\n", + " \"<|system|>\\nYou are a retail price estimator. Predict the most likely new retail price in USD.\\n\"\n", + " \"<|user|>\\n\"\n", + " f\"{item.title}\\n{item.description}\\n\"\n", + " \"<|assistant|>\\n\"\n", + " )\n", + "\n", + "# Single-item prediction using the fine-tuned causal LM\n", + "@torch.no_grad()\n", + "def predict_price(model, tokenizer, item, max_new_tokens: int = 20) -> float:\n", + " prompt = build_pricing_prompt(item)\n", + " inputs = tokenizer(prompt, return_tensors=\"pt\").to(model.device)\n", + " outputs = model.generate(\n", + " **inputs,\n", + " max_new_tokens=max_new_tokens,\n", + " temperature=0.7,\n", + " do_sample=True,\n", + " pad_token_id=tokenizer.eos_token_id,\n", + " )\n", + " decoded = tokenizer.decode(outputs[0], skip_special_tokens=True)\n", + " # Take only the newly generated continuation beyond the prompt\n", + " continuation = decoded[len(tokenizer.decode(inputs[\"input_ids\"][0], skip_special_tokens=True)) :]\n", + " return extract_price(continuation)\n", + "\n", + "# Batch evaluation (MAE, RMSE, MAPE) with quick scatter plot\n", + "def evaluate_model(model, tokenizer, test_items, limit: int = None, title: str = \"Fine-tuned Model Evaluation\"):\n", + " if not test_items:\n", + " print(\"⚠️ No test items available.\")\n", + " return {\"mae\": None, \"rmse\": None, \"mape\": None}\n", + "\n", + " items = test_items[:limit] if limit else test_items\n", + "\n", + " y_true, y_pred = [], []\n", + " for i, item in enumerate(items):\n", + " try:\n", + " pred = predict_price(model, tokenizer, item)\n", + " except Exception as e:\n", + " print(f\"Error on item {i}: {e}\")\n", + " pred = 0.0\n", + " y_true.append(float(getattr(item, \"price\", 0.0)))\n", + " y_pred.append(float(pred))\n", + "\n", + " y_true_np = np.array(y_true, dtype=float)\n", + " y_pred_np = np.array(y_pred, dtype=float)\n", + "\n", + " mae = float(np.mean(np.abs(y_pred_np - y_true_np)))\n", + " rmse = float(np.sqrt(np.mean((y_pred_np - y_true_np) ** 2)))\n", + " with np.errstate(divide='ignore', invalid='ignore'):\n", + " mape_arr = np.where(y_true_np != 0, np.abs((y_pred_np - y_true_np) / y_true_np), np.nan)\n", + " mape = float(np.nanmean(mape_arr)) * 100.0\n", + "\n", + " print(f\"\\nπŸ“ˆ {title}\")\n", + " print(f\"MAE : {mae:.2f}\")\n", + " print(f\"RMSE: {rmse:.2f}\")\n", + " print(f\"MAPE: {mape:.2f}%\")\n", + "\n", + " # Scatter plot\n", + " try:\n", + " plt.figure(figsize=(6, 6))\n", + " plt.scatter(y_true_np, y_pred_np, alpha=0.6)\n", + " mx = max(y_true_np.max() if y_true_np.size else 0, y_pred_np.max() if y_pred_np.size else 0)\n", + " plt.plot([0, mx], [0, mx], 'r--', label='Ideal')\n", + " plt.xlabel('Actual Price')\n", + " plt.ylabel('Predicted Price')\n", + " plt.title(title)\n", + " plt.legend()\n", + " plt.tight_layout()\n", + " plt.show()\n", + " except Exception as e:\n", + " print(f\"Plotting error: {e}\")\n", + "\n", + " return {\"mae\": mae, \"rmse\": rmse, \"mape\": mape}\n", + "\n", + "# Convenience wrapper mirroring Week 6's Tester usage pattern\n", + "# Usage:\n", + "# results = evaluate_model(model, tokenizer, test, limit=len(test))\n", + "print(\"βœ… Evaluation utilities for Week 7 added. Use evaluate_model(model, tokenizer, test, limit=len(test)).\")\n" + ] + }, { "cell_type": "markdown", "id": "c88d0ea8", @@ -41,8 +143,8 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "PyTorch version: 2.8.0+cu126\n", "CUDA available: True\n", @@ -100,139 +202,139 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "βœ… Using Colab secrets\n" ] }, { - "output_type": "stream", "name": "stderr", + "output_type": "stream", "text": [ "Note: Environment variable`HF_TOKEN` is set and is the current active token independently from the token you've just configured.\n", "WARNING:huggingface_hub._login:Note: Environment variable`HF_TOKEN` is set and is the current active token independently from the token you've just configured.\n" ] }, { - "output_type": "display_data", "data": { - "text/plain": [ - "" - ], "text/html": [ "Finishing previous runs because reinit is set to 'default'." + ], + "text/plain": [ + "" ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "display_data", "data": { + "text/html": [], "text/plain": [ "" - ], - "text/html": [] + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "display_data", "data": { - "text/plain": [ - "" - ], "text/html": [ " View run wobbly-resonance-1 at: https://wandb.ai/oluoch-joshua-udemy/colab-pro-finetuning/runs/fwkqveds
View project at: https://wandb.ai/oluoch-joshua-udemy/colab-pro-finetuning
Synced 5 W&B file(s), 0 media file(s), 0 artifact file(s) and 0 other file(s)" - ] - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { + ], "text/plain": [ "" - ], + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { "text/html": [ "Find logs at: ./wandb/run-20251028_115212-fwkqveds/logs" + ], + "text/plain": [ + "" ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "display_data", "data": { + "text/html": [], "text/plain": [ "" - ], - "text/html": [] + ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "display_data", "data": { - "text/plain": [ - "" - ], "text/html": [ "Tracking run with wandb version 0.22.2" - ] - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { + ], "text/plain": [ "" - ], + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { "text/html": [ "Run data is saved locally in /content/wandb/run-20251028_115650-rd1q63l3" - ] - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { + ], "text/plain": [ "" - ], + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { "text/html": [ "Syncing run easy-cloud-2 to Weights & Biases (docs)
" - ] - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { + ], "text/plain": [ "" - ], + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { "text/html": [ " View project at https://wandb.ai/oluoch-joshua-udemy/colab-pro-finetuning" - ] - }, - "metadata": {} - }, - { - "output_type": "display_data", - "data": { + ], "text/plain": [ "" - ], - "text/html": [ - " View run at https://wandb.ai/oluoch-joshua-udemy/colab-pro-finetuning/runs/rd1q63l3" ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + " View run at https://wandb.ai/oluoch-joshua-udemy/colab-pro-finetuning/runs/rd1q63l3" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "βœ… W&B initialized\n" ] @@ -277,8 +379,8 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "πŸ“¦ Loading pre-processed pickle files...\n", "βœ… Loaded training data: train.pkl (150 items)\n", @@ -427,8 +529,8 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "βœ… Datasets prepared:\n", " Training: 150 examples\n", @@ -466,6 +568,94 @@ }, { "cell_type": "code", + "execution_count": 40, + "id": "zWgL4fhku_XN", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 289, + "referenced_widgets": [ + "245570c62c3844728d7125a706fbbc9b", + "8d95da3803e542f8b855175013d497ba", + "34a89db126a64690bc2f6c8656ba2210", + "4c47ce21b5a14328aa22403782e4da9b", + "7dff366d9e71427dbae40b1dce7a9bfa", + "0614c35b3690494ca3b8f9ab71d71a08", + "42315e83fbac49c2bc7f2faf1abcc22e", + "4cdff5bdf7574795802e821aa42f3c4e", + "754aa440f45c4a878d99572368d659c8", + "8b5f0c156a9641cfa5413668a0b97b9c", + "aff498bd632f4036958f59cfc6587ea3", + "d6825cc926a24f2482ce72c15242081e", + "24b2b5f5d92049a79014b8278e97451b", + "a6001d34e58a47cab0d8bff2451afb6e", + "b42e8d8b61d7431a814a03c5e07a1166", + "9ce1659c776140bcaf3c16eae6f70967", + "cceae79c145d4b73a64e80ad3fc8866c", + "56bc56071ff04223935dc2d98d2703ab", + "67cacc87afe14250baaa073289fb4a8f", + "227eea7074544adbb2c34b9dde340fa5", + "8bd9aebb2cc5420094b2b441a5183523", + "1c3eb3793b6e4291b4fa57ce8419ef1f" + ] + }, + "id": "zWgL4fhku_XN", + "outputId": "8d375a13-59cf-4eea-f16f-fde5dbf7f0e8" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "πŸ”„ Checking dataset status...\n", + "Training dataset columns: ['input_ids', 'attention_mask', 'labels']\n", + "Validation dataset columns: ['input_ids', 'attention_mask', 'labels']\n", + "βœ… Datasets already tokenized\n", + "πŸ”„ Ensuring consistent sequence lengths...\n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "245570c62c3844728d7125a706fbbc9b", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Map: 0%| | 0/150 [00:00" - ], "text/html": [ "\n", "
\n", @@ -1035,13 +1133,17 @@ " \n", " \n", "

" + ], + "text/plain": [ + "" ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "βœ… Training completed!\n", "Model saved to: ./outputs\n" @@ -1076,8 +1178,8 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "βœ… Model and tokenizer saved\n", "Saved to: ./outputs\n", @@ -1122,19 +1224,15 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "πŸ“Š Evaluating model...\n", "⚠️ Best checkpoint not found, using final model\n" ] }, { - "output_type": "display_data", "data": { - "text/plain": [ - "" - ], "text/html": [ "\n", "

\n", @@ -1143,13 +1241,17 @@ " [25/25 00:01]\n", "
\n", " " + ], + "text/plain": [ + "" ] }, - "metadata": {} + "metadata": {}, + "output_type": "display_data" }, { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "\n", "πŸ“ˆ Evaluation Results:\n", @@ -1197,8 +1299,8 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "πŸ§ͺ Testing inference...\n", "\n", @@ -1275,644 +1377,211 @@ "\n", "print(\"\\nβœ… Inference testing completed!\")\n" ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4e716982", + "metadata": {}, + "outputs": [], + "source": [ + "# Fixed evaluation with price range constraints and better post-processing\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import re\n", + "import torch\n", + "\n", + "def extract_price_safe(text: str) -> float:\n", + " \"\"\"Extract price with safety constraints\"\"\"\n", + " if not text:\n", + " return 0.0\n", + " \n", + " # Clean the text\n", + " text = str(text).replace(\"$\", \"\").replace(\",\", \"\").strip()\n", + " \n", + " # Look for price patterns\n", + " patterns = [\n", + " r'\\$?(\\d+\\.?\\d*)\\s*(?:dollars?|USD|usd)?', # $123.45 or 123.45 dollars\n", + " r'(\\d+\\.?\\d*)', # Just numbers\n", + " ]\n", + " \n", + " for pattern in patterns:\n", + " matches = re.findall(pattern, text, re.IGNORECASE)\n", + " if matches:\n", + " try:\n", + " price = float(matches[0])\n", + " # Apply reasonable price constraints\n", + " if 0.01 <= price <= 100000: # Between 1 cent and $100k\n", + " return price\n", + " except ValueError:\n", + " continue\n", + " \n", + " return 0.0\n", + "\n", + "def build_pricing_prompt_fixed(item) -> str:\n", + " \"\"\"Build prompt with explicit price range guidance\"\"\"\n", + " return (\n", + " \"<|system|>\\n\"\n", + " \"You are a retail price estimator. Predict the most likely new retail price in USD. \"\n", + " \"Typical prices range from $1 to $10,000. Be realistic and conservative.\\n\"\n", + " \"<|user|>\\n\"\n", + " f\"Product: {item.title}\\n\"\n", + " f\"Description: {item.description}\\n\"\n", + " f\"Category: {getattr(item, 'category', 'Unknown')}\\n\"\n", + " \"What is the retail price?\\n\"\n", + " \"<|assistant|>\\n\"\n", + " \"The retail price is $\"\n", + " )\n", + "\n", + "@torch.no_grad()\n", + "def predict_price_fixed(model, tokenizer, item, max_new_tokens=15) -> float:\n", + " \"\"\"Predict price with better constraints\"\"\"\n", + " prompt = build_pricing_prompt_fixed(item)\n", + " inputs = tokenizer(prompt, return_tensors=\"pt\").to(model.device)\n", + " \n", + " # Generate with more conservative settings\n", + " outputs = model.generate(\n", + " **inputs,\n", + " max_new_tokens=max_new_tokens,\n", + " temperature=0.3, # Lower temperature for more conservative predictions\n", + " do_sample=True,\n", + " pad_token_id=tokenizer.eos_token_id,\n", + " repetition_penalty=1.1, # Reduce repetition\n", + " no_repeat_ngram_size=2,\n", + " )\n", + " \n", + " # Decode only the new tokens\n", + " prompt_length = len(tokenizer.decode(inputs[\"input_ids\"][0], skip_special_tokens=True))\n", + " full_response = tokenizer.decode(outputs[0], skip_special_tokens=True)\n", + " new_text = full_response[prompt_length:]\n", + " \n", + " # Extract price with constraints\n", + " price = extract_price_safe(new_text)\n", + " \n", + " # Additional safety: if price is still unreasonable, use a fallback\n", + " if price > 50000: # If over $50k, it's probably wrong\n", + " # Try to extract a more reasonable number\n", + " numbers = re.findall(r'\\d+\\.?\\d*', new_text)\n", + " if numbers:\n", + " try:\n", + " # Take the first reasonable number\n", + " for num in numbers:\n", + " candidate = float(num)\n", + " if 1 <= candidate <= 10000:\n", + " return candidate\n", + " except ValueError:\n", + " pass\n", + " return 0.0\n", + " \n", + " return price\n", + "\n", + "def evaluate_model_fixed(model, tokenizer, test_items, limit=None, title=\"Fixed Fine-tuned Model\"):\n", + " \"\"\"Evaluate with fixed price extraction\"\"\"\n", + " if not test_items:\n", + " print(\"⚠️ No test items available.\")\n", + " return {\"mae\": None, \"rmse\": None, \"mape\": None}\n", + " \n", + " items = test_items[:limit] if limit else test_items\n", + " print(f\"πŸ” Evaluating on {len(items)} items...\")\n", + " \n", + " y_true, y_pred = [], []\n", + " errors = []\n", + " \n", + " for i, item in enumerate(items):\n", + " try:\n", + " pred = predict_price_fixed(model, tokenizer, item)\n", + " true_price = float(getattr(item, \"price\", 0.0))\n", + " \n", + " y_true.append(true_price)\n", + " y_pred.append(pred)\n", + " \n", + " # Track individual errors for debugging\n", + " error = abs(pred - true_price)\n", + " errors.append({\n", + " 'item': i,\n", + " 'title': getattr(item, 'title', 'Unknown')[:50],\n", + " 'true': true_price,\n", + " 'pred': pred,\n", + " 'error': error\n", + " })\n", + " \n", + " except Exception as e:\n", + " print(f\"Error on item {i}: {e}\")\n", + " y_true.append(0.0)\n", + " y_pred.append(0.0)\n", + " \n", + " y_true = np.array(y_true, dtype=float)\n", + " y_pred = np.array(y_pred, dtype=float)\n", + " \n", + " # Calculate metrics\n", + " mae = float(np.mean(np.abs(y_pred - y_true)))\n", + " rmse = float(np.sqrt(np.mean((y_pred - y_true) ** 2)))\n", + " \n", + " # MAPE (avoid division by zero)\n", + " mape = float(np.mean(np.abs((y_true - y_pred) / np.maximum(y_true, 1.0)))) * 100\n", + " \n", + " # Hits within 15% tolerance\n", + " tolerance = 0.15\n", + " hits = float(np.mean(np.abs(y_pred - y_true) <= (tolerance * np.maximum(y_true, 1.0)))) * 100\n", + " \n", + " # Create scatter plot\n", + " plt.figure(figsize=(8, 6))\n", + " plt.scatter(y_true, y_pred, alpha=0.7, s=30, c='blue')\n", + " \n", + " # Add diagonal line\n", + " max_val = max(y_true.max() if y_true.size else 0, y_pred.max() if y_pred.size else 0, 1)\n", + " plt.plot([0, max_val], [0, max_val], 'r--', alpha=0.8, label='Perfect Prediction')\n", + " \n", + " plt.xlabel('True Price ($)')\n", + " plt.ylabel('Predicted Price ($)')\n", + " plt.title(f'{title}\\nMAE=${mae:.2f} RMSE=${rmse:.2f} MAPE={mape:.1f}% Hits={hits:.1f}%')\n", + " plt.legend()\n", + " plt.grid(True, alpha=0.3)\n", + " plt.tight_layout()\n", + " plt.show()\n", + " \n", + " # Show worst predictions\n", + " errors.sort(key=lambda x: x['error'], reverse=True)\n", + " print(f\"\\nπŸ” Top 5 Worst Predictions:\")\n", + " for i, err in enumerate(errors[:5]):\n", + " print(f\" {i+1}. {err['title']}...\")\n", + " print(f\" True: ${err['true']:.2f}, Pred: ${err['pred']:.2f}, Error: ${err['error']:.2f}\")\n", + " \n", + " return {\n", + " \"mae\": mae,\n", + " \"rmse\": rmse, \n", + " \"mape\": mape,\n", + " \"hits_pct\": hits,\n", + " \"y_true\": y_true,\n", + " \"y_pred\": y_pred,\n", + " \"errors\": errors\n", + " }\n", + "\n", + "# Test the fixed evaluation\n", + "print(\"πŸ§ͺ Testing fixed price prediction...\")\n", + "results = evaluate_model_fixed(model, tokenizer, test, limit=20, title=\"Fixed Fine-tuned Model\")\n" + ] } ], "metadata": { + "accelerator": "GPU", + "colab": { + "gpuType": "A100", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, "language_info": { "name": "python" }, - "colab": { - "provenance": [], - "gpuType": "A100" - }, - "kernelspec": { - "name": "python3", - "display_name": "Python 3" - }, - "accelerator": "GPU", "widgets": { "application/vnd.jupyter.widget-state+json": { - "245570c62c3844728d7125a706fbbc9b": { - "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_8d95da3803e542f8b855175013d497ba", - "IPY_MODEL_34a89db126a64690bc2f6c8656ba2210", - "IPY_MODEL_4c47ce21b5a14328aa22403782e4da9b" - ], - "layout": "IPY_MODEL_7dff366d9e71427dbae40b1dce7a9bfa" - } - }, - "8d95da3803e542f8b855175013d497ba": { - "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_0614c35b3690494ca3b8f9ab71d71a08", - "placeholder": "​", - "style": "IPY_MODEL_42315e83fbac49c2bc7f2faf1abcc22e", - "value": "Map: 100%" - } - }, - "34a89db126a64690bc2f6c8656ba2210": { - "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_4cdff5bdf7574795802e821aa42f3c4e", - "max": 150, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_754aa440f45c4a878d99572368d659c8", - "value": 150 - } - }, - "4c47ce21b5a14328aa22403782e4da9b": { - "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_8b5f0c156a9641cfa5413668a0b97b9c", - "placeholder": "​", - "style": "IPY_MODEL_aff498bd632f4036958f59cfc6587ea3", - "value": " 150/150 [00:00<00:00, 1904.80 examples/s]" - } - }, - "7dff366d9e71427dbae40b1dce7a9bfa": { - "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 - } - }, "0614c35b3690494ca3b8f9ab71d71a08": { "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 - } - }, - "42315e83fbac49c2bc7f2faf1abcc22e": { - "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": "" - } - }, - "4cdff5bdf7574795802e821aa42f3c4e": { - "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 - } - }, - "754aa440f45c4a878d99572368d659c8": { - "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": "" - } - }, - "8b5f0c156a9641cfa5413668a0b97b9c": { - "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 - } - }, - "aff498bd632f4036958f59cfc6587ea3": { - "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": "" - } - }, - "d6825cc926a24f2482ce72c15242081e": { - "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_24b2b5f5d92049a79014b8278e97451b", - "IPY_MODEL_a6001d34e58a47cab0d8bff2451afb6e", - "IPY_MODEL_b42e8d8b61d7431a814a03c5e07a1166" - ], - "layout": "IPY_MODEL_9ce1659c776140bcaf3c16eae6f70967" - } - }, - "24b2b5f5d92049a79014b8278e97451b": { - "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_cceae79c145d4b73a64e80ad3fc8866c", - "placeholder": "​", - "style": "IPY_MODEL_56bc56071ff04223935dc2d98d2703ab", - "value": "Map: 100%" - } - }, - "a6001d34e58a47cab0d8bff2451afb6e": { - "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_67cacc87afe14250baaa073289fb4a8f", - "max": 50, - "min": 0, - "orientation": "horizontal", - "style": "IPY_MODEL_227eea7074544adbb2c34b9dde340fa5", - "value": 50 - } - }, - "b42e8d8b61d7431a814a03c5e07a1166": { - "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_8bd9aebb2cc5420094b2b441a5183523", - "placeholder": "​", - "style": "IPY_MODEL_1c3eb3793b6e4291b4fa57ce8419ef1f", - "value": " 50/50 [00:00<00:00, 1509.88 examples/s]" - } - }, - "9ce1659c776140bcaf3c16eae6f70967": { - "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 - } - }, - "cceae79c145d4b73a64e80ad3fc8866c": { - "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 - } - }, - "56bc56071ff04223935dc2d98d2703ab": { - "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": "" - } - }, - "67cacc87afe14250baaa073289fb4a8f": { - "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 - } - }, - "227eea7074544adbb2c34b9dde340fa5": { - "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": "" - } - }, - "8bd9aebb2cc5420094b2b441a5183523": { - "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", @@ -1963,8 +1632,8 @@ }, "1c3eb3793b6e4291b4fa57ce8419ef1f": { "model_module": "@jupyter-widgets/controls", - "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", + "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", @@ -1975,10 +1644,627 @@ "_view_name": "StyleView", "description_width": "" } + }, + "227eea7074544adbb2c34b9dde340fa5": { + "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": "" + } + }, + "245570c62c3844728d7125a706fbbc9b": { + "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_8d95da3803e542f8b855175013d497ba", + "IPY_MODEL_34a89db126a64690bc2f6c8656ba2210", + "IPY_MODEL_4c47ce21b5a14328aa22403782e4da9b" + ], + "layout": "IPY_MODEL_7dff366d9e71427dbae40b1dce7a9bfa" + } + }, + "24b2b5f5d92049a79014b8278e97451b": { + "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_cceae79c145d4b73a64e80ad3fc8866c", + "placeholder": "​", + "style": "IPY_MODEL_56bc56071ff04223935dc2d98d2703ab", + "value": "Map: 100%" + } + }, + "34a89db126a64690bc2f6c8656ba2210": { + "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_4cdff5bdf7574795802e821aa42f3c4e", + "max": 150, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_754aa440f45c4a878d99572368d659c8", + "value": 150 + } + }, + "42315e83fbac49c2bc7f2faf1abcc22e": { + "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": "" + } + }, + "4c47ce21b5a14328aa22403782e4da9b": { + "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_8b5f0c156a9641cfa5413668a0b97b9c", + "placeholder": "​", + "style": "IPY_MODEL_aff498bd632f4036958f59cfc6587ea3", + "value": " 150/150 [00:00<00:00, 1904.80 examples/s]" + } + }, + "4cdff5bdf7574795802e821aa42f3c4e": { + "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 + } + }, + "56bc56071ff04223935dc2d98d2703ab": { + "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": "" + } + }, + "67cacc87afe14250baaa073289fb4a8f": { + "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 + } + }, + "754aa440f45c4a878d99572368d659c8": { + "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": "" + } + }, + "7dff366d9e71427dbae40b1dce7a9bfa": { + "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 + } + }, + "8b5f0c156a9641cfa5413668a0b97b9c": { + "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 + } + }, + "8bd9aebb2cc5420094b2b441a5183523": { + "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 + } + }, + "8d95da3803e542f8b855175013d497ba": { + "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_0614c35b3690494ca3b8f9ab71d71a08", + "placeholder": "​", + "style": "IPY_MODEL_42315e83fbac49c2bc7f2faf1abcc22e", + "value": "Map: 100%" + } + }, + "9ce1659c776140bcaf3c16eae6f70967": { + "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 + } + }, + "a6001d34e58a47cab0d8bff2451afb6e": { + "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_67cacc87afe14250baaa073289fb4a8f", + "max": 50, + "min": 0, + "orientation": "horizontal", + "style": "IPY_MODEL_227eea7074544adbb2c34b9dde340fa5", + "value": 50 + } + }, + "aff498bd632f4036958f59cfc6587ea3": { + "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": "" + } + }, + "b42e8d8b61d7431a814a03c5e07a1166": { + "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_8bd9aebb2cc5420094b2b441a5183523", + "placeholder": "​", + "style": "IPY_MODEL_1c3eb3793b6e4291b4fa57ce8419ef1f", + "value": " 50/50 [00:00<00:00, 1509.88 examples/s]" + } + }, + "cceae79c145d4b73a64e80ad3fc8866c": { + "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 + } + }, + "d6825cc926a24f2482ce72c15242081e": { + "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_24b2b5f5d92049a79014b8278e97451b", + "IPY_MODEL_a6001d34e58a47cab0d8bff2451afb6e", + "IPY_MODEL_b42e8d8b61d7431a814a03c5e07a1166" + ], + "layout": "IPY_MODEL_9ce1659c776140bcaf3c16eae6f70967" + } } } } }, "nbformat": 4, "nbformat_minor": 5 -} \ No newline at end of file +}