{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":39763,"databundleVersionId":11756775,"sourceType":"competition"},{"sourceId":232758274,"sourceType":"kernelVersion"}],"dockerImageVersionId":30919,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"**Geophysical Waveform Inversion - EDA Notebook**","metadata":{}},{"cell_type":"markdown","source":"# Setup and Configuration","metadata":{}},{"cell_type":"code","source":"import os\nimport sys\nimport json\nimport glob\nimport numpy as np\nimport pandas as pd\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport plotly.express as px\nimport torch\nimport pandas as pd\nfrom torchvision.transforms import Compose\nimport torch.nn as nn\nfrom pathlib import Path\nfrom tqdm.auto import tqdm\nfrom torch.utils.data import Dataset, DataLoader\nfrom typing import List\nimport logging\nimport csv\nimport torch.nn.functional as F\nimport csv\n\n# Configure logging\nlogging.basicConfig(format='[%(levelname)s] %(message)s', level=logging.INFO)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-20T19:34:47.249708Z","iopub.execute_input":"2025-05-20T19:34:47.250039Z","iopub.status.idle":"2025-05-20T19:34:47.25651Z","shell.execute_reply.started":"2025-05-20T19:34:47.250015Z","shell.execute_reply":"2025-05-20T19:34:47.255159Z"},"_kg_hide-input":true},"outputs":[],"execution_count":17},{"cell_type":"code","source":"# def load_dataset_config(config_path, dataset_name):\n#     \"\"\"Loads normalization parameters from dataset_config.json.\"\"\"\n#     try:\n#         with open(config_path) as f:\n#             ctx = json.load(f)[dataset_name]\n#         print(f\"Loaded config for dataset: {dataset_name}\")\n#         return ctx\n#     except FileNotFoundError:\n#         print(f\"Error: {config_path} not found.\")\n#         sys.exit(1)\n#     except KeyError:\n#         print(f\"Error: Dataset '{dataset_name}' not found in {config_path}.\")\n#         sys.exit(1)\n\n# def get_transforms(ctx, k):\n#     \"\"\"Gets the transformations for data and label based on test.py.\"\"\"\n#     log_data_min = T.log_transform(ctx['data_min'], k=k)\n#     log_data_max = T.log_transform(ctx['data_max'], k=k)\n#     transform_data = Compose([\n#         T.LogTransform(k=k),\n#         T.MinMaxNormalize(log_data_min, log_data_max),\n#     ])\n\n#     return transform_data\n    \n# # ================================================================\n# # Flexible Exploration for Any Family\n# # Auto-Skip empty folders\n# # ================================================================\n\n# def explore_family(folder_name):\n#     folder_path = os.path.join(TRAIN_DIR, folder_name)\n#     print(f\"\\nExploring {folder_name} Dataset\")\n#     print(\"Available Files:\", os.listdir(folder_path))\n\n#     seis_files = sorted([f for f in os.listdir(folder_path) if f.startswith('seis')])\n#     vel_files = sorted([f for f in os.listdir(folder_path) if f.startswith('vel')])\n\n#     print(f\"Found {len(seis_files)} Seismic files\")\n#     print(f\"Found {len(vel_files)} Velocity files\")\n\n#     # Check before loading\n#     if seis_files and vel_files:\n#         example_seis = load_npy(os.path.join(folder_path, seis_files[0]))\n#         example_vel = load_npy(os.path.join(folder_path, vel_files[0]))\n#         example_vel = np.squeeze(example_vel)\n\n#         print(\"Seismic Shape:\", example_seis.shape)\n#         print(\"Velocity Shape:\", example_vel.shape)\n#     else:\n#         print(\"Skipping... No seismic or velocity files found.\")\n\n# # ================================================================\n# # Helper to Load Numpy file\n# # ================================================================\n# def load_npy(file_path):\n#     return np.load(file_path)\n    \n# # =============================================================================\n# # 1. Data Preparation\n# # =============================================================================\n# def collect_input_files(data_dir: str) -> list:\n#     \"\"\"\n#     Recursively search for .npy files in data_dir that contain 'seis' or 'data' in their filename.\n#     \"\"\"\n#     return [f for f in Path(data_dir).rglob(\"*.npy\") if (\"seis\" in f.stem) or (\"data\" in f.stem)]\n\n# def map_input_to_output(input_files: list) -> list:\n#     \"\"\"\n#     Map each input file to its corresponding output file by replacing keywords.\n#     \"\"\"\n#     return [Path(str(f).replace(\"seis\", \"vel\").replace(\"data\", \"model\")) for f in input_files]\n\n# # Define training sample directory\n# TRAIN_DIR = \"/kaggle/input/waveform-inversion/train_samples\"\n# inputs_all = collect_input_files(TRAIN_DIR)\n# outputs_all = map_input_to_output(inputs_all)\n\n# # Check all output files exist\n# assert all(f.exists() for f in outputs_all)\n\n# # Split dataset into training and validation based on sampling frequency\n# train_inputs = [inputs_all[i] for i in range(0, len(inputs_all), 2)]\n# valid_inputs = [f for f in inputs_all if f not in train_inputs]\n# train_outputs = map_input_to_output(train_inputs)\n# valid_outputs = map_input_to_output(valid_inputs)\n\n# # =============================================================================\n# # 2. Dataset Definition\n# # =============================================================================\n# class SeismicDataset(Dataset):\n#     \"\"\"\n#     Dataset handling seismic files with multiple examples per file.\n#     \"\"\"\n#     def __init__(self, in_files: list, out_files: list, examples_per_file: int = 500):\n#         assert len(in_files) == len(out_files)\n#         self.in_files = in_files\n#         self.out_files = out_files\n#         self.examples_per_file = examples_per_file\n\n#     def __len__(self):\n#         return len(self.in_files) * self.examples_per_file\n\n#     def __getitem__(self, idx: int):\n#         file_index = idx // self.examples_per_file\n#         sample_index = idx % self.examples_per_file\n\n#         # Memory map the file to reduce memory usage\n#         x_data = np.load(self.in_files[file_index], mmap_mode=\"r\")\n#         y_data = np.load(self.out_files[file_index], mmap_mode=\"r\")\n#         try:\n#             return x_data[sample_index].copy(), y_data[sample_index].copy()\n#         finally:\n#             del x_data, y_data\n\n# # Create DataLoaders for training and validation\n# train_dataset = SeismicDataset(train_inputs, train_outputs, examples_per_file=500)\n# valid_dataset = SeismicDataset(valid_inputs, valid_outputs, examples_per_file=500)\n\n# train_loader = DataLoader(\n#     train_dataset, batch_size=64, shuffle=True, pin_memory=True,\n#     drop_last=True, num_workers=4, persistent_workers=True\n# )\n# valid_loader = DataLoader(\n#     valid_dataset, batch_size=64, shuffle=False, pin_memory=True,\n#     drop_last=False, num_workers=4, persistent_workers=True\n# )\n\n# # =============================================================================\n# # 3. Model Architecture: SmartConvNet\n# # =============================================================================\n# class SmartConvNet(nn.Module):\n#     \"\"\"A convolutional network with adaptive pooling and dense layers.\"\"\"\n#     def __init__(self, input_channels: int = 5, output_size: int = 70 * 70):\n#         super().__init__()\n#         # Convolutional feature extractor\n#         self.feature_extractor = nn.Sequential(\n#             nn.Conv2d(input_channels, 16, kernel_size=3, stride=2, padding=1),  # spatial reduction\n#             nn.BatchNorm2d(16),\n#             nn.ReLU(),\n#             nn.Conv2d(16, 32, kernel_size=3, stride=2, padding=1),  # further reduction\n#             nn.BatchNorm2d(32),\n#             nn.ReLU(),\n#             nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1),\n#             nn.BatchNorm2d(64),\n#             nn.ReLU(),\n#         )\n#         # Pool output to a fixed size\n#         self.pool = nn.AdaptiveAvgPool2d((7, 7))\n#         # Fully connected head\n#         self.fc = nn.Sequential(\n#             nn.Linear(64 * 7 * 7, 512),\n#             nn.ReLU(),\n#             nn.Dropout(0.3),\n#             nn.Linear(512, output_size),\n#         )\n\n#     def forward(self, x):\n#         batch_size = x.shape[0]\n#         feat = self.feature_extractor(x)\n#         pooled = self.pool(feat)\n#         flat = pooled.view(batch_size, -1)\n#         out = self.fc(flat)\n#         # Reshape output to (batch_size, 1, 70, 70) and apply scaling and bias\n#         return out.view(batch_size, 1, 70, 70) * 1000 + 1500\n\n# # -----------------------------------------------------------------------------\n# # Residual Block with Squeeze-and-Excitation (SE) Module\n# # -----------------------------------------------------------------------------\n# class ResidualBlock(nn.Module):\n#     \"\"\"\n#     A residual block that optionally uses a squeeze-and-excitation (SE) module to\n#     adaptively weight the channels.\n#     \"\"\"\n#     def __init__(self, in_channels, out_channels, stride=1, use_se=True):\n#         super().__init__()\n#         self.use_se = use_se\n        \n#         self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=3, \n#                                stride=stride, padding=1, bias=False)\n#         self.bn1 = nn.BatchNorm2d(out_channels)\n#         self.relu = nn.ReLU(inplace=True)\n        \n#         self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size=3, \n#                                stride=1, padding=1, bias=False)\n#         self.bn2 = nn.BatchNorm2d(out_channels)\n        \n#         # If there's a change in dimensions, adjust the shortcut (residual path)\n#         self.downsample = None\n#         if stride != 1 or in_channels != out_channels:\n#             self.downsample = nn.Sequential(\n#                 nn.Conv2d(in_channels, out_channels, kernel_size=1,\n#                           stride=stride, bias=False),\n#                 nn.BatchNorm2d(out_channels)\n#             )\n        \n#         # Squeeze-and-Excitation module for channel attention\n#         if self.use_se:\n#             self.se = nn.Sequential(\n#                 nn.AdaptiveAvgPool2d(1),\n#                 nn.Conv2d(out_channels, out_channels // 16, kernel_size=1),\n#                 nn.ReLU(inplace=True),\n#                 nn.Conv2d(out_channels // 16, out_channels, kernel_size=1),\n#                 nn.Sigmoid()\n#             )\n    \n#     def forward(self, x):\n#         identity = x\n        \n#         out = self.relu(self.bn1(self.conv1(x)))\n#         out = self.bn2(self.conv2(out))\n        \n#         if self.use_se:\n#             se_weight = self.se(out)\n#             out = out * se_weight\n        \n#         if self.downsample is not None:\n#             identity = self.downsample(x)\n            \n#         out += identity\n#         return self.relu(out)\n\n# # -----------------------------------------------------------------------------\n# # ComplexConvNet: Enhanced and Deeper Model Architecture\n# # -----------------------------------------------------------------------------\n# class ComplexConvNet(nn.Module):\n#     \"\"\"\n#     A more complex deep convolutional network that uses a stem followed by a series of\n#     residual blocks with SE modules. The network employs global pooling and dense layers\n#     to produce an output of shape (batch_size, 1, 70, 70) with the desired scaling.\n#     \"\"\"\n#     def __init__(self, input_channels=5, output_size=70*70):\n#         super().__init__()\n#         # Stem: initial feature extractor\n#         self.stem = nn.Sequential(\n#             nn.Conv2d(input_channels, 32, kernel_size=3, stride=2, padding=1, bias=False),\n#             nn.BatchNorm2d(32),\n#             nn.ReLU(inplace=True),\n#             nn.Conv2d(32, 32, kernel_size=3, stride=1, padding=1, bias=False),\n#             nn.BatchNorm2d(32),\n#             nn.ReLU(inplace=True)\n#         )\n        \n#         # Residual layers with increasing feature channels, each using SE\n#         self.layer1 = nn.Sequential(\n#             ResidualBlock(32, 64, stride=2, use_se=True),\n#             ResidualBlock(64, 64, stride=1, use_se=True)\n#         )\n#         self.layer2 = nn.Sequential(\n#             ResidualBlock(64, 128, stride=2, use_se=True),\n#             ResidualBlock(128, 128, stride=1, use_se=True)\n#         )\n#         self.layer3 = nn.Sequential(\n#             ResidualBlock(128, 256, stride=2, use_se=True),\n#             ResidualBlock(256, 256, stride=1, use_se=True)\n#         )\n#         self.layer4 = nn.Sequential(\n#             ResidualBlock(256, 512, stride=2, use_se=True),\n#             ResidualBlock(512, 512, stride=1, use_se=True)\n#         )\n        \n#         # Global Pooling to get fixed spatial dimensions regardless of input size\n#         self.global_pool = nn.AdaptiveAvgPool2d((4, 4))\n        \n#         # Dense (fully connected) layers for final processing\n#         self.fc = nn.Sequential(\n#             nn.Flatten(),\n#             nn.Linear(512 * 4 * 4, 2048),\n#             nn.GELU(),\n#             nn.Dropout(0.5),\n#             nn.Linear(2048, 1024),\n#             nn.GELU(),\n#             nn.Dropout(0.3),\n#             nn.Linear(1024, output_size)\n#         )\n        \n#     def forward(self, x):\n#         batch_size = x.shape[0]\n#         x = self.stem(x)\n#         x = self.layer1(x)\n#         x = self.layer2(x)\n#         x = self.layer3(x)\n#         x = self.layer4(x)\n#         x = self.global_pool(x)\n#         x = self.fc(x)\n        \n#         # Reshape output to (batch_size, 1, 70, 70) and apply scaling and offset\n#         return x.view(batch_size, 1, 70, 70) * 1000 + 1500\n\n# class TestDataset(Dataset):\n#     \"\"\"\n#     Dataset for test files that returns the test data and its identifier.\n#     \"\"\"\n#     def __init__(self, files: list):\n#         self.files = files\n\n#     def __len__(self):\n#         return len(self.files)\n\n#     def __getitem__(self, idx: int):\n#         file_path = self.files[idx]\n#         return np.load(file_path), file_path.stem\n\n\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-20T19:34:47.399118Z","iopub.execute_input":"2025-05-20T19:34:47.399493Z","iopub.status.idle":"2025-05-20T19:34:47.407271Z","shell.execute_reply.started":"2025-05-20T19:34:47.399462Z","shell.execute_reply":"2025-05-20T19:34:47.406314Z"},"_kg_hide-input":true},"outputs":[],"execution_count":18},{"cell_type":"code","source":"import json\nimport sys\nimport os\nimport numpy as np\nfrom pathlib import Path\nfrom torch.utils.data import Dataset, DataLoader\nimport torch.nn as nn\nimport torch\n\nfrom scipy.ndimage import gaussian_filter  # Added for denoising\n\n# =============================================================================\n# Config Loader\n# =============================================================================\ndef load_dataset_config(config_path, dataset_name):\n    \"\"\"Loads normalization parameters from dataset_config.json.\"\"\"\n    try:\n        with open(config_path) as f:\n            ctx = json.load(f)[dataset_name]\n        print(f\"Loaded config for dataset: {dataset_name}\")\n        return ctx\n    except FileNotFoundError:\n        print(f\"Error: {config_path} not found.\")\n        sys.exit(1)\n    except KeyError:\n        print(f\"Error: Dataset '{dataset_name}' not found in {config_path}.\")\n        sys.exit(1)\n\ndef get_transforms(ctx, k):\n    \"\"\"Gets the transformations for data and label based on test.py.\"\"\"\n    log_data_min = T.log_transform(ctx['data_min'], k=k)\n    log_data_max = T.log_transform(ctx['data_max'], k=k)\n    transform_data = Compose([\n        T.LogTransform(k=k),\n        T.MinMaxNormalize(log_data_min, log_data_max),\n    ])\n    return transform_data\n\n# =============================================================================\n# Exploration Utility\n# =============================================================================\ndef explore_family(folder_name):\n    folder_path = os.path.join(TRAIN_DIR, folder_name)\n    print(f\"\\nExploring {folder_name} Dataset\")\n    print(\"Available Files:\", os.listdir(folder_path))\n\n    seis_files = sorted([f for f in os.listdir(folder_path) if f.startswith('seis')])\n    vel_files = sorted([f for f in os.listdir(folder_path) if f.startswith('vel')])\n\n    print(f\"Found {len(seis_files)} Seismic files\")\n    print(f\"Found {len(vel_files)} Velocity files\")\n\n    if seis_files and vel_files:\n        example_seis = load_npy(os.path.join(folder_path, seis_files[0]))\n        example_vel = load_npy(os.path.join(folder_path, vel_files[0]))\n        example_vel = np.squeeze(example_vel)\n\n        print(\"Seismic Shape:\", example_seis.shape)\n        print(\"Velocity Shape:\", example_vel.shape)\n    else:\n        print(\"Skipping... No seismic or velocity files found.\")\n\n# =============================================================================\n# NPY Loader\n# =============================================================================\ndef load_npy(file_path):\n    return np.load(file_path)\n\n# =============================================================================\n# Data Preparation\n# =============================================================================\ndef collect_input_files(data_dir: str) -> list:\n    return [f for f in Path(data_dir).rglob(\"*.npy\") if (\"seis\" in f.stem) or (\"data\" in f.stem)]\n\ndef map_input_to_output(input_files: list) -> list:\n    return [Path(str(f).replace(\"seis\", \"vel\").replace(\"data\", \"model\")) for f in input_files]\n\nTRAIN_DIR = \"/kaggle/input/waveform-inversion/train_samples\"\ninputs_all = collect_input_files(TRAIN_DIR)\noutputs_all = map_input_to_output(inputs_all)\nassert all(f.exists() for f in outputs_all)\n\ntrain_inputs = [inputs_all[i] for i in range(0, len(inputs_all), 2)]\nvalid_inputs = [f for f in inputs_all if f not in train_inputs]\ntrain_outputs = map_input_to_output(train_inputs)\nvalid_outputs = map_input_to_output(valid_inputs)\n\n# =============================================================================\n# Seismic Dataset with Denoising & Normalization\n# =============================================================================\nclass SeismicDataset(Dataset):\n    def __init__(self, in_files: list, out_files: list, examples_per_file: int = 500):\n        assert len(in_files) == len(out_files)\n        self.in_files = in_files\n        self.out_files = out_files\n        self.examples_per_file = examples_per_file\n\n    def __len__(self):\n        return len(self.in_files) * self.examples_per_file\n\n    def __getitem__(self, idx: int):\n        file_index = idx // self.examples_per_file\n        sample_index = idx % self.examples_per_file\n\n        x_data = np.load(self.in_files[file_index], mmap_mode=\"r\")\n        y_data = np.load(self.out_files[file_index], mmap_mode=\"r\")\n        try:\n            x = x_data[sample_index].copy()\n            y = y_data[sample_index].copy()\n\n            # Denoising\n            x = gaussian_filter(x, sigma=0.5)\n\n            # Normalization (Min-Max)\n            x_min = x.min()\n            x_max = x.max()\n            if x_max > x_min:\n                x = (x - x_min) / (x_max - x_min)\n            else:\n                x = x - x_min\n\n            return x, y\n        finally:\n            del x_data, y_data\n\n# =============================================================================\n# Test Dataset with Preprocessing\n# =============================================================================\nclass TestDataset(Dataset):\n    def __init__(self, files: list):\n        self.files = files\n\n    def __len__(self):\n        return len(self.files)\n\n    def __getitem__(self, idx: int):\n        file_path = self.files[idx]\n        x = np.load(file_path)\n\n        # Denoising\n        x = gaussian_filter(x, sigma=0.5)\n\n        # Normalization (Min-Max)\n        x_min = x.min()\n        x_max = x.max()\n        if x_max > x_min:\n            x = (x - x_min) / (x_max - x_min)\n        else:\n            x = x - x_min\n\n        return x, file_path.stem\n\n# =============================================================================\n# Dataloaders\n# =============================================================================\ntrain_dataset = SeismicDataset(train_inputs, train_outputs, examples_per_file=500)\nvalid_dataset = SeismicDataset(valid_inputs, valid_outputs, examples_per_file=500)\n\ntrain_loader = DataLoader(\n    train_dataset, batch_size=64, shuffle=True, pin_memory=True,\n    drop_last=True, num_workers=4, persistent_workers=True\n)\nvalid_loader = DataLoader(\n    valid_dataset, batch_size=64, shuffle=False, pin_memory=True,\n    drop_last=False, num_workers=4, persistent_workers=True\n)\n\n# =============================================================================\n# SmartConvNet\n# =============================================================================\nclass SmartConvNet(nn.Module):\n    def __init__(self, input_channels: int = 5, output_size: int = 70 * 70):\n        super().__init__()\n        self.feature_extractor = nn.Sequential(\n            nn.Conv2d(input_channels, 16, kernel_size=3, stride=2, padding=1),\n            nn.BatchNorm2d(16),\n            nn.ReLU(),\n            nn.Conv2d(16, 32, kernel_size=3, stride=2, padding=1),\n            nn.BatchNorm2d(32),\n            nn.ReLU(),\n            nn.Conv2d(32, 64, kernel_size=3, stride=1, padding=1),\n            nn.BatchNorm2d(64),\n            nn.ReLU(),\n        )\n        self.pool = nn.AdaptiveAvgPool2d((7, 7))\n        self.fc = nn.Sequential(\n            nn.Linear(64 * 7 * 7, 512),\n            nn.ReLU(),\n            nn.Dropout(0.3),\n            nn.Linear(512, output_size),\n        )\n\n    def forward(self, x):\n        batch_size = x.shape[0]\n        feat = self.feature_extractor(x)\n        pooled = self.pool(feat)\n        flat = pooled.view(batch_size, -1)\n        out = self.fc(flat)\n        return out.view(batch_size, 1, 70, 70) * 1000 + 1500\n\n# =============================================================================\n# Residual Block with SE\n# =============================================================================\nclass ResidualBlock(nn.Module):\n    def __init__(self, in_channels, out_channels, stride=1, use_se=True):\n        super().__init__()\n        self.use_se = use_se\n        self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size=3, stride=stride, padding=1, bias=False)\n        self.bn1 = nn.BatchNorm2d(out_channels)\n        self.relu = nn.ReLU(inplace=True)\n        self.conv2 = nn.Conv2d(out_channels, out_channels, kernel_size=3, stride=1, padding=1, bias=False)\n        self.bn2 = nn.BatchNorm2d(out_channels)\n\n        self.downsample = None\n        if stride != 1 or in_channels != out_channels:\n            self.downsample = nn.Sequential(\n                nn.Conv2d(in_channels, out_channels, kernel_size=1, stride=stride, bias=False),\n                nn.BatchNorm2d(out_channels)\n            )\n\n        if self.use_se:\n            self.se = nn.Sequential(\n                nn.AdaptiveAvgPool2d(1),\n                nn.Conv2d(out_channels, out_channels // 16, kernel_size=1),\n                nn.ReLU(inplace=True),\n                nn.Conv2d(out_channels // 16, out_channels, kernel_size=1),\n                nn.Sigmoid()\n            )\n\n    def forward(self, x):\n        identity = x\n        out = self.relu(self.bn1(self.conv1(x)))\n        out = self.bn2(self.conv2(out))\n\n        if self.use_se:\n            se_weight = self.se(out)\n            out = out * se_weight\n\n        if self.downsample is not None:\n            identity = self.downsample(x)\n\n        out += identity\n        return self.relu(out)\n\n# =============================================================================\n# ComplexConvNet\n# =============================================================================\nclass ComplexConvNet(nn.Module):\n    def __init__(self, input_channels=5, output_size=70*70):\n        super().__init__()\n        self.stem = nn.Sequential(\n            nn.Conv2d(input_channels, 32, kernel_size=3, stride=2, padding=1, bias=False),\n            nn.BatchNorm2d(32),\n            nn.ReLU(inplace=True),\n            nn.Conv2d(32, 32, kernel_size=3, stride=1, padding=1, bias=False),\n            nn.BatchNorm2d(32),\n            nn.ReLU(inplace=True)\n        )\n        self.layer1 = nn.Sequential(\n            ResidualBlock(32, 64, stride=2, use_se=True),\n            ResidualBlock(64, 64, stride=1, use_se=True)\n        )\n        self.layer2 = nn.Sequential(\n            ResidualBlock(64, 128, stride=2, use_se=True),\n            ResidualBlock(128, 128, stride=1, use_se=True)\n        )\n        self.layer3 = nn.Sequential(\n            ResidualBlock(128, 256, stride=2, use_se=True),\n            ResidualBlock(256, 256, stride=1, use_se=True)\n        )\n        self.layer4 = nn.Sequential(\n            ResidualBlock(256, 512, stride=2, use_se=True),\n            ResidualBlock(512, 512, stride=1, use_se=True)\n        )\n        self.global_pool = nn.AdaptiveAvgPool2d((4, 4))\n        self.fc = nn.Sequential(\n            nn.Flatten(),\n            nn.Linear(512 * 4 * 4, 2048),\n            nn.GELU(),\n            nn.Dropout(0.5),\n            nn.Linear(2048, 1024),\n            nn.GELU(),\n            nn.Dropout(0.3),\n            nn.Linear(1024, output_size)\n        )\n\n    def forward(self, x):\n        batch_size = x.shape[0]\n        x = self.stem(x)\n        x = self.layer1(x)\n        x = self.layer2(x)\n        x = self.layer3(x)\n        x = self.layer4(x)\n        x = self.global_pool(x)\n        x = self.fc(x)\n        return x.view(batch_size, 1, 70, 70) * 1000 + 1500\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-20T19:34:47.54878Z","iopub.execute_input":"2025-05-20T19:34:47.54922Z","iopub.status.idle":"2025-05-20T19:34:47.669347Z","shell.execute_reply.started":"2025-05-20T19:34:47.549175Z","shell.execute_reply":"2025-05-20T19:34:47.668406Z"}},"outputs":[],"execution_count":19},{"cell_type":"code","source":"# Root Paths\nBASE_DIR = '/kaggle/input/waveform-inversion'\nTRAIN_DIR = os.path.join(BASE_DIR, 'train_samples')\nTEST_DIR = os.path.join(BASE_DIR, 'test')\n\nprint(\"Train Folders:\", os.listdir(TRAIN_DIR))","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-20T19:34:47.670595Z","iopub.execute_input":"2025-05-20T19:34:47.670869Z","iopub.status.idle":"2025-05-20T19:34:47.676619Z","shell.execute_reply.started":"2025-05-20T19:34:47.670844Z","shell.execute_reply":"2025-05-20T19:34:47.675464Z"}},"outputs":[{"name":"stdout","text":"Train Folders: ['FlatFault_A', 'FlatVel_A', 'CurveVel_A', 'FlatFault_B', 'Style_B', 'CurveFault_B', 'FlatVel_B', 'Style_A', 'CurveVel_B', 'CurveFault_A']\n","output_type":"stream"}],"execution_count":20},{"cell_type":"markdown","source":"# Explore CurveFault_A as Example\n","metadata":{}},{"cell_type":"code","source":"curve_fault_a_path = os.path.join(TRAIN_DIR, 'CurveFault_A')\nprint(\"Files in CurveFault_A:\", os.listdir(curve_fault_a_path))\nseis_file = os.path.join(curve_fault_a_path, 'seis2_1_0.npy')\nvel_file = os.path.join(curve_fault_a_path, 'vel2_1_0.npy')\n\nseis = load_npy(seis_file)\nvel = load_npy(vel_file)\n\nprint(\"Seismic Data shape:\", seis.shape)  \nprint(\"Velocity Data shape:\", vel.shape)\n\nvel = np.squeeze(vel)  \n\nprint(\"Velocity Shape after squeeze:\", vel.shape)\n\nsample_id = 0","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-20T19:34:47.678209Z","iopub.execute_input":"2025-05-20T19:34:47.67848Z","iopub.status.idle":"2025-05-20T19:34:47.929714Z","shell.execute_reply.started":"2025-05-20T19:34:47.678458Z","shell.execute_reply":"2025-05-20T19:34:47.928631Z"}},"outputs":[{"name":"stdout","text":"Files in CurveFault_A: ['seis4_1_0.npy', 'vel2_1_0.npy', 'seis2_1_0.npy', 'vel4_1_0.npy']\nSeismic Data shape: (500, 5, 1000, 70)\nVelocity Data shape: (500, 1, 70, 70)\nVelocity Shape after squeeze: (500, 70, 70)\n","output_type":"stream"}],"execution_count":21},{"cell_type":"markdown","source":"## Velocity Map","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(8, 6))\nplt.title(f\"Velocity Map (Ground Truth) - Sample {sample_id}\")\nsns.heatmap(vel[sample_id], cmap='viridis')\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-20T19:34:47.931182Z","iopub.execute_input":"2025-05-20T19:34:47.931558Z","iopub.status.idle":"2025-05-20T19:34:48.430626Z","shell.execute_reply.started":"2025-05-20T19:34:47.931519Z","shell.execute_reply":"2025-05-20T19:34:48.429587Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 800x600 with 2 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAn4AAAIQCAYAAAAfLmNKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACN3ElEQVR4nOzdeVxU1fsH8M+wDfsoKoKiqJEKrolLuIBboOKCuWQuuG+BpSQpZi6pYZaVpWlWLpW7RbkkiguaiqK4b7iRVKwugIKOwJzfH/6YryMMcIcZ2T7vXvf1/c499z7zzDADj+fcc65MCCFARERERBWeUWknQEREREQvBws/IiIiokqChR8RERFRJcHCj4iIiKiSYOFHREREVEmw8CMiIiKqJFj4EREREVUSLPyIiIiIKgkWfkRERESVBAs/kkwmk2HevHkGif33339DJpNh3bp1BolfHvXq1Qvjx48v7TReqnr16mHUqFGlnUah5s2bB5lMhrt37xZ6XHZ2NurUqYNvv/32JWVWfowaNQr16tUr7TSIKhUWfhVY3759YWlpiYcPH2o9ZtiwYTAzM8O9e/deYmbS/PnnnwYpNOvVqweZTIbu3bsX2P79999DJpNBJpPh9OnTen/+4jh27Bj27duHGTNm5GtLSUnBzJkz0axZM1hbW8Pc3BwuLi4YPXo0jh49WgrZvjyjRo1S/2wK2/RRPH7yySf4/fffdT7f1NQUQUFBWLRoEZ48eVLifF706NEjzJ07F02bNoWVlRWqVauGli1b4r333kNCQoLen6+sS0tLw4QJE1CjRg1YWVmhS5cuOHPmTGmnRVRmmJR2AmQ4w4YNw86dOxEWFgZ/f/987VlZWfjjjz/Qo0cPVKtWrRQyzM/Z2RmPHz+Gqampet+ff/6JFStWGKT4Mzc3x6FDh5CUlAQHBweNtg0bNsDc3Nwgf6yL67PPPkO3bt3g4uKisT86Ohq+vr54+PAhhgwZgkmTJkEulyMuLg6///471q1bh8OHD8PT07OUMjesiRMnahTscXFxmDNnDiZMmIBOnTqp97/yyislfq5PPvkEAwcOhJ+fn84xRo8ejZkzZ2Ljxo0YM2ZMiXPKk52dDU9PT1y7dg0jR47ElClT8OjRI1y+fBkbN25E//79UatWLb09X1mnUqng6+uL8+fPIzg4GNWrV8e3336Lzp07IyYmBq+++mppp0hU6lj4VWB9+/aFjY0NNm7cWGDh98cffyAzMxPDhg0rhewKJpPJYG5u/tKer0OHDjh16hS2bNmC9957T73/33//xV9//YX+/fvj119/fWn5PC8lJQW7d+/GqlWrNPY/ePAAfn5+MDExwblz59C4cWON9oULF2Lz5s2wsLAoNH5mZiasrKz0nvfL4OHhAQ8PD/Xj06dPY86cOfDw8MDw4cO1nldar7lKlSrw9vbGunXr9Fr4/f777zh79iw2bNiAoUOHarQ9efIET58+1dtzlQfbt2/H8ePHsW3bNgwcOBAAMHjwYDRs2BBz587Fxo0bSzlDotLHod4KzMLCAm+++SYOHDiAlJSUfO0bN26EjY0N+vbtC+DZEMnUqVNRp04dyOVyuLi44NNPP4VKpSryuc6ePYuePXvC1tYW1tbW6NatG06cOJHvuLS0NEybNg316tWDXC6Hk5MT/P391ddJvXiN36hRo7BixQoA0BjCE0KgXr166NevX77nePLkCRQKBSZOnFhk3ubm5njzzTfz/UHYtGkTqlatCh8fn3znXLhwAaNGjUKDBg1gbm4OBwcHjBkzJt9wed41YNeuXcPgwYNha2uLatWq4b333itWL+Lu3buRk5OTbyh61apVSExMxFdffZWv6AOevU9vv/022rRpky+XK1euYOjQoahatSo6duwIAMjJycGCBQvwyiuvQC6Xo169epg1axaUSmW+uAX1ur54Pd66desgk8lw7NgxBAUFqYfc+vfvj9TUVI1zhRBYuHAhnJycYGlpiS5duuDy5ctFvjfFkZfH4cOH8c4778De3h5OTk4AtF9blvc+Pf+aMzMzsX79eq3Dx2lpaRg1ahSqVKkChUKB0aNHIysrK1/sN954A0ePHsX9+/f18voA4NatWwCe/QPmRebm5rC1tVU/lvq5vX79OoYPHw6FQoEaNWrgo48+ghAC//zzD/r16wdbW1s4ODhg6dKlGudHRkZCJpNhy5YtmDVrFhwcHGBlZYW+ffvin3/+KfI1qVQqfPXVV2jSpAnMzc1Rs2ZNTJw4EQ8ePCjy3O3bt6NmzZp488031ftq1KiBwYMH448//sj3mSaqjNjjV8ENGzYM69evx9atWxEYGKjef//+fezduxdvv/02LCwskJWVBS8vL/z333+YOHEi6tati+PHjyMkJERdZGhz+fJldOrU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\n"},"metadata":{}}],"execution_count":22},{"cell_type":"markdown","source":"## Seismic Data","metadata":{}},{"cell_type":"code","source":"plt.figure(figsize=(10, 6))\nplt.title(f\"Seismic Data - Batch 0, Source 0\")\nplt.imshow(seis[0, 0], aspect='auto', cmap='seismic')\nplt.colorbar(label=\"Amplitude\")\nplt.xlabel(\"Receivers\")\nplt.ylabel(\"Timesteps\")\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-20T19:34:48.431531Z","iopub.execute_input":"2025-05-20T19:34:48.431943Z","iopub.status.idle":"2025-05-20T19:34:48.780597Z","shell.execute_reply.started":"2025-05-20T19:34:48.431917Z","shell.execute_reply":"2025-05-20T19:34:48.779578Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 1000x600 with 2 Axes>","image/png":"iVBORw0KGgoAAAANSUhEUgAAAzAAAAIjCAYAAADcPf6aAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAADK70lEQVR4nOydeZwUxf3+n7132WV3OXdFQPFERMWggVUTo6JojFFBjZEoKPEggAqJVxJBvFBi1HgEY2KQ/KLR4PU1Jh6EqGjEC+/7FoIsh7gs197z+2Oo2Zraqr67p2f2eb9e89qd7urq6p6e7nrm+dSn8hKJRAKEEEIIIYQQkgXkZ7oBhBBCCCGEEOIUChhCCCGEEEJI1kABQwghhBBCCMkaKGAIIYQQQgghWQMFDCGEEEIIISRroIAhhBBCCCGEZA0UMIQQQgghhJCsgQKGEEIIIYQQkjVQwBBCCCGEEEKyBgoYQkgXJk2ahJ133jny/ebl5eGKK66IfL8kGPLy8jBt2rRMN4MQQkiOQwFDSA7w9ttv46STTsJOO+2E0tJS7LjjjjjyyCNx6623ZrppGSMvLy/1KiwsRO/evTFy5EhccMEFeO+99zzXu3XrVlxxxRV45plngmusB+Tjy8vLQ3l5OYYNG4arr74aW7du9VTnv/71r4wLyLvuugt77bUXSktLsfvuu/u+hjdv3ozZs2dj+PDhKC8vR58+fTBixAhccMEF+OqrrwJqdTx5//33cfTRR6OiogK9e/fG6aefjnXr1mW6WYQQ4pu8RCKRyHQjCCHeeeGFF3DYYYdh8ODBmDhxImpra7Fy5Uq8+OKL+PTTT/HJJ5+4rrO1tRUdHR0oKSkJocVmmpqaUFhYiMLCQt915eXl4cgjj8QZZ5yBRCKBjRs34s0338SiRYuwZcsWXH/99Zg5c6bretevX49+/fph9uzZGe3sy8cHJDvqzz33HO69916cdNJJWLRokes6p02bhttvvx1eHwt5eXmYOnUqbrvtNk/b/+EPf8B5552H8ePHY+zYsXjuuefw//7f/8N1112HSy65xHV9ra2tGDVqFD744ANMnDgRI0aMwObNm/Huu+/iH//4BxYtWoTvfe97ntoad/73v/9h//33R1VVFc4//3xs3rwZN9xwAwYPHoyXX34ZxcXFmW4iIYR4xn8vgRCSUa655hpUVVXhlVdeQXV1ddq6tWvXeqqzqKgogJa5p7S0NND69thjD/zkJz9JW3bdddfhuOOOw89//nMMHToU3//+9wPdZ5Sox3feeeehpaUFDz30EJqamgI/n2Gybds2/OpXv8Kxxx6LBx54AABw9tlno6OjA1dddRXOOecc9OrVy1WdjzzyCF5//XXcc889OO2009LWNTU1oaWlJbD2O6GjowMtLS2RfC7XXnsttmzZguXLl2Pw4MEAgG9/+9s48sgjcffdd+Occ84JvQ2EEBIWDCEjJMv59NNPsffee3cRLwDQv3//Lsv++te/YuTIkSgrK0Pv3r1x6qmnYuXKlWlldGNg7rvvPowcORI9e/ZEZWUl9tlnH/zud79Lrb/77ruRl5eH559/Hueffz769euH6upqnHvuuWhpaUFDQwPOOOMM9OrVC7169cLFF1/c5Zd+3RiYVatWYfLkyRgwYABKSkowZMgQTJkyxXPns0+fPrjvvvtQWFiIa665JrW8paUFs2bNwsiRI1FVVYXy8nJ85zvfwdNPP50q88UXX6Bfv34AgDlz5qTCt0Sb33rrLUyaNAm77LILSktLUVtbi7POOgtff/21p7Z6oba2NhU2J3juuedw8sknY/DgwSgpKcGgQYMwY8YMbNu2LVVm0qRJuP322wGkh6cJOjo68Lvf/Q777LMPSktL0a9fPxx99NF49dVXu7ThkUcewfDhw1FSUoK9994bTzzxhG27n376aXz99df42c9+lrZ86tSp2LJlC/75z3+6PheffvopAODggw/usq60tBSVlZVpy/7zn//gO9/5DsrLy1FdXY3jjz8e77//floZ0/iwK664Iu18AZ1jgu655x7svffeKCkpSZ0LJ9d1Q0MDLrzwQgwaNAglJSXYbbfdcP3116Ojo8P22B988EH84Ac/SIkXABgzZgz22GMP/P3vf7fdnhBC4gwdGEKynJ122gnLli3DO++8g+HDh1uWveaaa3D55ZfjlFNOwU9/+lOsW7cOt956K7773e/i9ddf14ogAFi8eDF+/OMf44gjjsD1118PIBlf/9///hcXXHBBWtnp06ejtrYWc+bMwYsvvog777wT1dXVeOGFFzB48GBce+21+Ne//oXf/OY3GD58eCoESsdXX32Fb3/722hoaMA555yDoUOHYtWqVXjggQewdetWz2EwgwcPxqGHHoqnn34ajY2NqKysRGNjI/70pz/hxz/+Mc4++2xs2rQJd911F8aOHYuXX34ZI0aMQL9+/TB//nxMmTIFJ554IsaNGwcA2HfffVPn6bPPPsOZZ56J2tpavPvuu7jzzjvx7rvv4sUXX+zSwfVLU1MT1q9fDwDYsmUL/vvf/2LhwoU47bTT0gTMokWLsHXrVkyZMgV9+vTByy+/jFtvvRX/+9//UqFm5557Lr766issXrwY/+///b8u+5o8eTLuvvtuHHPMMfjpT3+KtrY2PPfcc3jxxRdxwAEHpMo9//zzeOihh/Czn/0MPXv2xC233ILx48djxYoV6NOnj/FYXn/9dQBIqwsARo4cifz8fLz++utd3DQ7dtppJwDAX/7yF/z617+2PP///ve/ccwxx2CXXXbBFVdcgW3btuHWW2/FwQcfjNdee81zUov//Oc/+Pvf/45p06ahb9++2HnnnR1d11u3bsWhhx6KVatW4dxzz8XgwYPxwgsv4LLLLsPq1atx8803G/e5atUqrF27tsu5BJIuzL/+9S9Px0IIIbEhQQjJap566qlEQUFBoqCgIFFXV5e4+OKLE08++WSipaUlrdwXX3yRKCgoSFxzzTVpy99+++1EYWFh2vKJEycmdtppp9T7Cy64IFFZWZloa2sztmPBggUJAImxY8cmOjo6Usvr6uoSeXl5ifPOOy+1rK2tLTFw4MDEoYcemlYHgMTs2bNT788444xEfn5+4pVXXumyP3kfOgAkpk6dalx/wQUXJAAk3nzzzVSbmpub08p88803iZqamsRZZ52VWrZu3bou7RRs3bq1y7K//e1vCQCJpUuXWrbXLQC0rxNOOCHR1NRk2665c+cm8vLyEl9++WVq2dSpUxO6x8J//vOfBIDE+eef32Wd/DkASBQXFyc++eST1LI333wzASBx6623Wh7P1KlTEwUFBdp1/fr1S5x66qmW2+vYunVrYs8990wASOy0006JSZMmJe66667EmjVrupQdMWJEon///omvv/46re35+fmJM844I7VM/W4IZs+e3eXcAUjk5+cn3n333bTlTq7rq666KlFeXp746KOP0tZfeumliYKCgsSKFSuMx/3KK68kACT+8pe/dFl30UUXJQB0uUYIISSbYAgZIVnOkUceiWXLluGHP/wh3nzzTcybNw9jx47FjjvuiEcffTRV7qGHHkJHRwdOOeUUrF+/PvWqra3F7rvvnhYqpVJdXY0tW7Zg8eLFtu2ZPHly2i/do0aNQiKRwOTJk1PLCgoKcMABB+Czzz4z1tPR0YFHHnkExx13nPaXZL9uRkVFBQBg06ZNqTYJR6ejowMbNmxAW1sbDjjgALz22muO6iwrK0v9L9yR0aNHA4DjOtxw/PHHY/HixVi8eDH+7//+D5dddhmeeOIJnHbaaWnheXK7tmzZgvXr1+Oggw5CIpFIOR9WPPjgg8jLy8Ps2bO7rFM/hzFjxmDXXXdNvd93331RWVlp+VkDyTEwJkettLQ0LdzNKWVlZXjppZdw0UUXAUiGOU6ePBk77LADpk+fjubmZgDA6tWr8cYbb2DSpEno3bt3WtuPPPJIX47FoYceimHDhqXeO72uFy1ahO985zvo1atX2vd1zJgxaG9vx9KlS437FOdKl4RDjL/xcj4JISQuMISMkBzgwAMPxEMPPYSWlha8+eabePjhh3HTTTfhpJNOwhtvvIFhw4bh448/RiKRwO67766tw2rg/s9+9jP8/e9/xzHHHIMdd9wRRx11FE455RQcffTRXcrKMfcAUFVVBQAYNGhQl+XffPONcZ/r1q1DY2OjbVicVzZv3gwA6NmzZ2rZwoUL8dvf/hYffPABWltbU8uHDBniqM4NGzZgzpw5uO+++7okUNi4caPltvX19Wnvq6qq0oSHjoEDB2LMmDGp9z/84Q/Rp08f/OIXv8Bjjz2G4447DgCwYsUKzJo1C48++miXc27XLiA5lmTAgAFpnXsT6ucPAL169bL8rIGk2DCNa2pqarI9Fyaqqqowb948zJs3D19++SWWLFmCG264Abfddhuqqqpw9dVX48svvwQA7Lnnnl2232uvvfDkk09iy5YtKC8vd71/9dpxel1//PHHeOutt1JjrlSsEnSIcyUEmkxTU1NaGUIIyUYoYAjJIYqLi3HggQfiwAMPxB577IEzzzwTixYtwuzZs9HR0YG8vDw8/vjjKCgo6LKtcCR09O/fH2+88QaefPJJPP7443j88cexYMECnHHGGVi4cGFaWV3dpuWJDGZxf+edd1BQUJDqYP71r3/FpEmTcMIJJ+Ciiy5C//79UVBQgLlz56YGg9txyimn4IUXXsBFF12EESNGoKKiAh0dHTj66KNtB17vsMMOae8XLFiASZMmuT6uI444AgCwdOlSHHfccWhvb8eRRx6JDRs24JJLLsHQoUNRXl6OVatWYdKkSY4GhLvB9PnbfdY77LAD2tvbsXbt2rTkEy0tLfj6668xYMAA323baaedcNZZZ+HEE0/ELrvsgnvuuQdXX321qzpMzl97e7t2uVeh0NHRgSOPPBIXX3yxdv0ee+xh3FZcS6tXr+6ybvXq1ejdu3fkKdIJISRIKGAIyVFEeIroxOy6665IJBIYMmSIZefHRHFxMY477jgcd9xx6OjowM9+9jP84Q9/wOWXX47ddtst0LYDQL9+/VBZWYl33nkn8LpXrFiBZ599FnV1dSkH5oEHHsAuu+yChx56KK2TqoZNmTqw33zzDZYsWYI5c+Zg1qxZqeUff/yxozap4Xl77723o+1U2traAHQ6TG+//TY++ugjLFy4MC1hgi4c0HRsu+66K5588kls2LDBkQvjhREjRgAAXn311bTU1q+++io6OjpS64OgV69e2HXXXVPXlhjs/+GHH3Yp+8EHH6Bv374p96VXr15oaGjoUk64OHY4va533XVXbN68Oc1hc8qOO+6Ifv36aTPEiYQUhBCSzXAMDCFZztNPP639dVvE7YuwmHHjxqGgoABz5szpUj6RSFim+lXX5efnpzJv6cJUgiA/Px8nnHAC/vGPf2g7Yl7dmw0bNuDHP/4x2tvb8atf/Sq1XDgHcr0vvfQSli1blrZ9jx49AKBLJ1a3PQDLbFEyY8aMSXupjoxT/vGPfwAA9ttvP2O7EolEWgpsgeikq8c2fvx4JBIJzJkzp8s2Qblohx9+OHr37o358+enLZ8/fz569OiBY4891nWdb775ZipLm8yXX36J9957L/Xd2GGHHTBixAgsXLgw7djfeecdPPXUU2mCatddd8XGjRvx1ltvpZatXr0aDz/8sKM2Ob2uTznlFCxbtgxPPvlklzINDQ0poWpi/PjxeOyxx9JSpC9ZsgQfffQRTj75ZEdtJYSQuEIHhpAsZ/r06di6dStOPPFEDB06FC0tLXjhhRdw//33Y+edd8aZZ54JINnxuvrqq3HZZZfhiy++wAknnICePXvi888/x8MPP4xzzjkHv/jFL7T7+OlPf4oNGzbg8MMPx8CBA/Hll1/i1ltvxYgRI7DXXnuFdmzXXnstnnrqKRx66KE455xzsNdee2H16tVYtGgRnn/+eWPaZ8FHH32Ev/71r0gkEmhsbMSbb76JRYsWYfPmzbjxxhvTxvD84Ac/wEMPPYQTTzwRxx57LD7//HPccccdGDZsWMrNAJIhQcOGDcP999+PPfbYA71798bw4cMxfPhwfPe738W8efPQ2tqKHXfcEU899RQ+//zzsE5P6vgAYOvWrXjxxRexcOFC7Lbbbjj99NMBAEOHDsWuu+6KX/ziF1i1ahUqKyvx4IMPasekjBw5EgBw/vnnY+zYsSgoKMCpp56Kww47DKeffjpuueUWfPzxx6mQuOeeew6HHXYYpk2b5vtYysrKcNVVV2Hq1Kk4+eSTMXbsWDz33HP461//imuuuSbN+XnmmWdw2GGHYfbs2V3mDZJZvHgxZs+ejR/+8IcYPXo0Kioq8Nlnn+HPf/4zmpub07b9zW9+g2OOOQZ1dXWYPHlyKo1yVVVVWrlTTz0Vl1xyCU488UScf/752Lp1K+bPn4899tjDcaIGJ9f1RRddhEcffRQ/+MEPMGnSJIwcORJbtmzB22+/jQceeABffPEF+vbta9zHL3/5SyxatAiHHXYYLrjgAmzevBm/+c1vsM8++6TuCYQQkrVEnPWMEBIwjz/+eOKss85KDB06NFFRUZEoLi5O7Lbbbonp06dr08U++OCDiUMOOSRRXl6eKC8vTwwdOjQxderUxIcffpgqo6aKfeCBBxJHHXVUon///oni4uLE4MGDE+eee25i9erVqTIijbKaGlakl123bl3a8okTJybKy8vTlkGTnvjLL79MnHHGGYl+/folSkpKErvsskti6tSpXVIeq0BKLZyfn5+orq5O7L///okLLrigS1rbRCKZvvbaa69N7LTTTomSkpLE/vvvn3jssce0aXNfeOGFxMiRIxPFxcVpbf7f//6XOPHEExPV1dWJqqqqxMknn5z46quvjGmX/QAlfXJBQUFi4MCBiXPOOafL5/7ee+8lxowZk6ioqEj07ds3cfbZZ6fSGy9YsCBVrq2tLTF9+vREv379Enl5eWlpgdva2hK/+c1vEkOHDk0UFxcn+vXrlzjmmGMSy5cvT2uTLnX1TjvtlJg4caKj47rzzjsTe+65Z6K4uDix6667Jm666aYuKbP/8Y9/JAAk7rjjDsu6Pvvss8SsWbMSo0ePTvTv3z9RWFiY6NevX+LYY49N/Oc//+lS/t///nfi4IMPTpSVlSUqKysTxx13XOK9997rUu6pp55KDB8+PFFcXJzYc889E3/961+NaZRNqbydXNebNm1KXHbZZYnddtstUVxcnOjbt2/ioIMOStxwww1d0qTreOeddxJHHXVUokePHonq6urEhAkTEvX19bbbEUJI3MlLJDI4ipYQQghxycUXX4y//e1v+OSTTzgYnRBCuiEcA0MIISSrePrpp3H55ZdTvBBCSDeFDgwhhBBCCCEka6ADQwghhBBCCMkackbA3H777dh5551RWlqKUaNG4eWXX850kwghhBBCCCEBkxMC5v7778fMmTMxe/ZsvPbaa9hvv/0wduxYrF27NtNNI4QQQgghhARIToyBGTVqFA488EDcdtttAICOjg4MGjQI06dPx6WXXprh1hFCCCGEEEKCIusnsmxpacHy5ctx2WWXpZbl5+djzJgxXWbQFjQ3N6fNHt7R0YENGzagT58+yMvLC73NhBBCCCHEHYlEAps2bcKAAQOQnx+vIKKmpia0tLSEVn9xcTFKS0tDqz/byHoBs379erS3t6OmpiZteU1NDT744APtNnPnzsWcOXOiaB4hhBBCCAmQlStXYuDAgZluRoqmpib0KyvD5hD3UVtbi88//5wiZjtZL2C8cNlll2HmzJmp9xs3bsTgwYNxyikrUVRUmcGWEUIIIYQQHa2tjfj73wehZ8+emW5KGi0tLdgMYAaAMGanagZwU309WlpaKGC2k/UCpm/fvigoKMCaNWvSlq9Zswa1tbXabUpKSrQToBUVVaK4mAKGEEIIISSuxDXcvwxAGPIiXsFy8SDrz0lxcTFGjhyJJUuWpJZ1dHRgyZIlqKury2DLCCGEEEJIdyE/xJdXrrvuOuTl5eHCCy9MLWtqasLUqVPRp08fVFRUYPz48V2MgLiT9QIGAGbOnIk//vGPWLhwId5//31MmTIFW7ZswZlnnumqnrY284sQQgghhJBs4ZVXXsEf/vAH7LvvvmnLZ8yYgX/84x9YtGgRnn32WXz11VcYN25chlrpjawPIQOAH/3oR1i3bh1mzZqF+vp6jBgxAk888USXgf1+kEVMYU6cNUIIIYQQEhR+3RKret2yefNmTJgwAX/84x9x9dVXp5Zv3LgRd911F+69914cfvjhAIAFCxZgr732wosvvojRo0cH1OpwyQkHBgCmTZuGL7/8Es3NzXjppZcwatSo0PZFZ4YQQgghhERJY2Nj2kueEkRl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gIULF+Luu+/GrFmzQmuTEzI6Bua4447DNddcg8GDB2PvvffG66+/jhtvvBFnnXUWACAvLw8XXnghrr76auy+++4YMmQILr/8cgwYMAAnnHACAGCvvfbC0UcfjbPPPht33HEHWltbMW3aNJx66qnMQEYIIYQQQogBMSb87rvv1q5/6qmn8N577+Hf//43ampqMGLECFx11VW45JJLcMUVV6C4uDjC1naSUQFz66234vLLL8fPfvYzrF27FgMGDMC5556bpuouvvhibNmyBeeccw4aGhpwyCGH4IknnkBpaWmqzD333INp06bhiCOOQH5+PsaPH49bbrklE4dECCGEEEK6JeGmUVaz5paUlKCkpCSE/XWybNky7LPPPmkJtcaOHYspU6bg3Xffxf777x/q/k1kVMD07NkTN998M26++WZjmby8PFx55ZW48sorjWV69+6Ne++9N4QWEkIIIYQQknkGDRqU9n727Nm44oorQt1nfX29NhuwWJcpMipgCCGEEEIIyQ3CdWBWrlyZlnjK5L5ceumluP766y1rfP/99zF06NDgmhgxFDCEEEIIIYTEHKeZc3/+859j0qRJlmV22WUXR/usra3Fyy+/nLZMZAc2ZfuNAgoYQgghhBBCfBOuA+OUfv36oV+/foHsua6uDtdccw3Wrl2bmjh+8eLFqKysxLBhwwLZhxcoYAghhBBCCOmGrFixAhs2bMCKFSvQ3t6ON954AwCw2267oaKiAkcddRSGDRuG008/HfPmzUN9fT1+/etfY+rUqaEnELCCAoYQQgghhBDfJAB0hFRvOMyaNQsLFy5MvRdZxZ5++ml873vfQ0FBAR577DFMmTIFdXV1KC8vx8SJEy2Ta0UBBQwhhBBCCCG+iUcImRvuvvtu4xwwgp122gn/+te/QmuDF/Iz3QBCCCGEEEIIcQodGEIIIYQQQnyTfQ5MtkIHhhBCCCGEEJI10IEhhBBCCCHEN3RgooIODCGEEEIIISRroANDCCGEEEKIb+jARAUdGEIIIYQQQkjWQAeGEEIIIYQQ33QgnIksw6gzu6GAIYQQQgghxDcMIYsKhpARQgghhBBCsgY6MIQQQgghhPimA+G4JQwhU6EDQwghhBBCCMka6MAQQgghhBDiG46BiQo6MIQQQgghhJCsgQ4MIYQQQgghvmEa5aigA0MIIYQQQgjJGujAEEII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ppVpamrC1KlT0adPH1RUVGD8+PFYs2ZNhlqcfcyfPx/77rtvahK6uro6PP7446n1PL/Bct111yEvLw8XXnhhahnPsT+uuOIK5OXlpb2GDh2aWs/zGwyrVq3CT37yE/Tp0wdlZWXYZ5998Oqrr6bW83lHSLBQwCjcf//9mDlzJmbPno3XXnsN++23H8aOHYu1a9dmumlZx5YtW7Dffvvh9ttv166fN28ebrnlFtxxxx146aWXUF5ejrFjx6KpqSnilmYnzz77LKZOnYoXX3wRixcvRmtrK4466ihs2bIlVWbGjBn4xz/+gUWLFuHZZ5/FV199hXHjxmWw1dnFwIEDcd1112H58uV49dVXcfjhh+P444/Hu+++C4DnN0heeeUV/OEPf8C+++6btpzn2D977703Vq9enXo9//zzqXU8v/755ptvcPDBB6OoqAiPP/443nvvPfz2t79Fr169UmX4vCMkYBIkjW9/+9uJqVOnpt63t7cnBgwYkJg7d24GW5X9AEg8/PDDqfcdHR2J2traxG9+85vUsoaGhkRJSUnib3/7WwZamP2sXbs2ASDx7LPPJhKJ5PksKipKLFq0KFXm/fffTwBILFu2LFPNzHp69eqV+NOf/sTzGyCbNm1K7L777onFixcnDj300MQFF1yQSCR4DQfB7NmzE/vtt592Hc9vMFxyySWJQw45xLiezztCgocOjERLSwuWL1+OMWPGpJbl5+djzJgxWLZsWQZblnt8/vnnqK+vTzvXVVVVGDVqFM+1RzZu3AgA6N27NwBg+fLlaG1tTTvHQ4cOxeDBg3mOPdDe3o777rsPW7ZsQV1dHc9vgEydOhXHHnts2rkEeA0Hxccff4wBAwZgl112wYQJE7BixQoAPL9B8eijj+KAAw7AySefjP79+2P//ffHH//4x9R6Pu8ICR4KGIn169ejvb0dNTU1actrampQX1+foVblJuJ88lwHQ0dHBy688EIcfPDBGD58OIDkOS4uLkZ1dXVaWZ5jd7z99tuoqKhASUkJzjvvPDz88MMYNmwYz29A3HfffXjttdcwd+7cLut4jv0zatQo3H333XjiiScwf/58fP755/jOd76DTZs28fwGxGeffYb58+dj9913x5NPPokpU6bg/PPPx8KFCwHweUdIGBRmugGEEP9MnToV7/z/9u4+pqmzDQP4dWhpKWRtFTvK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\n"},"metadata":{}}],"execution_count":23},{"cell_type":"markdown","source":"# Explore All Families","metadata":{}},{"cell_type":"code","source":"families = os.listdir(TRAIN_DIR)\n\nfor fam in families:\n    explore_family(fam)","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","trusted":true,"execution":{"iopub.status.busy":"2025-05-20T19:34:48.781438Z","iopub.execute_input":"2025-05-20T19:34:48.781695Z","iopub.status.idle":"2025-05-20T19:34:49.717088Z","shell.execute_reply.started":"2025-05-20T19:34:48.781672Z","shell.execute_reply":"2025-05-20T19:34:49.716271Z"}},"outputs":[{"name":"stdout","text":"\nExploring FlatFault_A Dataset\nAvailable Files: ['seis4_1_0.npy', 'vel2_1_0.npy', 'seis2_1_0.npy', 'vel4_1_0.npy']\nFound 2 Seismic files\nFound 2 Velocity files\nSeismic Shape: (500, 5, 1000, 70)\nVelocity Shape: (500, 70, 70)\n\nExploring FlatVel_A Dataset\nAvailable Files: ['model', 'data']\nFound 0 Seismic files\nFound 0 Velocity files\nSkipping... No seismic or velocity files found.\n\nExploring CurveVel_A Dataset\nAvailable Files: ['model', 'data']\nFound 0 Seismic files\nFound 0 Velocity files\nSkipping... No seismic or velocity files found.\n\nExploring FlatFault_B Dataset\nAvailable Files: ['seis6_1_0.npy', 'seis8_1_0.npy', 'vel8_1_0.npy', 'vel6_1_0.npy']\nFound 2 Seismic files\nFound 2 Velocity files\nSeismic Shape: (500, 5, 1000, 70)\nVelocity Shape: (500, 70, 70)\n\nExploring Style_B Dataset\nAvailable Files: ['model', 'data']\nFound 0 Seismic files\nFound 0 Velocity files\nSkipping... No seismic or velocity files found.\n\nExploring CurveFault_B Dataset\nAvailable Files: ['seis6_1_0.npy', 'seis8_1_0.npy', 'vel8_1_0.npy', 'vel6_1_0.npy']\nFound 2 Seismic files\nFound 2 Velocity files\nSeismic Shape: (500, 5, 1000, 70)\nVelocity Shape: (500, 70, 70)\n\nExploring FlatVel_B Dataset\nAvailable Files: ['model', 'data']\nFound 0 Seismic files\nFound 0 Velocity files\nSkipping... No seismic or velocity files found.\n\nExploring Style_A Dataset\nAvailable Files: ['model', 'data']\nFound 0 Seismic files\nFound 0 Velocity files\nSkipping... No seismic or velocity files found.\n\nExploring CurveVel_B Dataset\nAvailable Files: ['model', 'data']\nFound 0 Seismic files\nFound 0 Velocity files\nSkipping... No seismic or velocity files found.\n\nExploring CurveFault_A Dataset\nAvailable Files: ['seis4_1_0.npy', 'vel2_1_0.npy', 'seis2_1_0.npy', 'vel4_1_0.npy']\nFound 2 Seismic files\nFound 2 Velocity files\nSeismic Shape: (500, 5, 1000, 70)\nVelocity Shape: (500, 70, 70)\n","output_type":"stream"}],"execution_count":24},{"cell_type":"markdown","source":"# Test Set Exploration=","metadata":{}},{"cell_type":"code","source":"test_files = sorted(os.listdir(TEST_DIR))\n\nprint(\"\\nSample Test File:\", test_files[0])\nsample_test = load_npy(os.path.join(TEST_DIR, test_files[0]))\nprint(\"Test Sample Shape:\", sample_test.shape)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-20T19:34:49.71795Z","iopub.execute_input":"2025-05-20T19:34:49.718295Z","iopub.status.idle":"2025-05-20T19:34:49.774063Z","shell.execute_reply.started":"2025-05-20T19:34:49.718228Z","shell.execute_reply":"2025-05-20T19:34:49.773297Z"}},"outputs":[{"name":"stdout","text":"\nSample Test File: 000039dca2.npy\nTest Sample Shape: (5, 1000, 70)\n","output_type":"stream"}],"execution_count":25},{"cell_type":"code","source":"plt.figure(figsize=(10, 6))\nplt.title(\"Test Seismic Sample Visualization\")\n# Showing full 2D seismic data → shape (Receivers, Timesteps)\nplt.imshow(sample_test[0], aspect='auto', cmap='seismic')  \nplt.colorbar()\nplt.xlabel(\"Timesteps\")\nplt.ylabel(\"Receivers\")\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-20T19:34:49.776293Z","iopub.execute_input":"2025-05-20T19:34:49.776634Z","iopub.status.idle":"2025-05-20T19:34:50.119157Z","shell.execute_reply.started":"2025-05-20T19:34:49.776596Z","shell.execute_reply":"2025-05-20T19:34:50.118205Z"}},"outputs":[{"output_type":"display_data","data":{"text/plain":"<Figure size 1000x600 with 2 Axes>","image/png":"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fSJq3RhwELUghx9+ON59910MHTrU2HwrGzJkCIYMGYK77roLS5cuxbhx4/Dcc8/hd7/7XcxWmB40aBAAYNeuXf5rBHwzVxUVFYV9vKSkJIwYMQIjRozAgw8+iLvvvhu33HILVq5cGdHxnDj88MMdz+DkRGpqKo477jh8++23/pKkl156CePHj8cDDzzg36+qqsq1qXNFpkn273//29iwD/jug2VZ6NWrF4488siIzz1u3Djcdttt+Oyzz7B06VL07t0bJ554oqPn2v3Oinfs1XumvtN/4MABrFixArNnzw6aLEB3T5y655578Morr+Dll1/Wrq3i9Ocbzr+7Hj164LPPPkNDQ0NQlkMsKKmbMY6IqDmwpIqoBbnwwgtRX1+PP/3pT4221dXV+Qc3Bw4caPSu5oABAwDAX6IiZkVyOuB9//33tbX1oifgqKOOAgCMGjUKOTk5uPvuu7X7792713iO/fv3N3pMvW43jBkzBp9++imWLVvWaJvdu8PffvstduzY0ejxkpISrFmzBm3btvVnnZKTkxsda968edp352PhlVdewY8//uj/fv369Vi3bh3OOuss43NGjx6N5ORkzJ49u9G1WpbleIVwkc2YOXMmNm/eHDK7ATj7ne3RoweSk5Px3nvvBe33+OOPB30v3ulXjzd37lxH16969913ceutt+KWW27Bueeeq93H6c83MzMTgLN/d7/85S9RXFyM559/3v9YXV0d5s2bh6ysLJx22mnhvRAiIpcww0HUgpx22mm46qqrMGfOHGzevBkjR45Eamoqvv32W7z44ot4+OGHcf7552Px4sV4/PHHcd555+Hwww9HeXk5nnrqKeTk5OCXv/wlAF/5Ut++ffH888/jyCOPRLt27dCvXz9jL8O9996LjRs3YvTo0f7pczdt2oSnn34a7dq1w7Rp0wAAOTk5mD9/Pi699FKccMIJGDt2LDp27IgdO3bgjTfewNChQ/Hoo49qz3HHHXfgvffew9lnn40ePXpgz549ePzxx9G1a1cMGzYs9jf0Z9dffz1eeuklXHDBBbj88ssxcOBA7N+/H//4xz+wYMEC9O/fX/u8Tz/9FL/97W9x1lln4ZRTTkG7du3w448/YvHixfjpp58wd+5c/+D3V7/6FZ555hnk5uaib9++WLNmDd59992gtTpi6YgjjsCwYcMwefJkVFdXY+7cuWjfvj3++Mc/Gp9z+OGH484778RNN92E7du349xzz0V2dja2bduGZcuW4corr8T//u//hjx3r169cPLJJ+PVV18FAEcBh5Pf2dzcXFxwwQWYN28ePB4PDj/8cLz++uuNektycnJw6qmn4r777kNtbS0OO+wwvPPOO9i2bVvI69C5+OKL0bFjR/Tu3Rt/+9vfgrb9z//8D/Lz8x3/fAcMGIDk5GTce++9KC0tRXp6Os444wztWjZXXnklnnjiCUyYMAEbN25Ez5498dJLL+HDDz/E3LlzkZ2dHdHrISKKNQYcRC3MggULMHDgQDzxxBO4+eabkZKSgp49e+KSSy7xL0B32mmnYf369Xjuueewe/du5Obm4qSTTsKSJUv8jbMA8H//93+4+uqrMX36dNTU1GDWrFnGgOPmm2/G0qVLsXr1aixZsgQHDx709yzcdtttQcf97W9/iy5duuCee+7Bn//8Z1RXV+Owww7DKaecgokTJxpf229+8xts374df/3rX7Fv3z506NABp512GmbPnu1vmnZDVlYW3n//fcyaNQvLli3D4sWL0alTJ4wYMQJdu3Y1Pu/UU0/Fn/70J7z55pt48MEHsXfvXmRnZ+P444/HvffeizFjxvj3ffjhh5GcnIwlS5agqqoKQ4cOxbvvvotRo0a58pouu+wyJCUlYe7cudizZw9OOukkPProo+jcubPt82688UYceeSReOihhzB79mwAvkb1kSNH+hftc2LcuHH46KOPcNJJJ+GII44Iub/T39l58+ahtrYWCxYsQHp6Oi688EL/WiSypUuX4uqrr8Zjjz0Gy7IwcuRIvPnmm+jSpYvj1yCIxR/Hjx/faNvKlSuRn5/v+OdbUFCABQsWYM6cOZg0aRLq6+uxcuVKbcCRkZGBVatW4cYbb8TixYtRVlaGo446CgsXLmy0cCURUXPyWOwWIyJqNbZv345evXrhz3/+s6NsBBERUbTYw0FERERERK5hwEFERERERK5hwEFERERERK5pMQHHY489hp49e8Lr9WLw4MFYv359c18SEVHc6dmzJyzLYv8GERE1mRYRcDz//POYMWMGZs2ahU2bNqF///4YNWpUo6kQiYiIiIhai3vuuQcej8c/NT3gW3R0ypQpaN++PbKysjBmzBjs3r3b1etoEQHHgw8+iCuuuAITJ05E3759sWDBArRp0wZ/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2lhOWxvNNUS6b3O+FnJHRD+6Tz75BEOHDm30+JAhQzB16tSoL4qIiIiIYiPUQN2td9AjyYIk8rv5zHCYRRRweDwelJeXN3q8tLTUv+o4EREREcW/pghInPZt2F2LZUV/HdQ8IiqpOvXUUzFnzpyg4KK+vh5z5szBsGHDYnZxRERERNS83CxxaknlUmJa3Fh/tIT38iP68d5777049dRTcdRRR+GUU04BALz//vsoKyvDv/71r5heIBERERHFp1iuTRIq6GhoCO94FD8iynD07dsXn332GS688ELs2bMH5eXluOyyy/DNN9+gX79+sb5GIiIiIkowra3h243shlt9IU0t4h9/ly5dcPfdd8fyWoiIiIiohWqJK7WTMxFlOABfCdUll1yCk08+GT/++CMA4JlnnsEHH3wQs4sjIiIiopavJWRDmOEwiyjg+Pvf/45Ro0YhIyMDmzZtQnV1NQDfLFXMehARERFRNBJxHQ4GHGYRBRx33nknFixYgKeeegqpqan+x4cOHYpNmzbF7OKIiIiIiCixRRQrbtmyBaeeemqjx3Nzc1FSUhLtNRERERERJRQu/GcWUYajoKAAW7dubfT4Bx98gF/84hdRXxQREREREbUMEWU4rrjiClx77bX461//Co/Hg59++glr1qzBddddh5kzZ8b6GomIiIiI4ppY+M+N4ya6iAKOG2+8EQ0NDRgxYgQOHjyIU089Fenp6bj++uvxu9/9LtbXSERERERECSqikiqPx4NbbrkF+/fvxxdffIG1a9di7969yM3NRa9evWJ9jUREREREcY2zVJmFFXBUV1fjpptuwqBBgzB06FD885//RN++ffHll1/iqKOOwsMPP4zp06e7da1ERERERJRgwiqpmjlzJp544gkUFRXho48+wgUXXICJEydi7dq1eOCBB3DBBRcgOTnZrWslIiIiIopLnKXKLKyA48UXX8TTTz+N3/zmN/jiiy9w3HHHoa6uDp9++ik8Ho9b10hEREREFNcYcJiFVVL1ww8/YODAgQCAfv36IT09HdOnT2ewQUREREREWmFlOOrr65GWlhZ4ckoKsrKyYn5RRERERESJhNPimoUVcFiWhQkTJiA9PR0AUFVVhd///vfIzMwM2u/ll1+O3RUSEREREVHCCivgGD9+fND3l1xySUwvhoiIiIgoEbGHwyysgGPhwoVuXQcREREREbVAEa00TkREREREAcxwmEW00jgREREREZETzHAQEREREUWJGQ4zBhxERERERFFiwGHGkioiIiIiInINMxxERERERFHiwn9mzZ7h+PHHH3HJJZegffv2yMjIwLHHHouPP/7Yv92yLMycOROdO3dGRkYGioqK8O233wYdY//+/Rg3bhxycnKQl5eHSZMmoaKioqlfChERERERKZo14Dhw4ACGDh2K1NRUvPnmm/jqq6/wwAMPoG3btv597rvvPjzyyCNYsGAB1q1bh8zMTIwaNQpVVVX+fcaNG4cvv/wSy5cvx+uvv4733nsPV155ZXO8JCIiIiJqhUQPhxsfia5ZS6ruvfdedOvWLWhBwV69evm/tiwLc+fOxa233opzzjkHAPD0008jPz8fr7zyCsaOHYuvv/4ab731FjZs2IBBgwYBAObNm4df/vKXuP/++9GlS5emfVFEREREROTXrBmOf/zjHxg0aBAuuOACdOrUCccffzyeeuop//Zt27ahuLgYRUVF/sdyc3MxePBgrFmzBgCwZs0a5OXl+YMNACgqKkJSUhLWrVunPW91dTXKysqCPoiIiIiIIsUMh1mzBhz/+c9/MH/+fPTu3Rtvv/02Jk+ejGuuuQaLFy8GABQXFwMA8vPzg56Xn5/v31ZcXIxOnToFbU9JSUG7du38+6jmzJmD3Nxc/0e3bt1i/dKIiIiIiAjNXFLV0NCAQYMG4e677wYAHH/88fjiiy+wYMECjB8/3rXz3nTTTZgxY4b/+7KyMgYdRERERBQxrsNh1qwBR+fOndG3b9+gx44++mj8/e9/BwAUFBQAAHbv3o3OnTv799m9ezcGDBjg32fPnj1Bx6irq8P+/fv9z1elp6cjPT09Vi+DiIiIiFo5Totr1qwlVUOHDsWWLVuCHvv3v/+NHj16APA1kBcUFGDFihX+7WVlZVi3bh0KCwsBAIWFhSgpKcHGjRv9+/zrX/9CQ0MDBg8e3ASvgoiIiIiITJo1wzF9+nScfPLJuPvuu3HhhRdi/fr1ePLJJ/Hkk08CADweD6ZNm4Y777wTvXv3Rq9evXDbbbehS5cuOPfccwH4MiJnnnkmrrjiCixYsAC1tbWYOnUqxo4dyxmqiIiIiKhJsKTKrFkDjhNPPBHLli3DTTfdhDvuuAO9evXC3LlzMW7cOP8+f/zjH1FZWYkrr7wSJSUlGDZsGN566y14vV7/PkuWLMHUqVMxYsQIJCUlYcyYMXjkkUea4yUREREREZHEY1mW1dwX0dzKysqQm5uLceNKkZaW09yXQ0RERESKmpoyLFmSi9LSUuTkxM94TYwjZ88uhdcb++uqqirDrFnx97rD0aw9HERERERE1LI1a0kVEREREVFLwB4OM2Y4iIiIiIjINcxwEBERERFFiRkOMwYcRERERERR4sJ/ZiypIiIiIiIi1zDDQUREREQUpbo6IDnZneMmOmY4iIiIiIjINcxwEBERERFFiRkOM2Y4iIiIiIjINcxwEBERERFFiRkOM2Y4iIiIiIjINcxwEBERERFFietwmDHgICIiIiKKUl0dkORC7RBLqoiIiIiIKK489thj6NmzJ7xeLwYPHoz169c36/Uw4CAiIiIiilJdnXsf4Xj++ecxY8YMzJo1C5s2bUL//v0xatQo7Nmzx50X7gADDiIiIiKiFuLBBx/EFVdcgYkTJ6Jv375YsGAB2rRpg7/+9a/Ndk3s4SAiIiIiipLbPRxlZWVBj6enpyM9PT3osZqaGmzcuBE33XST/7GkpCQUFRVhzZo1sb84h5jhICIiIiKKc926dUNubq7/Y86cOY322bdvH+rr65Gfnx/0eH5+PoqLi5vqUhthhoOIiIiIKEpuZzh27tyJnJwc/+NqdiOeMeAgIiIiIopzOTk5QQGHTocOHZCcnIzdu3cHPb57924UFBS4eXm2WFJFRERERBQlsfBfrD/CWfgvLS0NAwcOxIoVK/yPNTQ0YMWKFSgsLHThVTvDDAcRERERUQsxY8YMjB8/HoMGDcJJJ52EuXPnorKyEhMnTmy2a2LAQUREREQUpbo6wONx57jhuOiii7B3717MnDkTxcXFGDBgAN56661GjeRNiQEHEREREVGU4iXgAICpU6di6tSpsb+YCLGHg4iIiIiIXMMMBxERERFRlOIpwxFvmOEgIiIiIiLXMMNBRERERBQlZjjMmOEgIiIiIiLXMMNBRERERBSl+np3MhzhLPwXr5jhICIiIiIi1zDDQUREREQUJbd6LVpCDwcDDiIiIiKiKDHgMGNJFRERERERuYYZDiIiIiKiKDHDYcYMBxERERERuYYZDiIiIiKiKLk1fS2nxSUiIiIiIrLBDAcRERERUZTq6gDLiv1xmeEgIiIiIiKywQwHEREREVGUmOEwY8BBRERERBQlBhxmLKkiIiIiIiLXMMNBRERERBQlZjjMmOEgIiIiIiLXMMNBRERERBSl+np3MhwNDbE/ZlNjhoOIiIiIiFzDDAcRERERUZTq6oAkF97KZ4aDiIiIiIjIBjMcRERERERRYobDjAEHEREREVGUGHCYsaSKiIiIiIhcwwwHEREREVGU6uvdyUa4MdVuU2OGg4iIiIiIXMMMBxERERFRlOrqAI8n9sdlhoOIiIiIiMgGMxxERERERFFihsOMGQ4iIiIiInINMxxERERERFFihsOMAQcRERERUZQYcJixpIqIiIiIiFzDDAcRERERUdQaYFkurPwHN47ZtJjhICIiIiIi1zDDQUREREQUtfqfP9w4bmJjhoOIiIiIiFzDDAcRERERUdSY4TBhhoOIiIiIiFzDDAcRERERUdSY4TBhwEFEREREFLUGuDOFLafFJSIiIiIiMmKGg4iIiIgoaiypMmGGg4iIiIiIXMMMBxERERFR1BrgTjaCPRxERERERERGzHAQEREREUWNPRwmzHAQEREREZFrmOEgIiIiIooaMxwmDDiIiIiIiKLGhf9MWFJFRERERESuYYaDiIiIiChqLKkyYYaDiIiIiIhc06wBR319PW677Tb06tULGRkZOPzww/GnP/0JlmX597EsCzNnzkTnzp2RkZGBoqIifPvtt0HH2b9/P8aNG4ecnBzk5eVh0qRJqKioaOqXQ0REREStVr2LH4mtWQOOe++9F/Pnz8ejjz6Kr7/+Gvfeey/uu+8+zJs3z7/Pfffdh0ceeQQLFizAunXrkJmZiVGjRqGqqsq/z7hx4/Dll19i+fLleP311/Hee+/hyiuvbI6XREREREREkmbt4fjoo49wzjnn4OyzzwYA9OzZE88++yzWr18PwJfdmDt3Lm699Vacc845AICnn34a+fn5eOWVVzB27Fh8/fXXeOutt7BhwwYMGjQIADBv3jz88pe/xP33348uXbo0z4sjIiIiolaEPRwmzZrhOPnkk7FixQr8+9//BgB8+umn+OCDD3DWWWcBALZt24bi4mIUFRX5n5Obm4vBgwdjzZo1AIA1a9YgLy/PH2wAQFFREZKSkrBu3Trteaurq1FWVhb0QUREREREsdesGY4bb7wRZWVl6NOnD5KTk1FfX4+77roL48aNAwAUFxcDAPLz84Oel5+f799WXFyMTp06BW1PSUlBu3bt/Puo5syZg9mzZ8f65RARERFRq9UAd7IRXIcjKi+88AKWLFmCpUuXYtOmTVi8eDHuv/9+LF682NXz3nTTTSgtLfV/7Ny509XzEREREVFL1+DiR2Jr1gzH9ddfjxtvvBFjx44FABx77LH4/vvvMWfOHIwfPx4FBQUAgN27d6Nz587+5+3evRsDBgwAABQUFGDPnj1Bx62rq8P+/fv9z1elp6cjPT3dhVdERERERESyZs1wHDx4EElJwZeQnJyMhgZfJNerVy8UFBRgxYoV/u1lZWVYt24dCgsLAQCFhYUoKSnBxo0b/fv861//QkNDAwYPHtwEr4KIiIiIiNPimjRrwPHrX/8ad911F9544w1s374dy5Ytw4MPPojzzjsPAODxeDBt2jTceeed+Mc//oHPP/8cl112Gbp06YJzzz0XAHD00UfjzDPPxBVXXIH169fjww8/xNSpUzF27FjOUEVEREREZHDXXXfh5JNPRps2bZCXl6fdZ8eOHTj77LPRpk0bdOrUCddffz3q6urCOk+zllTNmzcPt912G/7whz9gz5496NKlC6666irMnDnTv88f//hHVFZW4sorr0RJSQmGDRuGt956C16v17/PkiVLMHXqVIwYMQJJSUkYM2YMHnnkkeZ4SURERETUKiXetLg1NTW44IILUFhYiL/85S+Nz1xfj7PPPhsFBQX46KOPsGvXLlx22WVITU3F3Xff7fg8Hkte1ruVKisrQ25uLsaNK0VaWk5zXw4RERERKWpqyrBkSS5KS0uRkxM/4zUxjgQ+AJDlwhkqAAzDzp07g153LHuSFy1ahGnTpqGkpCTo8TfffBO/+tWv8NNPP/lnjV2wYAFuuOEG7N27F2lpaY6O36wlVURERERELYO7PRzdunVDbm6u/2POnDmuv6I1a9bg2GOPDVqiYtSoUSgrK8OXX37p+DjNWlJFRERERESh6TIcbisuLtauhye2OcUMBxERERFR1NzNcOTk5AR9mAKOG2+8ER6Px/bjm2++cecWGDDDQURERETUQlx33XWYMGGC7T6/+MUvHB2roKAA69evD3ps9+7d/m1OMeAgIiIiIoqaBXdWBQ9vfqeOHTuiY8eOMTlzYWEh7rrrLuzZswedOnUCACxfvhw5OTno27ev4+Mw4CAiIiIiilriTYu7Y8cO7N+/Hzt27EB9fT02b94MADjiiCOQlZWFkSNHom/fvrj00ktx3333obi4GLfeeiumTJkSVg8JAw4iIiIiolZo5syZWLx4sf/7448/HgCwcuVKDB8+HMnJyXj99dcxefJkFBYWIjMzE+PHj8cdd9wR1nkYcBARERERRS3xMhyLFi3CokWLbPfp0aMH/vnPf0Z1Hs5SRURERERErmGGg4iIiIgoaomX4WgqzHAQEREREZFrmOEgIiIiIooaMxwmzHAQEREREZFrmOEgIiIiIopaA9xZ+M+NYzYtBhxERERERFFjSZUJS6qIiIiIiMg1zHAQEREREUWtAe5kIxK/pIoZDiIiIiIicg0zHEREREREUWMPhwkzHERERERE5BpmOIiIiIiIosZpcU2Y4SAiIiIiItcww0FEREREFDX2cJgw4CAiIiIiihoDDhOWVBERERERkWuY4SAiIiIiihozHCbMcBARERERkWuY4SAiIiIiiloD3MlGcFpcIiIiIiIiI2Y4iIiIiIiixoX/TJjhICIiIiIi1zDDQUREREQUNc5SZcKAg4iIiIgoagw4TFhSRURERERErmGGg4iIiIgoasxwmDDDQURERERErmGGg4iIiIgoasxwmDDDQURERERErmGGg4iIiIgoalz4z4QZDiIiIiIicg0zHEREREREUWuAO/0WiZ/hYMBBRERERBQ1No2bsKSKiIiIiIhcwwwHEREREVHUmOEwYYaDiIiIiIhcwwwHEREREVHUmOEwYYaDiIiIiIhcwwwHEREREVHUmOEwYYaDiIiIiIhcwwwHEREREVHUGuDOIn1c+I+IiIiIiLjSuBFLqoiIiIiIyDXMcBARERERRY1N4ybMcBARERERkWuY4SAiIiIiihozHCbMcBARERERkWuY4SAiIiIiihqnxTVhhoOIiIiIiFzDDAcRERERUdTYw2HCgIOIiIiIKGoMOExYUkVERERERK5hhoOIiIiIKGrMcJgww0FERERERK5hhoOIiIiIKGoNcCcbwWlxiYiIiIiIjJjhICIiIiKKGhf+M2GGg4iIiIiIXMMMBxERERFR1DhLlQkDDiIiIiKiqDHgMGFJFRERERERuYYZDiIiIiKiqDHDYcIMBxERERERuYYBBxERERFR1Opd/Ii97du3Y9KkSejVqxcyMjJw+OGHY9asWaipqQna77PPPsMpp5wCr9eLbt264b777gv7XCypIiIiIiJqZb755hs0NDTgiSeewBFHHIEvvvgCV1xxBSorK3H//fcDAMrKyjBy5EgUFRVhwYIF+Pzzz3H55ZcjLy8PV155peNzMeAgIiIiIopaA9zJRriz8N+ZZ56JM8880//9L37xC2zZsgXz58/3BxxLlixBTU0N/vrXvyItLQ3HHHMMNm/ejAcffDCsgIMlVUREREREca6srCzoo7q6OubnKC0tRbt27fzfr1mzBqeeeirS0tL8j40aNQpbtmzBgQMHHB+XAQcRERERUdQaXPwAunXrhtzcXP/HnDlzYnr1W7duxbx583DVVVf5HysuLkZ+fn7QfuL74uJix8dmwEFEREREFOd27tyJ0tJS/8dNN92k3e/GG2+Ex+Ox/fjmm2+CnvPjjz/izDPPxAUXXIArrrgi5tfOHg4iIiIioqjVw5338n19ITk5OcjJyQm593XXXYcJEybY7vOLX/zC//VPP/2E008/HSeffDKefPLJoP0KCgqwe/fuoMfE9wUFBU4uHgADDiIiIiKiGHA34HCqY8eO6Nixo6N9f/zxR5x++ukYOHAgFi5ciKSk4OsvLCzELbfcgtraWqSmpgIAli9fjqOOOgpt27Z1fE0sqSIiIiIiamV+/PFHDB8+HN27d8f999+PvXv3ori4OKg347e//S3S0tIwadIkfPnll3j++efx8MMPY8aMGWGdixkOIiIiIqKoxUeGw6nly5dj69at2Lp1K7p27Rq0zbIsAEBubi7eeecdTJkyBQMHDkSHDh0wc+bMsKbEBRhwEBERERG1OhMmTAjZ6wEAxx13HN5///2ozsWAg4iIiIgoaoEpbGN/3MTGgAOBtFFtbVkzXwkRERER6Yhxmhi3xZ+6BDtu02HAAaC8vBwA8MIL3Zr5SoiIiIjITnl5OXJzc5v7MvzS0tJQUFCA4uJ3XTtHQUFB0GrficZjxW+Y2GQaGhrw008/ITs7Gx6PB2VlZejWrRt27tzpaL5jCh/vsbt4f93He+wu3l/38R67j/c4tizLQnl5Obp06dJo+tbmVlVVhZqaGteOn5aWBq/X69rx3cYMB4CkpKRG3fmA8wVWKHK8x+7i/XUf77G7eH/dx3vsPt7j2ImnzIbM6/UmdEDgtvgKD4mIiIiIqEVhwEFERERERK5hwKGRnp6OWbNmIT09vbkvpcXiPXYX76/7eI/dxfvrPt5j9/EeE/mwaZyIiIiIiFzDDAcREREREbmGAQcREREREbmGAQcREREREbmGAQcREREREbmGAYfGY489hp49e8Lr9WLw4MFYv359c19SQnrvvffw61//Gl26dIHH48Err7wStN2yLMycOROdO3dGRkYGioqK8O233zbPxSagOXPm4MQTT0R2djY6deqEc889F1u2bAnap6qqClOmTEH79u2RlZWFMWPGYPfu3c10xYln/vz5OO644/yLdhUWFuLNN9/0b+f9ja177rkHHo8H06ZN8z/Gexyd22+/HR6PJ+ijT58+/u28v7Hx448/4pJLLkH79u2RkZGBY489Fh9//LF/O//eUWvHgEPx/PPPY8aMGZg1axY2bdqE/v37Y9SoUdizZ09zX1rCqaysRP/+/fHYY49pt99333145JFHsGDBAqxbtw6ZmZkYNWoUqqqqmvhKE9Pq1asxZcoUrF27FsuXL0dtbS1GjhyJyspK/z7Tp0/Ha6+9hhdffBGrV6/GTz/9hNGjRzfjVSeWrl274p577sHGjRvx8ccf44wzzsA555yDL7/8EgDvbyxt2LABTzzxBI477rigx3mPo3fMMcdg165d/o8PPvjAv433N3oHDhzA0KFDkZqaijfffBNfffUVHnjgAbRt29a/D//eUatnUZCTTjrJmjJliv/7+vp6q0uXLtacOXOa8aoSHwBr2bJl/u8bGhqsgoIC689//rP/sZKSEis9Pd169tlnm+EKE9+ePXssANbq1asty/Ldz9TUVOvFF1/07/P1119bAKw1a9Y012UmvLZt21r/93//x/sbQ+Xl5Vbv3r2t5cuXW6eddpp17bXXWpbF3+FYmDVrltW/f3/tNt7f2LjhhhusYcOGGbfz7x2RZTHDIampqcHGjRtRVFTkfywpKQlFRUVYs2ZNM15Zy7Nt2zYUFxcH3evc3FwMHjyY9zpCpaWlAIB27doBADZu3Ija2tqge9ynTx90796d9zgC9fX1eO6551BZWYnCwkLe3xiaMmUKzj777KB7CfB3OFa+/fZbdOnSBb/4xS8wbtw47NixAwDvb6z84x//wKBBg3DBBRegU6dOOP744/HUU0/5t/PvHRFLqoLs27cP9fX1yM/PD3o8Pz8fxcXFzXRVLZO4n7zXsdHQ0IBp06Zh6NCh6NevHwDfPU5LS0NeXl7QvrzH4fn888+RlZWF9PR0/P73v8eyZcvQt29f3t8Yee6557Bp0ybMmTOn0Tbe4+gNHjwYixYtwltvvYX58+dj27ZtOOWUU1BeXs77GyP/+c9/MH/+fPTu3Rtvv/02Jk+ejGuuuQaLFy8GwL93RACQ0twXQETRmzJlCr744oug2myKjaOOOgqbN29GaWkpXnrpJYwfPx6rV69u7stqEXbu3Ilrr70Wy5cvh9frbe7LaZHOOuss/9fHHXccBg8ejB49euCFF15ARkZGM15Zy9HQ0IBBgwbh7rvvBgAcf/zx+OKLL7BgwQKMHz++ma+OKD4wwyHp0KEDkpOTG83QsXv3bhQUFDTTVbVM4n7yXkdv6tSpeP3117Fy5Up07drV/3hBQQFqampQUlIStD/vcXjS0tJwxBFHYODAgZgzZw769++Phx9+mPc3BjZu3Ig9e/bghBNOQEpKClJSUrB69Wo88sgjSElJQX5+Pu9xjOXl5eHII4/E1q1b+TscI507d0bfvn2DHjv66KP9pWv8e0fEgCNIWloaBg4ciBUrVvgfa2howIoVK1BYWNiMV9by9OrVCwUFBUH3uqysDOvWreO9dsiyLEydOhXLli3Dv/71L/Tq1Sto+8CBA5Gamhp0j7ds2YIdO3bwHkehoaEB1dXVvL8xMGLECHz++efYvHmz/2PQoEEYN26c/2ve49iqqKjAd999h86dO/N3OEaGDh3aaEryf//73+jRowcA/r0jAsBZqlTPPfeclZ6ebi1atMj66quvrCuvvNLKy8uziouLm/vSEk55ebn1ySefWJ988okFwHrwwQetTz75xPr+++8ty7Kse+65x8rLy7NeffVV67PPPrPOOeccq1evXtahQ4ea+coTw+TJk63c3Fxr1apV1q5du/wfBw8e9O/z+9//3urevbv1r3/9y/r444+twsJCq7CwsBmvOrHceOON1urVq61t27ZZn332mXXjjTdaHo/HeueddyzL4v11gzxLlWXxHkfruuuus1atWmVt27bN+vDDD62ioiKrQ4cO1p49eyzL4v2NhfXr11spKSnWXXfdZX377bfWkiVLrDZt2lh/+9vf/Pvw7x21dgw4NObNm2d1797dSktLs0466SRr7dq1zX1JCWnlypUWgEYf48ePtyzLN1XgbbfdZuXn51vp6enWiBEjrC1btjTvRScQ3b0FYC1cuNC/z6FDh6w//OEPVtu2ba02bdpY5513nrVr167mu+gEc/nll1s9evSw0tLSrI4dO1ojRozwBxuWxfvrBjXg4D2OzkUXXWR17tzZSktLsw477DDroosusrZu3erfzvsbG6+99prVr18/Kz093erTp4/15JNPBm3n3ztq7TyWZVnNk1shIiIiIqKWjj0cRERERETkGgYcRERERETkGgYcRERERETkGgYcRERERETkGgYcRERERETkGgYcRERERETkGgYcRERERETkGgYcRERERETkGgYcRERNaMKECTj33HOb+zKIiIiaTEpzXwARUUvh8Xhst8+aNQsPP/wwLMtqoivSmzBhAkpKSvDKK68063UQEVHrwICDiChGdu3a5f/6+eefx8yZM7Flyxb/Y1lZWcjKymqOSyMiImo2LKkiIoqRgoIC/0dubi48Hk/QY1lZWY1KqoYPH46rr74a06ZNQ9u2bZGfn4+nnnoKlZWVmDhxIrKzs3HEEUfgzTffDDrXF198gbPOOgtZWVnIz8/HpZdein379vm3v/TSSzj22GORkZGB9u3bo6ioCJWVlbj99tuxePFivPrqq/B4PPB4PFi1ahUAYOfOnbjwwguRl5eHdu3a4ZxzzsH27dv9xxTXPnv2bHTs2BE5OTn4/e9/j5qampDnJSKi1osBBxFRM1u8eDE6dOiA9evX4+qrr8bkyZNxwQUX4OSTT8amTZswcuRIXHrppTh48CAAoKSkBGeccQaOP/54fPzxx3jrrbewe/duXHjhhQB8mZaLL74Yl19+Ob7++musWrUKo0ePhmVZ+N///V9ceOGFOPPMM7Fr1y7s2rULJ598MmprazFq1ChkZ2fj/fffx4cffoisrCyceeaZQQHFihUr/Md89tln8fLLL2P27Nkhz0tERK2Xx+JfAiKimFu0aBGmTZuGkpKSoMfV/onhw4ejvr4e77//PgCgvr4eubm5GD16NJ5++mkAQHFxMTp37ow1a9ZgyJAhuPPOO/H+++/j7bff9h/3hx9+QLdu3bBlyxZUVFRg4MCB2L59O3r06NHo2nQ9HH/7299w55134uuvv/b3otTU1CAvLw+vvPIKRo4ciQkTJuC1117Dzp070aZNGwDAggULcP3116O0tBSbN2+2PS8REbVO7OEgImpmxx13nP/r5ORktG/fHscee6z/sfz8fADAnj17AACffvopVq5cqe0H+e677zBy5EiMGDECxx57LEaNGoWRI0fi/PPPR9u2bY3X8Omnn2Lr1q3Izs4Oeryqqgrfffed//v+/fv7gw0AKCwsREVFBXbu3In+/fuHfV4iImr5GHAQETWz1NTUoO89Hk/QYyLj0NDQAACoqKjAr3/9a9x7772NjtW5c2ckJydj+fLl+Oijj/DOO+9g3rx5uOWWW7Bu3Tr06tVLew0iK7JkyZJG2zp27OjodURyXiIiavnYw0FElGBOOOEEfPnll+jZsyeOOOKIoI/MzEwAviBl6NChmD17Nj755BOkpaVh2bJlAIC0tDTU19c3Oua3336LTp06NTpmbm6uf79PP/0Uhw4d8n+/du1aZGVloVu3biHPS0RErRMDDiKiBDNlyhTs378fF198MTZs2IDvvvsOb7/9NiZOnIj6+nqsW7cOd999Nz7++GPs2LEDL7/8Mvbu3Yujjz4aANCzZ0989tln2LJlC/bt24fa2lqMGzcOHTp0wDnnnIP3338f27Ztw6pVq3DNNdfghx9+8J+7pqYGkyZNwldffYV//vOfmDVrFqZOnYqkpKSQ5yUiotaJJVVERAmmS5cu+PDDD3HDDTdg5MiRqK6uRo8ePXDmmWciKSkJOTk5eO+99zB37lyUlZWhR48eeOCBB3DWWWcBAK644gqsWrUKgwYNQkVFBVauXInhw4fjvffeww033IDRo0ejvLwchx12GEaMGIGcnBz/uUeMGIHevXvj1FNPRXV1NS6++GLcfvvtABDyvERE1DpxlioiInKEK5QTEVEkWFJFRERERESuYcBBRERERESuYUkVERERERG5hhkOIiIiIiJyDQMOIiIiIiJyDQMOIiIiIiJyDQMOIiIiIiJyDQMOIiIiIiJyDQMOIiIiIiJyDQMOIiIiIiJyDQMOIiIiIiJyzf8DgMnjG0gcDWMAAAAASUVORK5CYII=\n"},"metadata":{}}],"execution_count":26},{"cell_type":"code","source":"# =============================================================================\n# 4. Device Setup and Model Initialization\n# =============================================================================\ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\nmodel = ComplexConvNet().to(device)\nprint(\"Using device:\", device)\n\n# =============================================================================\n# 5. Training Loop\n# =============================================================================\ncriterion = nn.L1Loss()\noptimizer = torch.optim.AdamW(model.parameters(), lr=1e-4, weight_decay=1e-3)\nn_epochs = 50\n\ntraining_history = []\n\nfor epoch in range(1, n_epochs + 1):\n    print(f\"[{epoch:02d}] Starting training\")\n    \n    # ----- Training Phase -----\n    model.train()\n    epoch_train_losses = []\n    for batch_inputs, batch_targets in tqdm(train_loader, desc=\"Training\", leave=False):\n        batch_inputs = batch_inputs.to(device)\n        batch_targets = batch_targets.to(device)\n        \n        optimizer.zero_grad()\n        predictions = model(batch_inputs)\n        loss = criterion(predictions, batch_targets)\n        loss.backward()\n        optimizer.step()\n        \n        epoch_train_losses.append(loss.item())\n    avg_train_loss = np.mean(epoch_train_losses)\n    print(\"Train loss: {:.5f}\".format(avg_train_loss))\n\n    # ----- Validation Phase -----\n    model.eval()\n    epoch_valid_losses = []\n    for batch_inputs, batch_targets in tqdm(valid_loader, desc=\"Validation\", leave=False):\n        batch_inputs = batch_inputs.to(device)\n        batch_targets = batch_targets.to(device)\n        \n        with torch.inference_mode():\n            predictions = model(batch_inputs)\n        loss = criterion(predictions, batch_targets)\n        epoch_valid_losses.append(loss.item())\n    avg_valid_loss = np.mean(epoch_valid_losses)\n    print(\"Valid loss: {:.5f}\".format(avg_valid_loss))\n    \n    training_history.append({\n        \"train\": avg_train_loss,\n        \"valid\": avg_valid_loss\n    })\n\n    # ----- Plot Example Outputs Every 4 Epochs -----\n    if epoch % 4 == 0:\n        sample_true = batch_targets[0, 0].detach().cpu()\n        sample_pred = predictions[0, 0].detach().cpu()\n        fig, axs = plt.subplots(1, 2, figsize=(5, 2.5))\n        fig.suptitle(f\"Epoch {epoch} | Valid: {avg_valid_loss:.5f}\")\n        axs[0].imshow(sample_true)\n        axs[0].set_title(\"Ground Truth\")\n        axs[1].imshow(sample_pred)\n        axs[1].set_title(\"Prediction\")\n        plt.show()\n\n# Plot training history\npd.DataFrame(training_history).plot(title=\"Training and Validation Loss History\");\n\n# Save the final model after training\ntorch.save(model.state_dict(), \"complexconvnet_final.pth\")\nprint(\"Final model saved as 'complexconvnet_final.pth'\")\n\n\n# =============================================================================\n# 6. Test Set Inference and Submission File\n# =============================================================================\n# Collect test files\ntest_dir = \"/kaggle/input/waveform-inversion/test\"\ntest_files = list(Path(test_dir).glob(\"*.npy\"))\nprint(\"Test files:\", len(test_files))\n\n# Define CSV header details\nx_cols = [f\"x_{i}\" for i in range(1, 70, 2)]\ncsv_fields = [\"oid_ypos\"] + x_cols\n\n# Create test DataLoader\ntest_dataset = TestDataset(test_files)\ntest_loader = DataLoader(test_dataset, batch_size=8, num_workers=4, pin_memory=True)\n\n# Switch model to evaluation mode\nmodel.eval()\n\n# Generate submission CSV\nsubmission_path = \"submission.csv\"\nwith open(submission_path, \"wt\", newline=\"\") as csv_file:\n    writer = csv.DictWriter(csv_file, fieldnames=csv_fields)\n    writer.writeheader()\n    for batch_inputs, batch_ids in tqdm(test_loader, desc=\"Test Inference\"):\n        batch_inputs = batch_inputs.to(device)\n        with torch.inference_mode():\n            outputs = model(batch_inputs)\n        # Bring predictions back to CPU as numpy array\n        predictions = outputs[:, 0].cpu().numpy()\n        for pred_map, file_id in zip(predictions, batch_ids):\n            # For each y position, extract every second element from x positions\n            for y_index in range(70):\n                row_dict = {\n                    \"oid_ypos\": f\"{file_id}_y_{y_index}\",\n                    **{x_cols[i]: pred_map[y_index, (i * 2) + 1] for i in range(len(x_cols))}\n                }\n                writer.writerow(row_dict)\n\nprint(f\"Submission file generated: {submission_path}\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-20T19:34:50.120662Z","iopub.execute_input":"2025-05-20T19:34:50.121071Z","iopub.status.idle":"2025-05-20T19:37:24.02796Z","shell.execute_reply.started":"2025-05-20T19:34:50.121031Z","shell.execute_reply":"2025-05-20T19:37:24.026185Z"}},"outputs":[{"name":"stdout","text":"Using device: cuda\n[01] Starting training\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"Training:   0%|          | 0/78 [00:00<?, ?it/s]","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":""}},"metadata":{}},{"name":"stdout","text":"Train loss: 695.54083\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"Validation:   0%|          | 0/79 [00:00<?, ?it/s]","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":""}},"metadata":{}},{"name":"stdout","text":"Valid loss: 524.04012\nFinal model saved as 'complexconvnet_final.pth'\n","output_type":"stream"},{"name":"stderr","text":"Exception ignored in: <function tqdm.__del__ at 0x7d02e595cdc0>\nTraceback (most recent call last):\n  File \"/usr/local/lib/python3.10/dist-packages/tqdm/std.py\", line 1148, in __del__\n    self.close()\n  File \"/usr/local/lib/python3.10/dist-packages/tqdm/notebook.py\", line 279, in close\n    self.disp(bar_style='danger', check_delay=False)\nAttributeError: 'tqdm' object has no attribute 'disp'\n","output_type":"stream"},{"name":"stdout","text":"Test files: 65818\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"Test Inference:   0%|          | 0/8228 [00:00<?, ?it/s]","application/vnd.jupyter.widget-view+json":{"version_major":2,"version_minor":0,"model_id":"f3cb61a6daa54cb0a2cad17d99d80f13"}},"metadata":{}},{"traceback":["\u001b[0;31m---------------------------------------------------------------------------\u001b[0m","\u001b[0;31mKeyboardInterrupt\u001b[0m                         Traceback (most recent call last)","\u001b[0;32m<ipython-input-27-350caf49467c>\u001b[0m in \u001b[0;36m<cell line: 97>\u001b[0;34m()\u001b[0m\n\u001b[1;32m    101\u001b[0m         \u001b[0mbatch_inputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbatch_inputs\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mto\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[1;32m    102\u001b[0m         \u001b[0;32mwith\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0minference_mode\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--> 103\u001b[0;31m             \u001b[0moutputs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mbatch_inputs\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    104\u001b[0m         \u001b[0;31m# Bring predictions back to CPU as numpy array\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    105\u001b[0m         \u001b[0mpredictions\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0moutputs\u001b[0m\u001b[0;34m[\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[0mcpu\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnumpy\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.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1734\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\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;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1735\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-> 1736\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\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   1737\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1738\u001b[0m     \u001b[0;31m# torchrec tests the code consistency with the following code\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1745\u001b[0m                 \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1746\u001b[0m                 or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1747\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\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   1748\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1749\u001b[0m         \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m<ipython-input-19-ca450fd70d2a>\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m    289\u001b[0m         \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstem\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[0m\n\u001b[1;32m    290\u001b[0m         \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlayer1\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[0m\n\u001b[0;32m--> 291\u001b[0;31m         \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlayer2\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[0m\n\u001b[0m\u001b[1;32m    292\u001b[0m         \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlayer3\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[0m\n\u001b[1;32m    293\u001b[0m         \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlayer4\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[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1734\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\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;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1735\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-> 1736\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\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   1737\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1738\u001b[0m     \u001b[0;31m# torchrec tests the code consistency with the following code\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1745\u001b[0m                 \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1746\u001b[0m                 or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1747\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\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   1748\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1749\u001b[0m         \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/container.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, input)\u001b[0m\n\u001b[1;32m    248\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[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    249\u001b[0m         \u001b[0;32mfor\u001b[0m \u001b[0mmodule\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 250\u001b[0;31m             \u001b[0minput\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodule\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\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    251\u001b[0m         \u001b[0;32mreturn\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    252\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1734\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\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;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1735\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-> 1736\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\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   1737\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1738\u001b[0m     \u001b[0;31m# torchrec tests the code consistency with the following code\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1745\u001b[0m                 \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1746\u001b[0m                 or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1747\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\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   1748\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1749\u001b[0m         \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m<ipython-input-19-ca450fd70d2a>\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, x)\u001b[0m\n\u001b[1;32m    234\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    235\u001b[0m         \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muse_se\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 236\u001b[0;31m             \u001b[0mse_weight\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mse\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mout\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    237\u001b[0m             \u001b[0mout\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mout\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0mse_weight\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    238\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1734\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\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;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1735\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-> 1736\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\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   1737\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1738\u001b[0m     \u001b[0;31m# torchrec tests the code consistency with the following code\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1745\u001b[0m                 \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1746\u001b[0m                 or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1747\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\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   1748\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1749\u001b[0m         \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/container.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, input)\u001b[0m\n\u001b[1;32m    248\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[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    249\u001b[0m         \u001b[0;32mfor\u001b[0m \u001b[0mmodule\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 250\u001b[0;31m             \u001b[0minput\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmodule\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\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    251\u001b[0m         \u001b[0;32mreturn\u001b[0m \u001b[0minput\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    252\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_wrapped_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1734\u001b[0m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_compiled_call_impl\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;31m# type: ignore[misc]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1735\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-> 1736\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_call_impl\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   1737\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1738\u001b[0m     \u001b[0;31m# torchrec tests the code consistency with the following code\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/module.py\u001b[0m in \u001b[0;36m_call_impl\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m   1745\u001b[0m                 \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_pre_hooks\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0m_global_backward_hooks\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1746\u001b[0m                 or _global_forward_hooks or _global_forward_pre_hooks):\n\u001b[0;32m-> 1747\u001b[0;31m             \u001b[0;32mreturn\u001b[0m \u001b[0mforward_call\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   1748\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m   1749\u001b[0m         \u001b[0mresult\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;32m/usr/local/lib/python3.10/dist-packages/torch/nn/modules/activation.py\u001b[0m in \u001b[0;36mforward\u001b[0;34m(self, input)\u001b[0m\n\u001b[1;32m    325\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    326\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[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--> 327\u001b[0;31m         \u001b[0;32mreturn\u001b[0m \u001b[0mtorch\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msigmoid\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minput\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    328\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m    329\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n","\u001b[0;31mKeyboardInterrupt\u001b[0m: "],"ename":"KeyboardInterrupt","evalue":"","output_type":"error"},{"output_type":"display_data","data":{"text/plain":"<Figure size 640x480 with 1 Axes>","image/png":"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hbKysvT555/riy++0H333XfVvpw5c0Y///xzkfJLQ0Jx3nrrLSUlJenhhx/WU089pfPnz+vrr7/W1q1b9eijj+qhhx7S999/r/fff1+vvPKKqlevLkmOfzePP/64FixYoIcfflijRo3S1q1bNW3aNH377bf64IMPnI61d+9excXFafDgwUpMTFS9evXk5+enxMRE7d69W40bN3bU3b59u77//ns988wzVx0DLMwAZWDYsGHm0pdX27ZtjSTzxhtvFKl/9uzZImWDBw82vr6+5vz5846y/v37m8jISMf6gQMHjCRTrVo1c+rUKUf5hx9+aCSZFStWOMomTJhQpE+SjJeXl9m3b5+j7KuvvjKSzKxZsxxl3bt3N76+vubIkSOOstTUVOPh4VGkzeIUN75p06YZm81mDh486DQ+SWby5MlOdZs1a2aaN2/uWF+2bJmRZF566SVHWV5enmnTpo2RZObNm3fVPt1xxx2mRo0aJj8/31H20UcfGUnmzTffdLSZk5PjtN/p06dNSEiI+cMf/uBULslMmDDBsT5v3jwjyRw4cMAYY8yJEyeMl5eX6datmykoKHDU+/Of/2wkmf79+zvKzp8/79QvYy7+rO12u9O52b59+2XHe+lrpfCcPffcc071Hn74YWOz2ZxeAyV9XRSn8DU5ffr0y9aZOXOmkWTee+89R1lubq5p2bKl8fPzM1lZWcYYY5566inj7+9v8vLyLttW06ZNTbdu3a7Yp+Js2LDBSLriUqlSJad92rZta9q2betY79Gjh2nUqNEVjzN9+nSn10GhnTt3Gknm8ccfdyofPXq0kWQ++eQTR1lkZKSRZD766COnuhkZGcbb29uMHTvWqTwpKclUqlTJZGdnX+00wMK4xYMbym63a8CAAUXKf30vufA3ujZt2ujs2bP67rvvrtru73//e1WpUsWxXvjb9A8//HDVfTt06KA6deo41m+99Vb5+/s79s3Pz9e6devUs2dPhYeHO+rVrVtXXbp0uWr7kvP4fvnlF/38889q1aqVjDH68ssvi9R/4oknnNbbtGnjNJbVq1fLw8PDcUVFujjn48knnyxRf6SL84YOHz6s//73v46yhQsXysvLS71793a0WTjvoKCgQKdOnVJeXp5iYmKKvT10JevWrVNubq6efPJJp9tif/zjH4vUtdvtcnO7+N9Tfn6+Tp48KT8/P9WrV8/l4xZavXq13N3dlZSU5FQ+atQoGWO0Zs0ap/KrvS6ux+rVqxUaGqq4uDhHmaenp5KSkpSdna1PP/1UkhQYGKhffvnlirdrAgMD9c033yg1NfWa+jJ+/HglJycXWTp27HjVfQMDA3X48OEit1NLYvXq1ZKkkSNHOpWPGjVKkrRq1Sqn8qioqCK3bAICAtSjRw+9//77jtt0+fn5+te//qWePXuqUqVKLvcL1kFAwQ31u9/9rtiJdt98840efPBBBQQEyN/fX0FBQY4JtpmZmVdtt2bNmk7rhWHl9OnTLu9buH/hvidOnNC5c+dUt27dIvWKKyvOoUOHlJCQoKpVqzrmlbRt21ZS0fF5e3sXuXX06/5I0sGDBxUWFlbkMdB69eqVqD+S1KdPH7m7uzvmC5w/f14ffPCBunTp4hT2FixYoFtvvdUxvyEoKEirVq0q0c/l1w4ePChJio6OdioPCgpyOp50MQy98sorio6Olt1uV/Xq1RUUFKSvv/7a5eP++vjh4eGqXLmyU3nhk2WF/St0tdfF9Th48KCio6MdIexyfRk6dKhuueUWdenSRTVq1NAf/vCHIvNgJk+erIyMDN1yyy1q0qSJxowZ49Lj4U2aNFGHDh2KLGFhYVfdd+zYsfLz81OLFi0UHR2tYcOGadOmTSU67sGDB+Xm5lbk31BoaKgCAwOL/DyioqKKbeexxx7ToUOH9Nlnn0m6GISPHz+ufv36lagfsC4CCm6o4mbdZ2RkqG3btvrqq680efJkrVixQsnJyY577iV5VPRyT4uYSyY/lva+JZGfn6/77rtPq1at0tixY7Vs2TIlJyc7JnNeOr4b9eRLcHCw7rvvPv3nP//RhQsXtGLFCp05c0bx8fGOOu+9954SEhJUp04dzZkzRx999JGSk5N1zz33lOkjvFOnTtXIkSN1991367333tPatWuVnJysRo0a3bBHh8v6dVESwcHB2rlzp5YvX+6YP9OlSxenuUZ333239u/fr7lz56px48Z6++23dfvtt+vtt98u8/41aNBAe/fu1aJFi3TXXXfpP//5j+666y5NmDChxG2U9MMTL/fETqdOnRQSEqL33ntP0sXXbGhoqDp06FDiPsCamCSLcrdx40adPHlSS5cu1d133+0oP3DgQDn26v8EBwfL29u72A82u9KHnRXatWuXvv/+ey1YsECPPfaYo/x6nrKIjIzU+vXrlZ2d7XQVZe/evS61Ex8fr48++khr1qzRwoUL5e/vr+7duzu2L1myRLVr19bSpUud3khceQP6dZ8lKTU1VbVr13aU//TTT0WuSixZskTt27fXnDlznMozMjIcEy2lkr+5FR5/3bp1OnPmjNNVlMJbiIX9uxEiIyP19ddfq6CgwOkqSnF98fLyUvfu3dW9e3cVFBRo6NChevPNN/Xss886rj5UrVpVAwYM0IABA5Sdna27775bEydO1OOPP17mY6lUqZJ+//vf6/e//71yc3P10EMP6fnnn9e4cePk7e192Z9RZGSkCgoKlJqa6vT5SMePH1dGRkaJfx7u7u569NFHNX/+fL344otatmyZEhMTy/URd5QOrqCg3BX+R/Lr30xzc3P12muvlVeXnLi7u6tDhw5atmyZjh496ijft29fkXkLl9tfch6fMcbpUVFXde3aVXl5eXr99dcdZfn5+Zo1a5ZL7fTs2VO+vr567bXXtGbNGj300EPy9va+Yt+3bt2qlJQUl/vcoUMHeXp6atasWU7tzZw5s0hdd3f3IlcqFi9erCNHjjiVFc4xKMnj1V27dlV+fr7+/ve/O5W/8sorstlsJZ5PVBq6du2q9PR0/etf/3KU5eXladasWfLz83Pc/jt58qTTfm5ubo4Pzyt8yubSOn5+fqpbt26JnsK5Xpce28vLSw0bNpQxRhcuXJB0+Z9R165dJRX9+b/88suSpG7dupW4H/369dPp06c1ePBgZWdnX/Xzl1AxcAUF5a5Vq1aqUqWK+vfv7/gY9nffffeGXkq/mokTJ+rjjz9W69atNWTIEMcbXePGja/6Mev169dXnTp1NHr0aB05ckT+/v76z3/+c11zGbp3767WrVvr6aefVlpamho2bKilS5e6PD/Dz89PPXv2dMxD+fXtHUm6//77tXTpUj344IPq1q2bDhw4oDfeeEMNGzZUdna2S8cq/DyXadOm6f7771fXrl315Zdfas2aNU5XRQqPO3nyZA0YMECtWrXSrl279M9//tPpyosk1alTR4GBgXrjjTdUuXJlVapUSbGxscXOV+jevbvat2+vv/zlL0pLS1PTpk318ccf68MPP9Qf//hHpwmxpWH9+vU6f/58kfKePXtq0KBBevPNN5WQkKAdO3aoVq1aWrJkiTZt2qSZM2c6rvA8/vjj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tlTfvn312GOPafLkydc3CgAAcF1q1aqlmTNnlnc3HK7rc1DKC5+DAgAoTefPn9eBAwcUFRV1XRM7b7R27drptttuK5Vg8dNPP6lSpUry9fW9rnaudC5vyOegAAAAazPGKD8/32lKxuUEBQXdgB6VHF8WCADAJYwxOpubVy5LSW9sJCQk6NNPP9Wrr77q+G68+fPny2azac2aNWrevLnsdrv+97//af/+/erRo4dCQkLk5+enO+64Q+vWrXNq79JbPDabTW+//bYefPBB+fr6Kjo6WsuXLy/N03xFXEEBAOAS5y7kq+H4teVy7D2TO8nX6+pvz6+++qq+//57NW7c2DGX85tvvpEkPf3005oxY4Zq166tKlWq6Mcff1TXrl31/PPPy26365133lH37t21d+9e1axZ87LHmDRpkl566SVNnz5ds2bNUnx8vA4ePKiqVauWzmCvgCsoAABUQAEBAfLy8pKvr69CQ0MVGhoqd3d3SdLkyZN13333qU6dOqpataqaNm2qwYMHq3HjxoqOjtaUKVNUp06dq14RSUhIUFxcnOrWraupU6cqOzu7yOeZlRWuoAAAcAkfT3ftmdyp3I59vWJiYpzWs7OzNXHiRK1atUrHjh1TXl6ezp07p0OHDl2xnVtvvdXx90qVKsnf39/ps8zKEgEFAIBL2Gy2Et1msapKlSo5rY8ePVrJycmaMWOG6tatKx8fHz388MPKzc29Yjuenp5O6zabTQUFBaXe3+JU3LMPAMBvnJeXl/Lz869ab9OmTUpISNCDDz4o6eIVlbS0tDLu3fVhDgoAABVUrVq1tHXrVqWlpennn3++7NWN6OhoLV26VDt37tRXX32lRx999IZdCblWBBQAACqo0aNHy93dXQ0bNlRQUNBl55S8/PLLqlKlilq1aqXu3burU6dOuv32229wb13DJ8kCAH7zKuonyVpRaX2SLFdQAACA5RBQAACA5RBQAACA5RBQAACA5RBQAACA5RBQAACA5RBQAACA5RBQAACA5RBQAACA5RBQAAD4DatVq5ZmzpzpWLfZbFq2bNll66elpclms2nnzp1l2i++zRgAADgcO3ZMVapUKe9uEFAAAMD/CQ0NLe8uSOIWDwAARRkj5f5SPosL3+E7e/ZshYeHq6CgwKm8R48e+sMf/qD9+/erR48eCgkJkZ+fn+644w6tW7fuim1eeotn27Ztatasmby9vRUTE6Mvv/zSpVN5rbiCAgDApS6claaGl8+x/3xU8qpUoqq9e/fWk08+qQ0bNujee++VJJ06dUofffSRVq9erezsbHXt2lXPP/+87Ha73nnnHXXv3l179+5VzZo1r9p+dna27r//ft1333167733dODAAT311FPXNbySIqAAAFBBValSRV26dNHChQsdAWXJkiWqXr262rdvLzc3NzVt2tRRf8qUKfrggw+0fPlyDR8+/KrtL1y4UAUFBZozZ468vb3VqFEjHT58WEOGDCmzMRUioAAAcClP34tXMsrr2C6Ij49XYmKiXnvtNdntdv3zn/9Unz595ObmpuzsbE2cOFGrVq3SsWPHlJeXp3PnzunQoUMlavvbb7/VrbfeKm9vb0dZy5YtXerftSKgAABwKZutxLdZylv37t1ljNGqVat0xx136LPPPtMrr7wiSRo9erSSk5M1Y8YM1a1bVz4+Pnr44YeVm5tbzr2+OgIKAAAVmLe3tx566CH985//1L59+1SvXj3dfvvtkqRNmzYpISFBDz74oKSLc0rS0tJK3HaDBg307rvv6vz5846rKFu2bCn1MRSHp3gAAKjg4uPjtWrVKs2dO1fx8fGO8ujoaC1dulQ7d+7UV199pUcffbTIEz9X8uijj8pmsykxMVF79uzR6tWrNWPGjLIYQhEEFAAAKrh77rlHVatW1d69e/Xoo486yl9++WVVqVJFrVq1Uvfu3dWpUyfH1ZWS8PPz04oVK7Rr1y41a9ZMf/nLX/Tiiy+WxRCKsBnjwgPXFpGVlaWAgABlZmbK39+/vLsDAKjgzp8/rwMHDigqKsppQihcd6Vz6cr7N1dQAACA5RBQAACA5RBQAACA5RBQAACA5RBQAAD4/yrgcyOWU1rnkIACAPjNc3d3l6QK8QmrVnf27FlJkqen53W1wyfJAgB+8zw8POTr66uffvpJnp6ecnPj93dXGWN09uxZnThxQoGBgY7Qd61cDihHjhzR2LFjtWbNGp09e1Z169bVvHnzFBMTI0my2WzF7vfSSy9pzJgxkqRatWrp4MGDTtunTZump59+2tXuAABw3Ww2m8LCwnTgwIEi709wTWBgoEJDQ6+7HZcCyunTp9W6dWu1b99ea9asUVBQkFJTU1WlShVHnWPHjjnts2bNGg0cOFC9evVyKp88ebISExMd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O3bsUFpampYvX67HHntMd999t2699VZJUseOHdWwYUP169dPX331ldauXatnnnlGw4YNk91uL5MBAgCAiselOSiHDx9WXFycTp48qaCgIN11113asmWLgoKCdP78ea1bt04zZ87UL7/8ooiICPXq1UvPPPOMY393d3etXLlSQ4YMUcuWLVWpUiX179/f6XNTAAAAbMYYU96dcFVWVpYCAgKUmZnJfBQAACoIV96/+S4eAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOQQUAABgOS4FlIkTJ8pmszkt9evXlySdOnVKTz75pOrVqycfHx/VrFlTSUlJyszMdGrj0v1tNpsWLVpUeiMCAAAVnoerOzRq1Ejr1q37vwY8LjZx9OhRHT16VDNmzFDDhg118OBBPfHEEzp69KiWLFni1Ma8efPUuXNnx3pgYOA1dh8AANyMXA4oHh4eCg0NLVLeuHFj/ec//3Gs16lTR88//7z69u2rvLw8R5CRLgaS4toAAACQrmEOSmpqqsLDw1W7dm3Fx8fr0KFDl62bmZkpf39/p3AiScOGDVP16tXVokULzZ07V8aYKx4zJydHWVlZTgsAALh5uXQFJTY2VvPnz1e9evV07NgxTZo0SW3atNHu3btVuXJlp7o///yzpkyZokGDBjmVT548Wffcc498fX318ccfa+jQocrOzlZSUtJljztt2jRNmjTJla4CAIAKzGaudvniCjIyMhQZGamXX35ZAwcOdJRnZWXpvvvuU9WqVbV8+XJ5enpeto3x48dr3rx5+vHHHy9bJycnRzk5OU7tR0REOK7QAAAA68vKylJAQECJ3r+v6zHjwMBA3XLLLdq3b5+j7MyZM+rcubMqV66sDz744IrhRLp4Vebw4cNOAeRSdrtd/v7+TgsAALh5XVdAyc7O1v79+xUWFibpYjLq2LGj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IinvSTC4ssLJm59//rmjbO3atSWavLlkyRJH2Xfffec0eXPfvn1m165djmXu3LlGktm8efNlZ6PfzMrqPBtjzO7du01wcLAZM2ZM2Q3Awlq0aGGGDx/uWM/Pzze/+93vrjip8P7773cqa9myZZFJsjNmzHBsz8zMZJJsKZ9nY4zJzc01PXv2NI0aNTInTpwom45XMKV9nn/++Wen/4t37dplwsPDzdixY813331XdgOpAAgoFUDnzp1Ns2bNzNatW83//vc/Ex0d7fT46+HDh029evXM1q1bHWVPPPGEqVmzpvnkk0/M559/blq2bGlatmx52WNs2LDhN/0UjzFlc5537dplgoKCTN++fc2xY8ccy2/pP/tFixYZu91u5s+fb/bs2WMGDRpkAgMDTXp6ujHGmH79+pmnn37aUX/Tpk3Gw8PDzJgxw3z77bdmwoQJxT5mHBgYaD788EPz9ddfmx49evCYcSmf59zcXPPAAw+YGjVqmJ07dzq9fnNycspljFZQFq/nS/EUz0UElArg5MmTJi4uzvj5+Rl/f38zYMAAc+bMGcf2AwcOGElmw4YNjrJz586ZoUOHmipVqhhfX1/z4IMPmmPHjl32GASUsjnPEyZMMJKKLJGRkTdwZOVv1qxZpmbNmsbLy8u0aNHCbNmyxbGtbdu2pn///k71//3vf5tbbrnFeHl5mUaNGplVq1Y5bS8oKDDPPvusCQkJMXa73dx7771m7969N2Iollaa57nw9V7c8ut/A79Fpf16vhQB5SKbMf9/8gEAAIBF8BQPAACwHAIKAACwHAIKAACwHAIKAACwHAIKAACwHAIKAACwHAIKAACwHAIKAACwHAIKAACwHAIKAACwHAIKAACwnP8HUw8tshSKyVsAAAAASUVORK5CYII=\n"},"metadata":{}}],"execution_count":27},{"cell_type":"code","source":"import gradio as gr\nimport torch\nimport numpy as np\nimport matplotlib.pyplot as plt\nfrom scipy.ndimage import gaussian_filter\n\n# Load model\ndevice = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\nmodel = ComplexConvNet(input_channels=5).to(device)\nmodel.load_state_dict(torch.load(\"/kaggle/working/complexconvnet_final.pth\", map_location=device))\nmodel.eval()\n\n# Preprocessing: apply denoising and normalization\ndef preprocess(input_array):\n    if input_array.ndim == 3:\n        input_array = gaussian_filter(input_array, sigma=0.5)\n\n        x_min = input_array.min()\n        x_max = input_array.max()\n        if x_max > x_min:\n            input_array = (input_array - x_min) / (x_max - x_min)\n        else:\n            input_array = input_array - x_min\n\n        input_tensor = torch.tensor(input_array, dtype=torch.float32).unsqueeze(0).to(device)\n        return input_tensor\n    else:\n        raise ValueError(\"Input array must be 3D (C, H, W)\")\n\n# Inference and visualization\ndef infer_from_npy(npy_file):\n    data = np.load(npy_file.name)\n\n    # Check if input has 5 channels\n    if data.shape[0] != 5:\n        return \"Expected 5 input channels!\"\n\n    input_tensor = preprocess(data)\n\n    with torch.no_grad():\n        output = model(input_tensor).squeeze().cpu().numpy()\n\n    # Plot both input (first channel) and output\n    fig, axs = plt.subplots(1, 2, figsize=(10, 4))\n    axs[0].imshow(data[0], cmap='gray')\n    axs[0].set_title(\"Input (Channel 1)\")\n    axs[1].imshow(output, cmap='jet')\n    axs[1].set_title(\"Predicted Velocity\")\n    plt.tight_layout()\n\n    return fig\n\n# Gradio interface\ndemo = gr.Interface(\n    fn=infer_from_npy,\n    inputs=gr.File(file_types=[\".npy\"]),\n    outputs=gr.Plot(label=\"Input & Prediction\"),\n    title=\"Seismic Inversion Demo\",\n    description=\"Upload a seismic .npy file (with 5 channels) to see predicted velocity map.\"\n)\n\nif __name__ == \"__main__\":\n    demo.launch()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-05-20T19:41:12.681167Z","iopub.execute_input":"2025-05-20T19:41:12.681612Z","iopub.status.idle":"2025-05-20T19:41:15.971076Z","shell.execute_reply.started":"2025-05-20T19:41:12.681575Z","shell.execute_reply":"2025-05-20T19:41:15.970259Z"}},"outputs":[{"name":"stderr","text":"<ipython-input-34-05ba8a8bbf80>:10: FutureWarning: You are using `torch.load` with `weights_only=False` (the current default value), which uses the default pickle module implicitly. It is possible to construct malicious pickle data which will execute arbitrary code during unpickling (See https://github.com/pytorch/pytorch/blob/main/SECURITY.md#untrusted-models for more details). In a future release, the default value for `weights_only` will be flipped to `True`. This limits the functions that could be executed during unpickling. Arbitrary objects will no longer be allowed to be loaded via this mode unless they are explicitly allowlisted by the user via `torch.serialization.add_safe_globals`. We recommend you start setting `weights_only=True` for any use case where you don't have full control of the loaded file. Please open an issue on GitHub for any issues related to this experimental feature.\n  model.load_state_dict(torch.load(\"/kaggle/working/complexconvnet_final.pth\", map_location=device))\n","output_type":"stream"},{"name":"stdout","text":"* Running on local URL:  http://127.0.0.1:7860\nIt looks like you are running Gradio on a hosted a Jupyter notebook. For the Gradio app to work, sharing must be enabled. Automatically setting `share=True` (you can turn this off by setting `share=False` in `launch()` explicitly).\n\n* Running on public URL: https://1c111198b80eebd12c.gradio.live\n\nThis share link expires in 1 week. For free permanent hosting and GPU upgrades, run `gradio deploy` from the terminal in the working directory to deploy to Hugging Face Spaces (https://huggingface.co/spaces)\n","output_type":"stream"},{"output_type":"display_data","data":{"text/plain":"<IPython.core.display.HTML object>","text/html":"<div><iframe src=\"https://1c111198b80eebd12c.gradio.live\" width=\"100%\" height=\"500\" allow=\"autoplay; camera; microphone; clipboard-read; clipboard-write;\" frameborder=\"0\" allowfullscreen></iframe></div>"},"metadata":{}}],"execution_count":34},{"cell_type":"markdown","source":"# Thanks","metadata":{}},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}