Upload folder using huggingface_hub
Browse files- .gitattributes +2 -0
- README.md +37 -0
- config.json +10 -0
- config/config.yaml +40 -0
- model/__init__.py +3 -0
- model/lino.py +110 -0
- requirements.txt +5 -0
- results/error_distribution.png +0 -0
- results/history.csv +0 -0
- results/metrics.json +16 -0
- results/per_sample_metrics.csv +449 -0
- results/predictions.npz +3 -0
- results/split_indices.json +2055 -0
- results/training_curves.pdf +0 -0
- results/training_curves.png +3 -0
- results/training_status.json +14 -0
- results/training_summary.json +14 -0
- results/validation_examples.pdf +0 -0
- results/validation_examples.png +3 -0
- results/verification.json +34 -0
- results/visualization_manifest.json +32 -0
- scripts/common.py +131 -0
- scripts/inference.py +79 -0
- scripts/result.py +66 -0
- scripts/train.py +154 -0
- weight/best_model.pth +3 -0
.gitattributes
CHANGED
|
@@ -33,3 +33,5 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
|
|
|
|
|
|
|
|
| 33 |
*.zip filter=lfs diff=lfs merge=lfs -text
|
| 34 |
*.zst filter=lfs diff=lfs merge=lfs -text
|
| 35 |
*tfevents* filter=lfs diff=lfs merge=lfs -text
|
| 36 |
+
results/training_curves.png filter=lfs diff=lfs merge=lfs -text
|
| 37 |
+
results/validation_examples.png filter=lfs diff=lfs merge=lfs -text
|
README.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: apache-2.0
|
| 3 |
+
language:
|
| 4 |
+
- en
|
| 5 |
+
tags:
|
| 6 |
+
- OneScience
|
| 7 |
+
- fluid-dynamics
|
| 8 |
+
library_name: pytorch
|
| 9 |
+
---
|
| 10 |
+
|
| 11 |
+
# LiNO
|
| 12 |
+
|
| 13 |
+
## Model
|
| 14 |
+
|
| 15 |
+
This package reproduces the one-dimensional viscous Burgers final-state prediction experiment. The trained checkpoint is `weight/best_model.pth`; model code, configuration, training, inference, and visualization scripts are included. The package was trained once; reported numbers are not guarantees for another run.
|
| 16 |
+
|
| 17 |
+
## Data
|
| 18 |
+
|
| 19 |
+
Download only the needed file from [OneScience/fno](https://www.modelscope.cn/datasets/OneScience/fno) with `modelscope download OneScience/fno data/burgers_data_R10.mat --repo-type dataset --local_dir ./data`. The model reads `data/data/burgers_data_R10.mat`.
|
| 20 |
+
|
| 21 |
+
Data provenance: [https://www.modelscope.cn/datasets/OneScience/fno](https://www.modelscope.cn/datasets/OneScience/fno).
|
| 22 |
+
|
| 23 |
+
## Usage
|
| 24 |
+
|
| 25 |
+
```bash
|
| 26 |
+
hf download OneScience-Group/LiNO --local-dir ./LiNO
|
| 27 |
+
cd LiNO
|
| 28 |
+
pip install -r requirements.txt
|
| 29 |
+
python scripts/inference.py
|
| 30 |
+
python scripts/result.py
|
| 31 |
+
```
|
| 32 |
+
|
| 33 |
+
For training, run `python scripts/train.py` after installing the appropriate accelerator-enabled PyTorch environment and downloading the data above. See `config/config.yaml` for experiment parameters. Preserve the included checkpoint before retraining.
|
| 34 |
+
|
| 35 |
+
## Result and citation
|
| 36 |
+
|
| 37 |
+
validation relative L2: 0.00816638; paper Table 1: 0.0109. See `results/` for the recorded outputs and the [original paper or data page](https://arxiv.org/abs/2606.03262) for the research context. The dataset license, where not separately stated by its author, must not be inferred from the code license.
|
config.json
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"model_type": "lino_burgers",
|
| 3 |
+
"architectures": [
|
| 4 |
+
"LiNO"
|
| 5 |
+
],
|
| 6 |
+
"framework": "pytorch",
|
| 7 |
+
"experiment": "one-dimensional viscous Burgers final-state prediction",
|
| 8 |
+
"checkpoint": "weight/best_model.pth",
|
| 9 |
+
"dataset": "OneScience/fno"
|
| 10 |
+
}
|
config/config.yaml
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
seed: 42
|
| 2 |
+
data:
|
| 3 |
+
directory: data/data
|
| 4 |
+
filename: burgers_data_R10.mat
|
| 5 |
+
input_key: a
|
| 6 |
+
target_key: u
|
| 7 |
+
expected_shape: [2048, 8192]
|
| 8 |
+
resolution: 256
|
| 9 |
+
n_train: 1600
|
| 10 |
+
n_val: 448
|
| 11 |
+
interpolation: linear
|
| 12 |
+
normalization_eps: 1.0e-5
|
| 13 |
+
model:
|
| 14 |
+
in_channels: 2
|
| 15 |
+
out_channels: 1
|
| 16 |
+
width: 128
|
| 17 |
+
depth: 8
|
| 18 |
+
scattering: efficient
|
| 19 |
+
rate_range: 0.25
|
| 20 |
+
eps: 1.0e-6
|
| 21 |
+
training:
|
| 22 |
+
epochs: 500
|
| 23 |
+
batch_size: 4
|
| 24 |
+
learning_rate: 0.001
|
| 25 |
+
weight_decay: 1.0e-5
|
| 26 |
+
betas: [0.9, 0.999]
|
| 27 |
+
optimizer_eps: 1.0e-8
|
| 28 |
+
scheduler_step: 5
|
| 29 |
+
scheduler_gamma: 0.96
|
| 30 |
+
grad_clip: 1.0
|
| 31 |
+
num_workers: 0
|
| 32 |
+
log_interval: 50
|
| 33 |
+
device: cuda
|
| 34 |
+
checkpoint: weight/best_model.pth
|
| 35 |
+
last_checkpoint: weight/last_model.pth
|
| 36 |
+
inference:
|
| 37 |
+
batch_size: 4
|
| 38 |
+
device: cuda
|
| 39 |
+
results:
|
| 40 |
+
directory: results
|
model/__init__.py
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from .lino import LiNO
|
| 2 |
+
|
| 3 |
+
__all__ = ["LiNO"]
|
model/lino.py
ADDED
|
@@ -0,0 +1,110 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Independent implementation of LiNO, arXiv:2606.03262, Eqs. (5)-(44).
|
| 2 |
+
|
| 3 |
+
Only the efficient scattering variant for one-dimensional fields is implemented.
|
| 4 |
+
Unspecified numerical choices are documented in results/reproduction_spec.md.
|
| 5 |
+
"""
|
| 6 |
+
|
| 7 |
+
import torch
|
| 8 |
+
from torch import nn
|
| 9 |
+
from torch.nn import functional as F
|
| 10 |
+
|
| 11 |
+
|
| 12 |
+
class AdaptiveMirror(nn.Module):
|
| 13 |
+
def __init__(self, width, eps):
|
| 14 |
+
super().__init__()
|
| 15 |
+
self.direction = nn.Linear(width, width)
|
| 16 |
+
self.eps = eps
|
| 17 |
+
|
| 18 |
+
def forward(self, field):
|
| 19 |
+
normal = F.normalize(self.direction(field), dim=-1, eps=self.eps)
|
| 20 |
+
component = (field * normal).sum(-1, keepdim=True)
|
| 21 |
+
return field - 2 * component * normal
|
| 22 |
+
|
| 23 |
+
|
| 24 |
+
class AdaptiveRefraction(nn.Module):
|
| 25 |
+
def __init__(self, width, rate_range, eps):
|
| 26 |
+
super().__init__()
|
| 27 |
+
self.direction = nn.Linear(width, width)
|
| 28 |
+
self.contrast = nn.Parameter(torch.zeros(()))
|
| 29 |
+
self.rate_range, self.eps = rate_range, eps
|
| 30 |
+
|
| 31 |
+
def forward(self, field):
|
| 32 |
+
normal = F.normalize(self.direction(field), dim=-1, eps=self.eps)
|
| 33 |
+
normal_component = (field * normal).sum(-1, keepdim=True) * normal
|
| 34 |
+
return field + self.rate_range * self.contrast.tanh() * normal_component
|
| 35 |
+
|
| 36 |
+
|
| 37 |
+
class EfficientScattering(nn.Module):
|
| 38 |
+
def __init__(self, width, eps):
|
| 39 |
+
super().__init__()
|
| 40 |
+
self.query = nn.Linear(width, width, bias=False)
|
| 41 |
+
self.key = nn.Linear(width, width, bias=False)
|
| 42 |
+
self.value = nn.Linear(width, width, bias=False)
|
| 43 |
+
self.coordinates = nn.Sequential(nn.Linear(1, width), nn.GELU(), nn.Linear(width, width))
|
| 44 |
+
self.diffusion = nn.Conv1d(width, width, 3, padding=1, groups=width, bias=False)
|
| 45 |
+
self.local_projection = nn.Linear(width, width, bias=False)
|
| 46 |
+
self.local_logit = nn.Parameter(torch.tensor(-1.0))
|
| 47 |
+
self.log_strength = nn.Parameter(torch.tensor(-2.0))
|
| 48 |
+
self.scale, self.eps = width ** -0.5, eps
|
| 49 |
+
|
| 50 |
+
def forward(self, field, grid):
|
| 51 |
+
position = self.coordinates(grid)
|
| 52 |
+
query = F.elu(self.query(field) * self.scale + position) + 1
|
| 53 |
+
key = F.elu(self.key(field) * self.scale + position) + 1
|
| 54 |
+
value = self.value(field)
|
| 55 |
+
# Eq. (33): aggregate over space before contracting each query.
|
| 56 |
+
summary = key.transpose(1, 2) @ value
|
| 57 |
+
numerator = query @ summary
|
| 58 |
+
denominator = (query * key.sum(1, keepdim=True)).sum(-1, keepdim=True)
|
| 59 |
+
global_average = numerator / (denominator + self.eps)
|
| 60 |
+
local_field = self.diffusion(field.transpose(1, 2)).transpose(1, 2)
|
| 61 |
+
local_average = self.local_projection(local_field)
|
| 62 |
+
beta = self.local_logit.sigmoid()
|
| 63 |
+
average = (1 - beta) * global_average + beta * local_average
|
| 64 |
+
return self.log_strength.exp() * (average - field)
|
| 65 |
+
|
| 66 |
+
|
| 67 |
+
class LightBlock(nn.Module):
|
| 68 |
+
def __init__(self, width, rate_range, eps):
|
| 69 |
+
super().__init__()
|
| 70 |
+
self.before_light = nn.LayerNorm(width)
|
| 71 |
+
self.before_ffn = nn.LayerNorm(width)
|
| 72 |
+
self.mirror = AdaptiveMirror(width, eps)
|
| 73 |
+
self.refraction = AdaptiveRefraction(width, rate_range, eps)
|
| 74 |
+
self.scattering = EfficientScattering(width, eps)
|
| 75 |
+
self.gate = nn.Sequential(nn.Linear(width, 2 * width), nn.GELU(), nn.Linear(2 * width, 3))
|
| 76 |
+
self.mix_projection = nn.Linear(width, width)
|
| 77 |
+
self.ffn = nn.Sequential(nn.Linear(width, 2 * width), nn.GELU(), nn.Linear(2 * width, width))
|
| 78 |
+
|
| 79 |
+
def forward(self, field, grid):
|
| 80 |
+
normalized = self.before_light(field)
|
| 81 |
+
weights = self.gate(normalized.mean(1)).softmax(-1)
|
| 82 |
+
branches = (self.mirror(normalized), self.refraction(normalized), self.scattering(normalized, grid))
|
| 83 |
+
mixture = sum(weights[:, i, None, None] * branch for i, branch in enumerate(branches))
|
| 84 |
+
field = field + self.mix_projection(mixture)
|
| 85 |
+
return field + self.ffn(self.before_ffn(field))
|
| 86 |
+
|
| 87 |
+
|
| 88 |
+
class LiNO(nn.Module):
|
| 89 |
+
"""[batch, space, 2] -> [batch, space, 1], normalized field and x input."""
|
| 90 |
+
|
| 91 |
+
def __init__(self, in_channels=2, out_channels=1, width=128, depth=8,
|
| 92 |
+
scattering="efficient", rate_range=0.25, eps=1e-6):
|
| 93 |
+
super().__init__()
|
| 94 |
+
if scattering != "efficient":
|
| 95 |
+
raise ValueError("This experiment requires efficient scattering")
|
| 96 |
+
self.architecture = dict(in_channels=in_channels, out_channels=out_channels,
|
| 97 |
+
width=width, depth=depth, scattering=scattering,
|
| 98 |
+
rate_range=rate_range, eps=eps)
|
| 99 |
+
self.lift = nn.Linear(in_channels, width)
|
| 100 |
+
self.blocks = nn.ModuleList([LightBlock(width, rate_range, eps) for _ in range(depth)])
|
| 101 |
+
self.project = nn.Linear(width, out_channels)
|
| 102 |
+
|
| 103 |
+
def forward(self, inputs):
|
| 104 |
+
if inputs.ndim != 3 or inputs.shape[-1] != self.architecture["in_channels"]:
|
| 105 |
+
raise ValueError(f"Expected [B,N,{self.architecture['in_channels']}], got {inputs.shape}")
|
| 106 |
+
grid = torch.linspace(0, 1, inputs.shape[1], device=inputs.device, dtype=inputs.dtype).view(1, -1, 1)
|
| 107 |
+
field = self.lift(inputs)
|
| 108 |
+
for block in self.blocks:
|
| 109 |
+
field = block(field, grid)
|
| 110 |
+
return self.project(field)
|
requirements.txt
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
torch>=2.0
|
| 2 |
+
numpy>=1.24
|
| 3 |
+
scipy>=1.10
|
| 4 |
+
PyYAML>=6.0
|
| 5 |
+
matplotlib>=3.7
|
results/error_distribution.png
ADDED
|
results/history.csv
ADDED
|
The diff for this file is too large to render.
See raw diff
|
|
|
results/metrics.json
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"n_validation": 448,
|
| 3 |
+
"checkpoint_epoch": 495,
|
| 4 |
+
"best_epoch": 495,
|
| 5 |
+
"validation_relative_l2": 0.00816638395190239,
|
| 6 |
+
"validation_relative_l2_std": 0.0073033287189900875,
|
| 7 |
+
"validation_mse_physical": 5.692711056326516e-05,
|
| 8 |
+
"validation_rmse_physical": 0.00754500599578023,
|
| 9 |
+
"checkpoint_recorded_relative_l2": 0.008166384883224964,
|
| 10 |
+
"reload_metric_absolute_difference": 9.313225746154785e-10,
|
| 11 |
+
"paper_table1_relative_l2": 0.0109,
|
| 12 |
+
"ratio_to_paper": 0.7492095368717788,
|
| 13 |
+
"inference_seconds": 7.967788686975837,
|
| 14 |
+
"checkpoint_sha256": "82ca744dfb18510e680edf20b02213a585c6d859d269a2775c7192be8f67f821",
|
| 15 |
+
"device": "BW"
|
| 16 |
+
}
|
results/per_sample_metrics.csv
ADDED
|
@@ -0,0 +1,449 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
validation_index,source_index,relative_l2,mse_physical
|
| 2 |
+
0,1354,0.00711664417758584,2.228247467428446e-06
|
| 3 |
+
1,1059,0.010785155929625034,4.252611688571051e-06
|
| 4 |
+
2,1871,0.005162909626960754,3.0164053441694705e-06
|
| 5 |
+
3,244,0.0052434164099395275,3.2187308534048498e-06
|
| 6 |
+
4,2007,0.003628770587965846,3.532600430844468e-06
|
| 7 |
+
5,830,0.015044189989566803,0.00023930144379846752
|
| 8 |
+
6,1589,0.008218521252274513,3.109377212240361e-05
|
| 9 |
+
7,1842,0.00549214007332921,2.5418987661396386e-06
|
| 10 |
+
8,1517,0.012739766389131546,6.365851731970906e-06
|
| 11 |
+
9,669,0.00572951091453433,4.729304237116594e-06
|
| 12 |
+
10,789,0.010234244167804718,2.6733359845820814e-05
|
| 13 |
+
11,848,0.019002048298716545,0.00015161947521846741
|
| 14 |
+
12,1350,0.003998751286417246,4.376272045192309e-06
|
| 15 |
+
13,263,0.011608125641942024,0.00010688892507459968
|
| 16 |
+
14,1479,0.007870284840464592,2.205451210102183e-06
|
| 17 |
+
15,1676,0.0061773089691996574,3.1959466468833853e-06
|
| 18 |
+
16,544,0.00969443004578352,1.4994059711170848e-05
|
| 19 |
+
17,1353,0.009250371716916561,4.530145815806463e-06
|
| 20 |
+
18,498,0.006371534429490566,5.431620593299158e-06
|
| 21 |
+
19,1057,0.01664942130446434,6.8221042965888046e-06
|
| 22 |
+
20,107,0.008694815449416637,3.933975676773116e-05
|
| 23 |
+
21,1757,0.0058263326063752174,9.728351869853213e-06
|
| 24 |
+
22,1143,0.005022606812417507,6.099335678300122e-06
|
| 25 |
+
23,114,0.01071125827729702,2.432240580674261e-05
|
| 26 |
+
24,1064,0.004666423425078392,2.2512263058160897e-06
|
| 27 |
+
25,1484,0.00266086682677269,1.5564339719276177e-06
|
| 28 |
+
26,1722,0.0030059986747801304,3.0047604013816454e-06
|
| 29 |
+
27,133,0.0037198467180132866,3.4626395972736645e-06
|
| 30 |
+
28,302,0.004690419416874647,3.3762889870558865e-06
|
| 31 |
+
29,213,0.005868017673492432,9.989330465032253e-06
|
| 32 |
+
30,322,0.012917899526655674,2.353449417569209e-05
|
| 33 |
+
31,1279,0.004816899076104164,2.2847239051770885e-06
|
| 34 |
+
32,157,0.019599126651883125,0.00040160721982829273
|
| 35 |
+
33,749,0.003745520254597068,4.128196906094672e-06
|
| 36 |
+
34,410,0.012028106488287449,4.210285169392591e-06
|
| 37 |
+
35,641,0.0063367267139256,2.3856234747654526e-06
|
| 38 |
+
36,1368,0.014181560836732388,2.7539140319277067e-06
|
| 39 |
+
37,813,0.0046987757086753845,9.029875400301535e-06
|
| 40 |
+
38,172,0.0034006694331765175,1.6219134977291105e-06
|
| 41 |
+
39,153,0.009642045944929123,1.48695835378021e-05
|
| 42 |
+
40,32,0.0027958983555436134,1.3832310514771962e-06
|
| 43 |
+
41,247,0.00933319702744484,1.196909124701051e-05
|
| 44 |
+
42,2030,0.0037242486141622066,7.3754554250626825e-06
|
| 45 |
+
43,736,0.004845266696065664,8.737778443901334e-06
|
| 46 |
+
44,696,0.004661208018660545,4.865990376856644e-06
|
| 47 |
+
45,953,0.0026221654843539,1.158457621386333e-06
|
| 48 |
+
46,1581,0.004557488951832056,6.879689863126259e-06
|
| 49 |
+
47,198,0.00576527277007699,3.3386775157850934e-06
|
| 50 |
+
48,1784,0.005012583453208208,3.0111359592410736e-06
|
| 51 |
+
49,1811,0.007315428461879492,4.302055003790883e-06
|
| 52 |
+
50,1538,0.007978163659572601,5.748988769482821e-06
|
| 53 |
+
51,882,0.002347120549529791,1.7831223431130638e-06
|
| 54 |
+
52,461,0.013186206109821796,7.488267146982253e-05
|
| 55 |
+
53,1299,0.020793089643120766,1.585311838425696e-05
|
| 56 |
+
54,179,0.003769457573071122,2.198094989580568e-06
|
| 57 |
+
55,998,0.013764363713562489,8.778295523370616e-06
|
| 58 |
+
56,553,0.005928783677518368,1.8829905457096174e-05
|
| 59 |
+
57,356,0.0062231747433543205,7.193594683485571e-06
|
| 60 |
+
58,633,0.002795632230117917,2.6581233214528766e-06
|
| 61 |
+
59,363,0.008872496895492077,1.54593162733363e-05
|
| 62 |
+
60,1994,0.0035931093152612448,3.928405931219459e-06
|
| 63 |
+
61,2002,0.006632464937865734,3.3086480470956303e-06
|
| 64 |
+
62,819,0.02143709734082222,1.6978867279249243e-05
|
| 65 |
+
63,132,0.007151931058615446,2.6269772206433117e-06
|
| 66 |
+
64,1628,0.008993059396743774,2.0662308088503778e-05
|
| 67 |
+
65,1972,0.0035680285654962063,2.0197676349198446e-06
|
| 68 |
+
66,195,0.003384748473763466,4.691950834967429e-06
|
| 69 |
+
67,1952,0.003126608207821846,2.5505437406536657e-06
|
| 70 |
+
68,1603,0.018666958436369896,3.578422820282867e-06
|
| 71 |
+
69,720,0.008143308572471142,1.3676560229214374e-05
|
| 72 |
+
70,1631,0.0042767697013914585,2.143120354958228e-06
|
| 73 |
+
71,421,0.006716794800013304,5.242467523203231e-06
|
| 74 |
+
72,175,0.007178325671702623,3.721777829923667e-06
|
| 75 |
+
73,1159,0.008334536105394363,5.3721108997706324e-05
|
| 76 |
+
74,981,0.007647104095667601,2.6886073101195507e-05
|
| 77 |
+
75,935,0.020851990208029747,1.29914242279483e-05
|
| 78 |
+
76,82,0.002792434999719262,1.4789338820264675e-06
|
| 79 |
+
77,296,0.004027648363262415,3.1183467399387155e-06
|
| 80 |
+
78,1649,0.01279111672192812,9.122803930949885e-06
|
| 81 |
+
79,361,0.00341061525978148,1.1060423048547818e-06
|
| 82 |
+
80,197,0.0032491153106093407,1.8587033991934732e-06
|
| 83 |
+
81,414,0.007140381261706352,7.946927325974684e-06
|
| 84 |
+
82,1920,0.012520487420260906,1.4377383195096627e-05
|
| 85 |
+
83,1418,0.0069588422775268555,5.312482244335115e-06
|
| 86 |
+
84,645,0.004067427013069391,1.7168031263281591e-06
|
| 87 |
+
85,1480,0.00808851420879364,1.7206006305059418e-05
|
| 88 |
+
86,519,0.008796729147434235,8.398666977882385e-06
|
| 89 |
+
87,1045,0.002732536057010293,1.5921785916361841e-06
|
| 90 |
+
88,1177,0.010690517723560333,3.6772808016394265e-06
|
| 91 |
+
89,667,0.003798455698415637,4.017812443635194e-06
|
| 92 |
+
90,535,0.00454864464700222,1.0694540151234833e-06
|
| 93 |
+
91,240,0.006262573413550854,1.0844333701243158e-05
|
| 94 |
+
92,275,0.004725808743387461,3.7141551274544327e-06
|
| 95 |
+
93,1935,0.0028266427107155323,2.847625182766933e-06
|
| 96 |
+
94,1215,0.004531280603259802,2.915439836215228e-06
|
| 97 |
+
95,853,0.0073411366902291775,3.0972817057772772e-06
|
| 98 |
+
96,29,0.042283203452825546,0.0008643245091661811
|
| 99 |
+
97,1910,0.007519978564232588,3.6901587918691803e-06
|
| 100 |
+
98,1716,0.00588527787476778,1.029815393849276e-05
|
| 101 |
+
99,1070,0.007567178923636675,4.370492661109893e-06
|
| 102 |
+
100,1268,0.0037215552292764187,4.299009106034646e-06
|
| 103 |
+
101,1020,0.0036112633533775806,1.587126575941511e-06
|
| 104 |
+
102,809,0.002513773972168565,1.20823153793026e-06
|
| 105 |
+
103,1578,0.0029218075796961784,3.3401120163034648e-06
|
| 106 |
+
104,1009,0.0051346151158213615,1.6821747976791812e-06
|
| 107 |
+
105,1642,0.0055000693537294865,1.7480095948485541e-06
|
| 108 |
+
106,740,0.007054322399199009,1.187104317068588e-05
|
| 109 |
+
107,1690,0.014540429227054119,1.9091479771304876e-05
|
| 110 |
+
108,700,0.011463710106909275,1.1331908353895415e-05
|
| 111 |
+
109,675,0.004370935261249542,4.6980921979411505e-06
|
| 112 |
+
110,1610,0.00915885716676712,3.38802283295081e-06
|
| 113 |
+
111,1467,0.006509630940854549,1.5838497347431257e-05
|
| 114 |
+
112,1636,0.004922507796436548,6.1838491092203185e-06
|
| 115 |
+
113,108,0.017360197380185127,0.00022067446843720973
|
| 116 |
+
114,1080,0.0032281489111483097,5.566618710872717e-06
|
| 117 |
+
115,849,0.01752321608364582,0.0001538078358862549
|
| 118 |
+
116,512,0.007081252988427877,2.5792778615141287e-06
|
| 119 |
+
117,1911,0.006580441724509001,4.6004706746316515e-06
|
| 120 |
+
118,1456,0.003888176754117012,2.21880804929242e-06
|
| 121 |
+
119,55,0.005579050630331039,1.9931894712499343e-05
|
| 122 |
+
120,1337,0.011543052271008492,3.0953284294810146e-05
|
| 123 |
+
121,515,0.003227449720725417,2.492949988663895e-06
|
| 124 |
+
122,1850,0.008269901387393475,6.460763870563824e-06
|
| 125 |
+
123,1461,0.008146455511450768,2.7601123292697594e-05
|
| 126 |
+
124,1624,0.003822250757366419,3.919851224054582e-06
|
| 127 |
+
125,36,0.004014691337943077,8.048156701079279e-07
|
| 128 |
+
126,918,0.007225134409964085,6.6003863139485475e-06
|
| 129 |
+
127,1958,0.0026516695506870747,3.702624780999031e-06
|
| 130 |
+
128,1969,0.0030631728004664183,3.6276649097999325e-06
|
| 131 |
+
129,404,0.0036572958342731,4.012888439319795e-06
|
| 132 |
+
130,704,0.007990003563463688,4.7529852054140065e-06
|
| 133 |
+
131,587,0.0027365279383957386,1.00052056950517e-06
|
| 134 |
+
132,948,0.0030345760751515627,4.294182417652337e-06
|
| 135 |
+
133,1627,0.0053206393495202065,1.541033088869881e-05
|
| 136 |
+
134,330,0.00736326863989234,1.3518520063371398e-05
|
| 137 |
+
135,66,0.006047214847058058,7.814413038431667e-06
|
| 138 |
+
136,1619,0.10730504244565964,0.009693462401628494
|
| 139 |
+
137,1010,0.004168729763478041,3.0554961085726973e-06
|
| 140 |
+
138,1694,0.005540387239307165,1.9312731183163123e-06
|
| 141 |
+
139,2031,0.007648906204849482,1.4060121884540422e-06
|
| 142 |
+
140,1779,0.012713056989014149,5.5292716751864646e-06
|
| 143 |
+
141,1641,0.007197896484285593,2.101934569509467e-06
|
| 144 |
+
142,1618,0.019664501771330833,1.6306255929521285e-05
|
| 145 |
+
143,348,0.008284248411655426,4.732074557978194e-06
|
| 146 |
+
144,797,0.00511737447232008,3.7504210013139527e-06
|
| 147 |
+
145,588,0.013640097342431545,5.1176648412365466e-05
|
| 148 |
+
146,621,0.008323821239173412,1.324365621258039e-05
|
| 149 |
+
147,485,0.007083057425916195,6.150289664219599e-06
|
| 150 |
+
148,1388,0.0036290495190769434,3.5542284422263037e-06
|
| 151 |
+
149,10,0.0028073242865502834,3.2556413316342514e-06
|
| 152 |
+
150,1891,0.012974357232451439,1.1344506674504373e-05
|
| 153 |
+
151,1369,0.013003332540392876,6.618884526687907e-06
|
| 154 |
+
152,1562,0.007046903949230909,7.281198577402392e-06
|
| 155 |
+
153,332,0.004483971279114485,1.2004069503745995e-05
|
| 156 |
+
154,374,0.004115441348403692,3.4746692563203396e-06
|
| 157 |
+
155,1663,0.019288672134280205,1.3687284081242979e-05
|
| 158 |
+
156,474,0.004325499292463064,1.227297616424039e-05
|
| 159 |
+
157,1817,0.007227790541946888,1.0742267477326095e-05
|
| 160 |
+
158,124,0.008479476906359196,2.7071755539509468e-05
|
| 161 |
+
159,1882,0.003726779716089368,6.124154424469452e-06
|
| 162 |
+
160,391,0.004102138802409172,3.299048330518417e-06
|
| 163 |
+
161,1729,0.0033820546232163906,2.4511455194442533e-06
|
| 164 |
+
162,1665,0.008583535440266132,4.2541632865322754e-05
|
| 165 |
+
163,1717,0.008087593130767345,1.9825234630843624e-05
|
| 166 |
+
164,1650,0.003806405933573842,2.5486547201580834e-06
|
| 167 |
+
165,1713,0.012836662121117115,3.0457704269792885e-06
|
| 168 |
+
166,962,0.0034183457028120756,1.349240733361512e-06
|
| 169 |
+
167,2013,0.019023047760128975,1.2403854270814918e-05
|
| 170 |
+
168,607,0.007387745194137096,7.288029792107409e-06
|
| 171 |
+
169,1990,0.0040338290855288506,7.712176739005372e-06
|
| 172 |
+
170,639,0.005095656495541334,1.3750841389992274e-06
|
| 173 |
+
171,992,0.00892646238207817,2.4165572540368885e-05
|
| 174 |
+
172,1397,0.0046632359735667706,2.351958301005652e-06
|
| 175 |
+
173,1272,0.006540737114846706,3.374452717253007e-06
|
| 176 |
+
174,1164,0.016469566151499748,0.00017030596791300923
|
| 177 |
+
175,164,0.0041435095481574535,4.602671651809942e-06
|
| 178 |
+
176,1889,0.022296158596873283,6.518412646983052e-06
|
| 179 |
+
177,986,0.004043533466756344,2.686835159693146e-06
|
| 180 |
+
178,7,0.013829351402819157,5.607424827758223e-05
|
| 181 |
+
179,606,0.0027078907005488873,1.2415016499289777e-06
|
| 182 |
+
180,2029,0.007753848563879728,4.121092388231773e-06
|
| 183 |
+
181,1885,0.005217907018959522,1.32902923724032e-05
|
| 184 |
+
182,355,0.005100321490317583,2.420761575194774e-06
|
| 185 |
+
183,176,0.005044558551162481,2.3335118385148235e-05
|
| 186 |
+
184,147,0.003967367112636566,3.418270807742374e-06
|
| 187 |
+
185,1700,0.010935924015939236,5.736328603234142e-06
|
| 188 |
+
186,1907,0.003110045799985528,2.943419985967921e-06
|
| 189 |
+
187,146,0.004360048566013575,3.836929408862488e-06
|
| 190 |
+
188,733,0.0048963348381221294,8.526852070644964e-06
|
| 191 |
+
189,982,0.004025869537144899,5.162616616871674e-06
|
| 192 |
+
190,786,0.019575435668230057,0.0003581016790121794
|
| 193 |
+
191,615,0.004903280176222324,4.797236215381417e-06
|
| 194 |
+
192,1326,0.010631110519170761,7.894624104665127e-06
|
| 195 |
+
193,609,0.00532852066680789,6.722496891597984e-06
|
| 196 |
+
194,194,0.00886658113449812,4.482977237785235e-05
|
| 197 |
+
195,793,0.03469729423522949,1.0402447514934465e-05
|
| 198 |
+
196,1922,0.00411422923207283,3.1146234960033325e-06
|
| 199 |
+
197,1584,0.0060142893344163895,4.736370101454668e-06
|
| 200 |
+
198,432,0.0032389943953603506,3.604426638048608e-06
|
| 201 |
+
199,1039,0.006015590392053127,4.903671651845798e-06
|
| 202 |
+
200,459,0.009616490453481674,4.5235959987621754e-05
|
| 203 |
+
201,742,0.010077573359012604,7.093654858181253e-06
|
| 204 |
+
202,1938,0.008122463710606098,4.580372660711873e-06
|
| 205 |
+
203,1128,0.010109210386872292,6.74665125188767e-06
|
| 206 |
+
204,103,0.005802322179079056,3.743682555068517e-06
|
| 207 |
+
205,578,0.012403568252921104,1.8914575775852427e-05
|
| 208 |
+
206,728,0.006744010839611292,3.883196313836379e-06
|
| 209 |
+
207,1831,0.005485731642693281,1.2956005775777157e-05
|
| 210 |
+
208,891,0.009195090271532536,5.087063618702814e-05
|
| 211 |
+
209,1105,0.005199302453547716,4.14807936977013e-06
|
| 212 |
+
210,389,0.004813362844288349,3.6206770346325357e-06
|
| 213 |
+
211,125,0.003863641992211342,6.724615559505764e-06
|
| 214 |
+
212,647,0.005339846480637789,8.588672244513873e-06
|
| 215 |
+
213,1184,0.0024689394049346447,2.2673909825243754e-06
|
| 216 |
+
214,1708,0.005369075108319521,1.3682290955330245e-05
|
| 217 |
+
215,473,0.007041593082249165,1.8022434232989326e-05
|
| 218 |
+
216,575,0.004418318625539541,4.6003988245502114e-06
|
| 219 |
+
217,216,0.00951248686760664,4.5657863665837795e-05
|
| 220 |
+
218,2043,0.006146934349089861,4.89267949888017e-06
|
| 221 |
+
219,1799,0.005772029515355825,2.974374865516438e-06
|
| 222 |
+
220,1431,0.013288415968418121,1.0651011507434305e-05
|
| 223 |
+
221,689,0.0037264851853251457,2.172588210669346e-06
|
| 224 |
+
222,288,0.005814157426357269,1.0468536856933497e-05
|
| 225 |
+
223,796,0.006957488600164652,1.262526711798273e-05
|
| 226 |
+
224,2020,0.012441140599548817,9.596064046490937e-06
|
| 227 |
+
225,1826,0.018880100920796394,2.1600959371426143e-05
|
| 228 |
+
226,1092,0.003720294451341033,3.3361673104082e-06
|
| 229 |
+
227,373,0.012661045417189598,4.408223958307644e-06
|
| 230 |
+
228,1050,0.009667755104601383,3.820172423729673e-06
|
| 231 |
+
229,567,0.009975378401577473,2.7452044378151186e-05
|
| 232 |
+
230,1537,0.007347908802330494,1.813111884985119e-05
|
| 233 |
+
231,1515,0.005835228133946657,2.458348717482295e-06
|
| 234 |
+
232,993,0.005520327016711235,4.950969014316797e-06
|
| 235 |
+
233,1670,0.008548024110496044,6.063990895199822e-06
|
| 236 |
+
234,320,0.0032920464873313904,2.2883455130795483e-06
|
| 237 |
+
235,1225,0.0061637843027710915,1.2297085049794987e-05
|
| 238 |
+
236,711,0.006888331845402718,5.832199349242728e-06
|
| 239 |
+
237,1387,0.011138519272208214,0.0001003342040348798
|
| 240 |
+
238,1018,0.006726689636707306,1.0698750884330366e-05
|
| 241 |
+
239,558,0.008592606522142887,6.235577893676236e-05
|
| 242 |
+
240,1849,0.008622732944786549,4.239862391841598e-05
|
| 243 |
+
241,678,0.0068213543854653835,3.0620969482697546e-05
|
| 244 |
+
242,1005,0.006941300351172686,2.6587995307636447e-06
|
| 245 |
+
243,581,0.005243408959358931,3.408073553146096e-06
|
| 246 |
+
244,995,0.010606508702039719,2.8171954909339547e-05
|
| 247 |
+
245,72,0.007090189028531313,3.0799437809037045e-06
|
| 248 |
+
246,128,0.00782877579331398,4.992010872229002e-06
|
| 249 |
+
247,903,0.01586243323981762,3.3353462640661746e-05
|
| 250 |
+
248,282,0.005650964565575123,5.474219506140798e-06
|
| 251 |
+
249,846,0.004851967096328735,7.642621312697884e-06
|
| 252 |
+
250,1506,0.01186172291636467,1.9330374925630167e-05
|
| 253 |
+
251,1574,0.003297090530395508,3.5328187095728936e-06
|
| 254 |
+
252,403,0.004496660083532333,8.701007573108654e-06
|
| 255 |
+
253,654,0.008243845775723457,2.982130172313191e-05
|
| 256 |
+
254,1192,0.0047381785698235035,3.98824704461731e-06
|
| 257 |
+
255,628,0.0075777145102620125,1.2183518265374005e-05
|
| 258 |
+
256,2028,0.014243428595364094,7.416352218569955e-06
|
| 259 |
+
257,1887,0.010272026993334293,5.138946289662272e-05
|
| 260 |
+
258,769,0.004848693031817675,6.368166850734269e-06
|
| 261 |
+
259,239,0.008136006072163582,1.1608078239078168e-05
|
| 262 |
+
260,1417,0.004709509667009115,5.926028734393185e-06
|
| 263 |
+
261,8,0.01162799820303917,6.691028829663992e-06
|
| 264 |
+
262,341,0.010172762908041477,1.0251277672068682e-05
|
| 265 |
+
263,703,0.004452997352927923,3.976739208155777e-06
|
| 266 |
+
264,862,0.003690241137519479,5.862432317371713e-06
|
| 267 |
+
265,58,0.0031082502100616693,3.819268840743462e-06
|
| 268 |
+
266,1495,0.005842810031026602,3.625386398198316e-06
|
| 269 |
+
267,783,0.016494691371917725,8.196604539989494e-06
|
| 270 |
+
268,1916,0.0034309595357626677,1.7432229242331232e-06
|
| 271 |
+
269,1277,0.011952207423746586,7.015356823103502e-05
|
| 272 |
+
270,1974,0.010369701310992241,5.504167802428128e-06
|
| 273 |
+
271,1462,0.012274852022528648,8.835029802867211e-06
|
| 274 |
+
272,1545,0.007033115718513727,2.4022890556807397e-06
|
| 275 |
+
273,709,0.0051637087017297745,5.795956440124428e-06
|
| 276 |
+
274,1077,0.009799906052649021,5.087582758278586e-05
|
| 277 |
+
275,803,0.003923915792256594,2.7785342808783753e-06
|
| 278 |
+
276,697,0.0038375132717192173,3.3220028399227886e-06
|
| 279 |
+
277,17,0.004452887456864119,1.257343910765485e-06
|
| 280 |
+
278,478,0.0029366472736001015,1.5259664678524132e-06
|
| 281 |
+
279,1917,0.0054441094398498535,1.1282214472885244e-05
|
| 282 |
+
280,331,0.012705250643193722,1.1212253411940765e-05
|
| 283 |
+
281,312,0.008039274252951145,2.786834784274106e-06
|
| 284 |
+
282,791,0.005858445540070534,1.2905632502224762e-05
|
| 285 |
+
283,170,0.003654841333627701,4.103749688511016e-06
|
| 286 |
+
284,1980,0.0044944570399820805,1.0028017641161568e-05
|
| 287 |
+
285,739,0.007183007430285215,3.359556558280019e-06
|
| 288 |
+
286,1866,0.006785457953810692,1.747641545080114e-05
|
| 289 |
+
287,1621,0.010399449616670609,1.424878337275004e-05
|
| 290 |
+
288,1344,0.004574065562337637,3.998399733973201e-06
|
| 291 |
+
289,1440,0.04486759379506111,0.0022540211211889982
|
| 292 |
+
290,1752,0.015797685831785202,2.512159335310571e-05
|
| 293 |
+
291,1561,0.019587213173508644,0.0002099344419548288
|
| 294 |
+
292,118,0.011328237131237984,1.4373837075254414e-05
|
| 295 |
+
293,1964,0.00373033806681633,1.0633656302161398e-06
|
| 296 |
+
294,463,0.020888056606054306,0.00036138854920864105
|
| 297 |
+
295,1786,0.007830035872757435,2.078150828310754e-06
|
| 298 |
+
296,1061,0.03998783230781555,0.0017642977181822062
|
| 299 |
+
297,369,0.003534087911248207,2.1010489490436157e-06
|
| 300 |
+
298,1783,0.004086033906787634,3.828612534562126e-06
|
| 301 |
+
299,871,0.004295507445931435,2.4805624434520723e-06
|
| 302 |
+
300,1659,0.008249734528362751,2.0233308532624505e-05
|
| 303 |
+
301,1454,0.0052932570688426495,4.2254405343555845e-06
|
| 304 |
+
302,583,0.02400384098291397,0.0004934982862323523
|
| 305 |
+
303,1331,0.005475938320159912,2.2334130335366353e-05
|
| 306 |
+
304,764,0.0045458655804395676,3.1304180083679967e-06
|
| 307 |
+
305,1748,0.013972042128443718,5.910825166210998e-06
|
| 308 |
+
306,427,0.003397156950086355,1.5576127907479531e-06
|
| 309 |
+
307,1309,0.010959704406559467,1.1129241102025844e-05
|
| 310 |
+
308,752,0.010071167722344398,6.563645729329437e-05
|
| 311 |
+
309,1881,0.0059829456731677055,1.0738443961599842e-05
|
| 312 |
+
310,1117,0.004652582108974457,5.720540684706066e-06
|
| 313 |
+
311,1695,0.007664917968213558,1.0057332474389113e-05
|
| 314 |
+
312,392,0.008071035146713257,2.6356492526247166e-05
|
| 315 |
+
313,430,0.0055758277885615826,1.3050004781689495e-05
|
| 316 |
+
314,1763,0.0077276979573071,7.089849987096386e-06
|
| 317 |
+
315,497,0.003182126907631755,4.118501237826422e-06
|
| 318 |
+
316,1275,0.012068829499185085,2.1639209080603905e-05
|
| 319 |
+
317,234,0.013578591868281364,6.0878974181832746e-05
|
| 320 |
+
318,87,0.0030860030092298985,2.3597729068569606e-06
|
| 321 |
+
319,1166,0.020563749596476555,4.3402210394560825e-06
|
| 322 |
+
320,1099,0.008293607272207737,4.685509793489473e-06
|
| 323 |
+
321,1222,0.002800560090690851,1.8454970813763794e-06
|
| 324 |
+
322,303,0.006599606946110725,2.219142061221646e-06
|
| 325 |
+
323,384,0.011275193654000759,3.1071267585502937e-06
|
| 326 |
+
324,1395,0.004302851855754852,1.1724775504262652e-05
|
| 327 |
+
325,1295,0.012742860242724419,9.160882473224774e-05
|
| 328 |
+
326,912,0.004864925984293222,6.161887085909257e-06
|
| 329 |
+
327,105,0.005097734276205301,5.058087481302209e-06
|
| 330 |
+
328,1548,0.007526828907430172,2.41211546381237e-06
|
| 331 |
+
329,2041,0.008274940773844719,1.5901210645097308e-05
|
| 332 |
+
330,3,0.013608796522021294,1.7969974578591064e-05
|
| 333 |
+
331,1836,0.0042699179612100124,6.38377241557464e-06
|
| 334 |
+
332,1302,0.007048876024782658,2.1042544176452793e-05
|
| 335 |
+
333,774,0.0032877575140446424,3.495284545351751e-06
|
| 336 |
+
334,1652,0.003602519165724516,3.44957402376167e-06
|
| 337 |
+
335,1237,0.00501409312710166,3.849938366329297e-06
|
| 338 |
+
336,1588,0.008198495022952557,1.20716322271619e-05
|
| 339 |
+
337,2024,0.047612953931093216,0.0020715976133942604
|
| 340 |
+
338,670,0.002806120552122593,2.3435570710717e-06
|
| 341 |
+
339,1195,0.007337750867009163,2.1973821276333183e-05
|
| 342 |
+
340,574,0.005096455570310354,4.694812560046557e-06
|
| 343 |
+
341,1858,0.007012358866631985,3.267979536758503e-06
|
| 344 |
+
342,2005,0.010681155137717724,3.702707545016892e-05
|
| 345 |
+
343,186,0.0027373922057449818,1.8386889450994204e-06
|
| 346 |
+
344,767,0.005201844498515129,1.7971013221540488e-05
|
| 347 |
+
345,1436,0.005214421544224024,3.925587407138664e-06
|
| 348 |
+
346,1489,0.015890518203377724,8.481130862492137e-06
|
| 349 |
+
347,1407,0.007668566890060902,3.427387582632946e-06
|
| 350 |
+
348,1979,0.006292196922004223,5.855485596839571e-06
|
| 351 |
+
349,688,0.008275184780359268,9.112153747992124e-06
|
| 352 |
+
350,1078,0.0036614560522139072,5.506354682438541e-06
|
| 353 |
+
351,150,0.014428580179810524,4.679478024627315e-06
|
| 354 |
+
352,1685,0.019184472039341927,0.00024031553766690195
|
| 355 |
+
353,1240,0.004863765090703964,3.931779247068334e-06
|
| 356 |
+
354,211,0.005806264467537403,3.8801899790996686e-06
|
| 357 |
+
355,1968,0.003220674116164446,3.969436420447892e-06
|
| 358 |
+
356,1447,0.012549413368105888,7.910454769444186e-06
|
| 359 |
+
357,1327,0.0020490370225161314,8.488435696563101e-07
|
| 360 |
+
358,1774,0.003385997610166669,1.9713495476025855e-06
|
| 361 |
+
359,1399,0.008613907732069492,2.70579221250955e-05
|
| 362 |
+
360,551,0.012549311853945255,6.799471520935185e-06
|
| 363 |
+
361,476,0.0037223929539322853,6.399191534001147e-06
|
| 364 |
+
362,623,0.005433864425867796,1.9866376533173025e-05
|
| 365 |
+
363,1252,0.010122546926140785,4.093217739864485e-06
|
| 366 |
+
364,916,0.005714761558920145,2.5066983653232455e-06
|
| 367 |
+
365,1629,0.0034272971097379923,2.147247414541198e-06
|
| 368 |
+
366,1793,0.009902245365083218,3.0928531487006694e-05
|
| 369 |
+
367,632,0.010075864382088184,1.2468903150875121e-05
|
| 370 |
+
368,854,0.010902026668190956,0.00010768228094093502
|
| 371 |
+
369,1740,0.0064199636690318584,2.4167859464796493e-06
|
| 372 |
+
370,1634,0.009051724337041378,6.038916126271943e-06
|
| 373 |
+
371,1320,0.0063988687470555305,4.458368039195193e-06
|
| 374 |
+
372,2046,0.004685756750404835,4.253170118317939e-06
|
| 375 |
+
373,802,0.008411620743572712,9.960245733964257e-06
|
| 376 |
+
374,236,0.0074165938422083855,2.8197582651046105e-06
|
| 377 |
+
375,1122,0.0039044220466166735,2.7991607112198835e-06
|
| 378 |
+
376,477,0.008462456054985523,2.6565936423139647e-05
|
| 379 |
+
377,1243,0.007762406952679157,1.3722168660024181e-05
|
| 380 |
+
378,1135,0.015380424447357655,1.6592264728387818e-05
|
| 381 |
+
379,794,0.004590156953781843,4.8630231503921095e-06
|
| 382 |
+
380,232,0.004656676668673754,9.526956091576722e-06
|
| 383 |
+
381,1614,0.0036807102151215076,5.9938929553027265e-06
|
| 384 |
+
382,1898,0.005461161956191063,5.496305675478652e-06
|
| 385 |
+
383,804,0.009752052836120129,1.214987423736602e-05
|
| 386 |
+
384,1870,0.00811659637838602,2.3828497432987206e-05
|
| 387 |
+
385,1026,0.009386335499584675,6.246085104066879e-05
|
| 388 |
+
386,1991,0.011349859647452831,1.1492800695123151e-05
|
| 389 |
+
387,54,0.005545456428080797,1.1166937838424928e-05
|
| 390 |
+
388,1809,0.005953263491392136,5.453948233480332e-06
|
| 391 |
+
389,428,0.005132859572768211,5.217946181801381e-06
|
| 392 |
+
390,1196,0.003744768677279353,4.89605463371845e-06
|
| 393 |
+
391,1557,0.007695895619690418,4.9762656999519095e-06
|
| 394 |
+
392,958,0.004905289504677057,2.826092895702459e-06
|
| 395 |
+
393,401,0.0028787071350961924,1.661192641222442e-06
|
| 396 |
+
394,1893,0.015774184837937355,0.0001840644545154646
|
| 397 |
+
395,1758,0.007271637674421072,9.284838597523049e-06
|
| 398 |
+
396,1232,0.0030909401830285788,3.255347110098228e-06
|
| 399 |
+
397,1242,0.006966359447687864,4.164281199336983e-05
|
| 400 |
+
398,820,0.006754095666110516,1.058532052411465e-05
|
| 401 |
+
399,231,0.009276623837649822,3.2407318940386176e-05
|
| 402 |
+
400,1555,0.005981341935694218,2.990755547216395e-06
|
| 403 |
+
401,273,0.005077522248029709,3.8484322431031615e-06
|
| 404 |
+
402,35,0.004291788674890995,1.5443066558873397e-06
|
| 405 |
+
403,1540,0.00965913012623787,2.0924460386595456e-06
|
| 406 |
+
404,1983,0.006420684512704611,3.720250560945715e-06
|
| 407 |
+
405,1686,0.00538730388507247,3.1811700864636805e-06
|
| 408 |
+
406,536,0.011519565246999264,5.420846719061956e-05
|
| 409 |
+
407,917,0.005672916769981384,4.032057404401712e-06
|
| 410 |
+
408,1796,0.017428023740649223,0.00021097686840221286
|
| 411 |
+
409,1864,0.006404608488082886,1.5403345969389193e-05
|
| 412 |
+
410,1674,0.017466647550463676,0.00012999882164876908
|
| 413 |
+
411,1212,0.005612290930002928,1.2711517229035962e-05
|
| 414 |
+
412,357,0.00220856792293489,1.5361255236712168e-06
|
| 415 |
+
413,909,0.005833177361637354,3.9552937778353225e-06
|
| 416 |
+
414,1904,0.005338562652468681,1.9105324099655263e-05
|
| 417 |
+
415,1234,0.013170497491955757,3.636056499090046e-05
|
| 418 |
+
416,2040,0.013932391069829464,1.6289013728965074e-05
|
| 419 |
+
417,1211,0.006600424647331238,5.15655119670555e-06
|
| 420 |
+
418,847,0.009446552954614162,3.758804450626485e-05
|
| 421 |
+
419,771,0.0060704913921654224,3.3022515708580613e-06
|
| 422 |
+
420,1477,0.02455759048461914,0.0004278153064660728
|
| 423 |
+
421,1728,0.009784922935068607,9.110764949582517e-06
|
| 424 |
+
422,1587,0.011792313307523727,1.4925566574675031e-05
|
| 425 |
+
423,648,0.0062222606502473354,2.1590602045762353e-05
|
| 426 |
+
424,1625,0.003945155069231987,2.3602638066222426e-06
|
| 427 |
+
425,225,0.007632310502231121,6.986684184084879e-06
|
| 428 |
+
426,944,0.011558364145457745,4.0504523894924205e-06
|
| 429 |
+
427,1007,0.006920473650097847,1.3169837984605692e-06
|
| 430 |
+
428,924,0.003867707448080182,2.3980762762221275e-06
|
| 431 |
+
429,1322,0.008841494098305702,2.5250783437513746e-06
|
| 432 |
+
430,1724,0.004315454047173262,8.944496585172601e-06
|
| 433 |
+
431,1258,0.004166554193943739,5.888723990210565e-06
|
| 434 |
+
432,1807,0.005387899931520224,6.445180588343646e-06
|
| 435 |
+
433,342,0.00776286143809557,1.2151812370575499e-05
|
| 436 |
+
434,852,0.00882843229919672,1.3146282071829773e-05
|
| 437 |
+
435,1251,0.003652118844911456,6.464530997618567e-06
|
| 438 |
+
436,180,0.0066243433393538,1.9956038158852607e-05
|
| 439 |
+
437,440,0.0036326611880213022,2.41984366766701e-06
|
| 440 |
+
438,706,0.01125594787299633,2.7050753487856127e-05
|
| 441 |
+
439,530,0.004538081586360931,5.570773282670416e-06
|
| 442 |
+
440,1776,0.01264292560517788,1.6088921256596223e-05
|
| 443 |
+
441,1725,0.004602713510394096,1.1280220860498957e-05
|
| 444 |
+
442,1161,0.009167377837002277,3.7857398638152517e-06
|
| 445 |
+
443,1058,0.0036472389474511147,5.122510174260242e-06
|
| 446 |
+
444,812,0.007336750160902739,3.7091642752784537e-06
|
| 447 |
+
445,1429,0.0058655813336372375,8.489228093822021e-06
|
| 448 |
+
446,1520,0.01698259264230728,0.00017079943791031837
|
| 449 |
+
447,1596,0.004415638744831085,9.254630640498362e-06
|
results/predictions.npz
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:de61f8cd7fa456ba757ba0d929f7ee4959a182e942604b266b3b3fb22cb40051
|
| 3 |
+
size 1279370
|
results/split_indices.json
ADDED
|
@@ -0,0 +1,2055 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"seed": 42,
|
| 3 |
+
"train": [
|
| 4 |
+
1126,
|
| 5 |
+
1579,
|
| 6 |
+
792,
|
| 7 |
+
1987,
|
| 8 |
+
1366,
|
| 9 |
+
664,
|
| 10 |
+
1654,
|
| 11 |
+
833,
|
| 12 |
+
1878,
|
| 13 |
+
2027,
|
| 14 |
+
926,
|
| 15 |
+
1647,
|
| 16 |
+
214,
|
| 17 |
+
622,
|
| 18 |
+
41,
|
| 19 |
+
554,
|
| 20 |
+
1571,
|
| 21 |
+
561,
|
| 22 |
+
1525,
|
| 23 |
+
699,
|
| 24 |
+
1137,
|
| 25 |
+
614,
|
| 26 |
+
1585,
|
| 27 |
+
1684,
|
| 28 |
+
907,
|
| 29 |
+
1185,
|
| 30 |
+
841,
|
| 31 |
+
14,
|
| 32 |
+
315,
|
| 33 |
+
834,
|
| 34 |
+
192,
|
| 35 |
+
376,
|
| 36 |
+
1803,
|
| 37 |
+
307,
|
| 38 |
+
759,
|
| 39 |
+
1611,
|
| 40 |
+
1031,
|
| 41 |
+
608,
|
| 42 |
+
690,
|
| 43 |
+
985,
|
| 44 |
+
15,
|
| 45 |
+
1970,
|
| 46 |
+
1635,
|
| 47 |
+
1747,
|
| 48 |
+
1259,
|
| 49 |
+
30,
|
| 50 |
+
249,
|
| 51 |
+
1719,
|
| 52 |
+
1741,
|
| 53 |
+
399,
|
| 54 |
+
800,
|
| 55 |
+
1664,
|
| 56 |
+
1042,
|
| 57 |
+
737,
|
| 58 |
+
1932,
|
| 59 |
+
770,
|
| 60 |
+
1743,
|
| 61 |
+
1505,
|
| 62 |
+
1556,
|
| 63 |
+
98,
|
| 64 |
+
142,
|
| 65 |
+
1282,
|
| 66 |
+
508,
|
| 67 |
+
873,
|
| 68 |
+
1702,
|
| 69 |
+
1036,
|
| 70 |
+
385,
|
| 71 |
+
398,
|
| 72 |
+
579,
|
| 73 |
+
778,
|
| 74 |
+
1463,
|
| 75 |
+
1352,
|
| 76 |
+
37,
|
| 77 |
+
651,
|
| 78 |
+
1908,
|
| 79 |
+
386,
|
| 80 |
+
1335,
|
| 81 |
+
1761,
|
| 82 |
+
1056,
|
| 83 |
+
908,
|
| 84 |
+
1046,
|
| 85 |
+
1594,
|
| 86 |
+
1034,
|
| 87 |
+
956,
|
| 88 |
+
938,
|
| 89 |
+
230,
|
| 90 |
+
1173,
|
| 91 |
+
1998,
|
| 92 |
+
323,
|
| 93 |
+
1221,
|
| 94 |
+
1125,
|
| 95 |
+
662,
|
| 96 |
+
845,
|
| 97 |
+
2032,
|
| 98 |
+
1169,
|
| 99 |
+
1699,
|
| 100 |
+
1065,
|
| 101 |
+
1941,
|
| 102 |
+
1459,
|
| 103 |
+
867,
|
| 104 |
+
1266,
|
| 105 |
+
1244,
|
| 106 |
+
143,
|
| 107 |
+
683,
|
| 108 |
+
1233,
|
| 109 |
+
1330,
|
| 110 |
+
1355,
|
| 111 |
+
1521,
|
| 112 |
+
413,
|
| 113 |
+
765,
|
| 114 |
+
533,
|
| 115 |
+
1069,
|
| 116 |
+
855,
|
| 117 |
+
1319,
|
| 118 |
+
1416,
|
| 119 |
+
2004,
|
| 120 |
+
760,
|
| 121 |
+
679,
|
| 122 |
+
1829,
|
| 123 |
+
2012,
|
| 124 |
+
1415,
|
| 125 |
+
299,
|
| 126 |
+
1183,
|
| 127 |
+
294,
|
| 128 |
+
624,
|
| 129 |
+
1088,
|
| 130 |
+
605,
|
| 131 |
+
1204,
|
| 132 |
+
1787,
|
| 133 |
+
600,
|
| 134 |
+
111,
|
| 135 |
+
1894,
|
| 136 |
+
668,
|
| 137 |
+
208,
|
| 138 |
+
1314,
|
| 139 |
+
1419,
|
| 140 |
+
1544,
|
| 141 |
+
1623,
|
| 142 |
+
1988,
|
| 143 |
+
1325,
|
| 144 |
+
2011,
|
| 145 |
+
1449,
|
| 146 |
+
1193,
|
| 147 |
+
24,
|
| 148 |
+
1255,
|
| 149 |
+
896,
|
| 150 |
+
1378,
|
| 151 |
+
1317,
|
| 152 |
+
1016,
|
| 153 |
+
1497,
|
| 154 |
+
1698,
|
| 155 |
+
1602,
|
| 156 |
+
1712,
|
| 157 |
+
611,
|
| 158 |
+
1734,
|
| 159 |
+
1110,
|
| 160 |
+
750,
|
| 161 |
+
640,
|
| 162 |
+
1838,
|
| 163 |
+
1340,
|
| 164 |
+
1862,
|
| 165 |
+
1582,
|
| 166 |
+
245,
|
| 167 |
+
390,
|
| 168 |
+
957,
|
| 169 |
+
1267,
|
| 170 |
+
869,
|
| 171 |
+
340,
|
| 172 |
+
1790,
|
| 173 |
+
593,
|
| 174 |
+
207,
|
| 175 |
+
482,
|
| 176 |
+
1950,
|
| 177 |
+
95,
|
| 178 |
+
1735,
|
| 179 |
+
585,
|
| 180 |
+
298,
|
| 181 |
+
763,
|
| 182 |
+
1926,
|
| 183 |
+
258,
|
| 184 |
+
228,
|
| 185 |
+
580,
|
| 186 |
+
1385,
|
| 187 |
+
923,
|
| 188 |
+
51,
|
| 189 |
+
2010,
|
| 190 |
+
1181,
|
| 191 |
+
572,
|
| 192 |
+
1014,
|
| 193 |
+
409,
|
| 194 |
+
81,
|
| 195 |
+
1933,
|
| 196 |
+
904,
|
| 197 |
+
1413,
|
| 198 |
+
990,
|
| 199 |
+
1637,
|
| 200 |
+
961,
|
| 201 |
+
814,
|
| 202 |
+
504,
|
| 203 |
+
79,
|
| 204 |
+
366,
|
| 205 |
+
418,
|
| 206 |
+
972,
|
| 207 |
+
631,
|
| 208 |
+
1567,
|
| 209 |
+
1410,
|
| 210 |
+
1367,
|
| 211 |
+
1380,
|
| 212 |
+
317,
|
| 213 |
+
772,
|
| 214 |
+
148,
|
| 215 |
+
2042,
|
| 216 |
+
101,
|
| 217 |
+
465,
|
| 218 |
+
886,
|
| 219 |
+
138,
|
| 220 |
+
1523,
|
| 221 |
+
1651,
|
| 222 |
+
325,
|
| 223 |
+
1570,
|
| 224 |
+
1914,
|
| 225 |
+
1332,
|
| 226 |
+
1085,
|
| 227 |
+
1944,
|
| 228 |
+
673,
|
| 229 |
+
293,
|
| 230 |
+
83,
|
| 231 |
+
1294,
|
| 232 |
+
1848,
|
| 233 |
+
1726,
|
| 234 |
+
2009,
|
| 235 |
+
268,
|
| 236 |
+
173,
|
| 237 |
+
1307,
|
| 238 |
+
1615,
|
| 239 |
+
665,
|
| 240 |
+
1257,
|
| 241 |
+
817,
|
| 242 |
+
1428,
|
| 243 |
+
121,
|
| 244 |
+
905,
|
| 245 |
+
1519,
|
| 246 |
+
206,
|
| 247 |
+
1599,
|
| 248 |
+
934,
|
| 249 |
+
1442,
|
| 250 |
+
1450,
|
| 251 |
+
779,
|
| 252 |
+
1120,
|
| 253 |
+
1854,
|
| 254 |
+
1167,
|
| 255 |
+
1580,
|
| 256 |
+
951,
|
| 257 |
+
970,
|
| 258 |
+
270,
|
| 259 |
+
1318,
|
| 260 |
+
0,
|
| 261 |
+
1072,
|
| 262 |
+
1789,
|
| 263 |
+
1703,
|
| 264 |
+
1840,
|
| 265 |
+
599,
|
| 266 |
+
562,
|
| 267 |
+
1875,
|
| 268 |
+
306,
|
| 269 |
+
350,
|
| 270 |
+
913,
|
| 271 |
+
1074,
|
| 272 |
+
1398,
|
| 273 |
+
235,
|
| 274 |
+
144,
|
| 275 |
+
2035,
|
| 276 |
+
1679,
|
| 277 |
+
895,
|
| 278 |
+
23,
|
| 279 |
+
1358,
|
| 280 |
+
532,
|
| 281 |
+
1000,
|
| 282 |
+
1040,
|
| 283 |
+
2014,
|
| 284 |
+
475,
|
| 285 |
+
1210,
|
| 286 |
+
1043,
|
| 287 |
+
708,
|
| 288 |
+
353,
|
| 289 |
+
411,
|
| 290 |
+
1426,
|
| 291 |
+
1389,
|
| 292 |
+
1360,
|
| 293 |
+
1336,
|
| 294 |
+
1086,
|
| 295 |
+
69,
|
| 296 |
+
1880,
|
| 297 |
+
261,
|
| 298 |
+
417,
|
| 299 |
+
646,
|
| 300 |
+
973,
|
| 301 |
+
308,
|
| 302 |
+
1742,
|
| 303 |
+
657,
|
| 304 |
+
1160,
|
| 305 |
+
446,
|
| 306 |
+
1714,
|
| 307 |
+
1825,
|
| 308 |
+
529,
|
| 309 |
+
997,
|
| 310 |
+
1013,
|
| 311 |
+
1288,
|
| 312 |
+
2047,
|
| 313 |
+
1372,
|
| 314 |
+
337,
|
| 315 |
+
1643,
|
| 316 |
+
899,
|
| 317 |
+
718,
|
| 318 |
+
1342,
|
| 319 |
+
840,
|
| 320 |
+
730,
|
| 321 |
+
1437,
|
| 322 |
+
454,
|
| 323 |
+
560,
|
| 324 |
+
1943,
|
| 325 |
+
1044,
|
| 326 |
+
137,
|
| 327 |
+
1082,
|
| 328 |
+
505,
|
| 329 |
+
586,
|
| 330 |
+
626,
|
| 331 |
+
723,
|
| 332 |
+
727,
|
| 333 |
+
1286,
|
| 334 |
+
906,
|
| 335 |
+
1081,
|
| 336 |
+
1583,
|
| 337 |
+
136,
|
| 338 |
+
1899,
|
| 339 |
+
650,
|
| 340 |
+
199,
|
| 341 |
+
1766,
|
| 342 |
+
493,
|
| 343 |
+
1144,
|
| 344 |
+
1114,
|
| 345 |
+
1218,
|
| 346 |
+
1960,
|
| 347 |
+
77,
|
| 348 |
+
594,
|
| 349 |
+
801,
|
| 350 |
+
584,
|
| 351 |
+
1689,
|
| 352 |
+
1511,
|
| 353 |
+
1019,
|
| 354 |
+
643,
|
| 355 |
+
1957,
|
| 356 |
+
1376,
|
| 357 |
+
921,
|
| 358 |
+
1601,
|
| 359 |
+
423,
|
| 360 |
+
949,
|
| 361 |
+
550,
|
| 362 |
+
1744,
|
| 363 |
+
489,
|
| 364 |
+
843,
|
| 365 |
+
61,
|
| 366 |
+
1852,
|
| 367 |
+
1089,
|
| 368 |
+
458,
|
| 369 |
+
1310,
|
| 370 |
+
1653,
|
| 371 |
+
754,
|
| 372 |
+
201,
|
| 373 |
+
1305,
|
| 374 |
+
1801,
|
| 375 |
+
284,
|
| 376 |
+
1777,
|
| 377 |
+
984,
|
| 378 |
+
74,
|
| 379 |
+
1274,
|
| 380 |
+
1067,
|
| 381 |
+
1393,
|
| 382 |
+
1347,
|
| 383 |
+
382,
|
| 384 |
+
731,
|
| 385 |
+
799,
|
| 386 |
+
1401,
|
| 387 |
+
1068,
|
| 388 |
+
676,
|
| 389 |
+
1311,
|
| 390 |
+
364,
|
| 391 |
+
1324,
|
| 392 |
+
1792,
|
| 393 |
+
472,
|
| 394 |
+
692,
|
| 395 |
+
952,
|
| 396 |
+
1391,
|
| 397 |
+
379,
|
| 398 |
+
436,
|
| 399 |
+
1539,
|
| 400 |
+
1639,
|
| 401 |
+
619,
|
| 402 |
+
757,
|
| 403 |
+
795,
|
| 404 |
+
112,
|
| 405 |
+
806,
|
| 406 |
+
256,
|
| 407 |
+
965,
|
| 408 |
+
1563,
|
| 409 |
+
1155,
|
| 410 |
+
1321,
|
| 411 |
+
2017,
|
| 412 |
+
1147,
|
| 413 |
+
1883,
|
| 414 |
+
1066,
|
| 415 |
+
1343,
|
| 416 |
+
1693,
|
| 417 |
+
1025,
|
| 418 |
+
1542,
|
| 419 |
+
1422,
|
| 420 |
+
1532,
|
| 421 |
+
416,
|
| 422 |
+
531,
|
| 423 |
+
116,
|
| 424 |
+
1993,
|
| 425 |
+
215,
|
| 426 |
+
1457,
|
| 427 |
+
122,
|
| 428 |
+
1551,
|
| 429 |
+
165,
|
| 430 |
+
1834,
|
| 431 |
+
43,
|
| 432 |
+
152,
|
| 433 |
+
851,
|
| 434 |
+
1536,
|
| 435 |
+
1189,
|
| 436 |
+
274,
|
| 437 |
+
637,
|
| 438 |
+
359,
|
| 439 |
+
311,
|
| 440 |
+
285,
|
| 441 |
+
1529,
|
| 442 |
+
286,
|
| 443 |
+
248,
|
| 444 |
+
1648,
|
| 445 |
+
12,
|
| 446 |
+
1038,
|
| 447 |
+
1037,
|
| 448 |
+
787,
|
| 449 |
+
836,
|
| 450 |
+
898,
|
| 451 |
+
94,
|
| 452 |
+
758,
|
| 453 |
+
1730,
|
| 454 |
+
1131,
|
| 455 |
+
2036,
|
| 456 |
+
1141,
|
| 457 |
+
1718,
|
| 458 |
+
1432,
|
| 459 |
+
1976,
|
| 460 |
+
92,
|
| 461 |
+
1145,
|
| 462 |
+
291,
|
| 463 |
+
1593,
|
| 464 |
+
1929,
|
| 465 |
+
60,
|
| 466 |
+
1071,
|
| 467 |
+
305,
|
| 468 |
+
19,
|
| 469 |
+
1727,
|
| 470 |
+
1869,
|
| 471 |
+
481,
|
| 472 |
+
1412,
|
| 473 |
+
1508,
|
| 474 |
+
500,
|
| 475 |
+
1483,
|
| 476 |
+
666,
|
| 477 |
+
1254,
|
| 478 |
+
1832,
|
| 479 |
+
1083,
|
| 480 |
+
1156,
|
| 481 |
+
469,
|
| 482 |
+
1198,
|
| 483 |
+
672,
|
| 484 |
+
49,
|
| 485 |
+
510,
|
| 486 |
+
1194,
|
| 487 |
+
262,
|
| 488 |
+
28,
|
| 489 |
+
2034,
|
| 490 |
+
756,
|
| 491 |
+
1626,
|
| 492 |
+
1888,
|
| 493 |
+
1142,
|
| 494 |
+
1873,
|
| 495 |
+
129,
|
| 496 |
+
1004,
|
| 497 |
+
480,
|
| 498 |
+
188,
|
| 499 |
+
1349,
|
| 500 |
+
1458,
|
| 501 |
+
265,
|
| 502 |
+
1560,
|
| 503 |
+
879,
|
| 504 |
+
994,
|
| 505 |
+
1753,
|
| 506 |
+
156,
|
| 507 |
+
922,
|
| 508 |
+
950,
|
| 509 |
+
1153,
|
| 510 |
+
509,
|
| 511 |
+
635,
|
| 512 |
+
203,
|
| 513 |
+
246,
|
| 514 |
+
1382,
|
| 515 |
+
929,
|
| 516 |
+
1246,
|
| 517 |
+
160,
|
| 518 |
+
1805,
|
| 519 |
+
422,
|
| 520 |
+
1227,
|
| 521 |
+
310,
|
| 522 |
+
1697,
|
| 523 |
+
1339,
|
| 524 |
+
1191,
|
| 525 |
+
681,
|
| 526 |
+
1607,
|
| 527 |
+
1687,
|
| 528 |
+
377,
|
| 529 |
+
434,
|
| 530 |
+
1356,
|
| 531 |
+
893,
|
| 532 |
+
511,
|
| 533 |
+
805,
|
| 534 |
+
1306,
|
| 535 |
+
309,
|
| 536 |
+
1496,
|
| 537 |
+
528,
|
| 538 |
+
40,
|
| 539 |
+
996,
|
| 540 |
+
1791,
|
| 541 |
+
1163,
|
| 542 |
+
1656,
|
| 543 |
+
959,
|
| 544 |
+
1978,
|
| 545 |
+
930,
|
| 546 |
+
467,
|
| 547 |
+
661,
|
| 548 |
+
920,
|
| 549 |
+
1051,
|
| 550 |
+
52,
|
| 551 |
+
1921,
|
| 552 |
+
1453,
|
| 553 |
+
1710,
|
| 554 |
+
1466,
|
| 555 |
+
441,
|
| 556 |
+
1260,
|
| 557 |
+
963,
|
| 558 |
+
210,
|
| 559 |
+
492,
|
| 560 |
+
671,
|
| 561 |
+
1363,
|
| 562 |
+
2001,
|
| 563 |
+
564,
|
| 564 |
+
1835,
|
| 565 |
+
842,
|
| 566 |
+
870,
|
| 567 |
+
807,
|
| 568 |
+
217,
|
| 569 |
+
1348,
|
| 570 |
+
407,
|
| 571 |
+
1884,
|
| 572 |
+
1782,
|
| 573 |
+
1732,
|
| 574 |
+
343,
|
| 575 |
+
1931,
|
| 576 |
+
1248,
|
| 577 |
+
6,
|
| 578 |
+
1374,
|
| 579 |
+
1469,
|
| 580 |
+
1148,
|
| 581 |
+
219,
|
| 582 |
+
9,
|
| 583 |
+
1245,
|
| 584 |
+
431,
|
| 585 |
+
983,
|
| 586 |
+
1595,
|
| 587 |
+
1300,
|
| 588 |
+
1165,
|
| 589 |
+
1303,
|
| 590 |
+
1087,
|
| 591 |
+
383,
|
| 592 |
+
1091,
|
| 593 |
+
333,
|
| 594 |
+
178,
|
| 595 |
+
785,
|
| 596 |
+
1940,
|
| 597 |
+
1666,
|
| 598 |
+
927,
|
| 599 |
+
1329,
|
| 600 |
+
780,
|
| 601 |
+
858,
|
| 602 |
+
338,
|
| 603 |
+
1604,
|
| 604 |
+
748,
|
| 605 |
+
1172,
|
| 606 |
+
490,
|
| 607 |
+
44,
|
| 608 |
+
1002,
|
| 609 |
+
1821,
|
| 610 |
+
1822,
|
| 611 |
+
1751,
|
| 612 |
+
1715,
|
| 613 |
+
1723,
|
| 614 |
+
442,
|
| 615 |
+
1207,
|
| 616 |
+
987,
|
| 617 |
+
999,
|
| 618 |
+
1441,
|
| 619 |
+
140,
|
| 620 |
+
50,
|
| 621 |
+
397,
|
| 622 |
+
1386,
|
| 623 |
+
1022,
|
| 624 |
+
395,
|
| 625 |
+
1392,
|
| 626 |
+
1576,
|
| 627 |
+
1608,
|
| 628 |
+
209,
|
| 629 |
+
1750,
|
| 630 |
+
892,
|
| 631 |
+
978,
|
| 632 |
+
470,
|
| 633 |
+
162,
|
| 634 |
+
1948,
|
| 635 |
+
569,
|
| 636 |
+
127,
|
| 637 |
+
1692,
|
| 638 |
+
1231,
|
| 639 |
+
1701,
|
| 640 |
+
876,
|
| 641 |
+
1490,
|
| 642 |
+
1915,
|
| 643 |
+
1966,
|
| 644 |
+
1533,
|
| 645 |
+
1872,
|
| 646 |
+
933,
|
| 647 |
+
693,
|
| 648 |
+
394,
|
| 649 |
+
375,
|
| 650 |
+
1448,
|
| 651 |
+
104,
|
| 652 |
+
1999,
|
| 653 |
+
1052,
|
| 654 |
+
1526,
|
| 655 |
+
1241,
|
| 656 |
+
502,
|
| 657 |
+
1499,
|
| 658 |
+
543,
|
| 659 |
+
549,
|
| 660 |
+
155,
|
| 661 |
+
1047,
|
| 662 |
+
381,
|
| 663 |
+
484,
|
| 664 |
+
106,
|
| 665 |
+
1565,
|
| 666 |
+
942,
|
| 667 |
+
1671,
|
| 668 |
+
1112,
|
| 669 |
+
1151,
|
| 670 |
+
524,
|
| 671 |
+
592,
|
| 672 |
+
1772,
|
| 673 |
+
1843,
|
| 674 |
+
313,
|
| 675 |
+
42,
|
| 676 |
+
139,
|
| 677 |
+
73,
|
| 678 |
+
39,
|
| 679 |
+
1486,
|
| 680 |
+
2019,
|
| 681 |
+
729,
|
| 682 |
+
1129,
|
| 683 |
+
975,
|
| 684 |
+
117,
|
| 685 |
+
2022,
|
| 686 |
+
368,
|
| 687 |
+
989,
|
| 688 |
+
1444,
|
| 689 |
+
1773,
|
| 690 |
+
1261,
|
| 691 |
+
65,
|
| 692 |
+
1430,
|
| 693 |
+
1846,
|
| 694 |
+
76,
|
| 695 |
+
1795,
|
| 696 |
+
1936,
|
| 697 |
+
1230,
|
| 698 |
+
2003,
|
| 699 |
+
287,
|
| 700 |
+
702,
|
| 701 |
+
1632,
|
| 702 |
+
70,
|
| 703 |
+
856,
|
| 704 |
+
1297,
|
| 705 |
+
931,
|
| 706 |
+
1424,
|
| 707 |
+
1381,
|
| 708 |
+
283,
|
| 709 |
+
1084,
|
| 710 |
+
747,
|
| 711 |
+
1857,
|
| 712 |
+
1923,
|
| 713 |
+
1096,
|
| 714 |
+
625,
|
| 715 |
+
1655,
|
| 716 |
+
1304,
|
| 717 |
+
1855,
|
| 718 |
+
1041,
|
| 719 |
+
597,
|
| 720 |
+
1154,
|
| 721 |
+
1053,
|
| 722 |
+
753,
|
| 723 |
+
1106,
|
| 724 |
+
1345,
|
| 725 |
+
1202,
|
| 726 |
+
1269,
|
| 727 |
+
630,
|
| 728 |
+
1592,
|
| 729 |
+
782,
|
| 730 |
+
521,
|
| 731 |
+
872,
|
| 732 |
+
1316,
|
| 733 |
+
1383,
|
| 734 |
+
362,
|
| 735 |
+
1228,
|
| 736 |
+
1276,
|
| 737 |
+
456,
|
| 738 |
+
1577,
|
| 739 |
+
267,
|
| 740 |
+
660,
|
| 741 |
+
881,
|
| 742 |
+
725,
|
| 743 |
+
149,
|
| 744 |
+
850,
|
| 745 |
+
831,
|
| 746 |
+
837,
|
| 747 |
+
777,
|
| 748 |
+
205,
|
| 749 |
+
537,
|
| 750 |
+
513,
|
| 751 |
+
717,
|
| 752 |
+
1460,
|
| 753 |
+
1995,
|
| 754 |
+
969,
|
| 755 |
+
1513,
|
| 756 |
+
85,
|
| 757 |
+
1098,
|
| 758 |
+
1823,
|
| 759 |
+
829,
|
| 760 |
+
518,
|
| 761 |
+
425,
|
| 762 |
+
1150,
|
| 763 |
+
1049,
|
| 764 |
+
582,
|
| 765 |
+
1798,
|
| 766 |
+
100,
|
| 767 |
+
1709,
|
| 768 |
+
1516,
|
| 769 |
+
1767,
|
| 770 |
+
80,
|
| 771 |
+
46,
|
| 772 |
+
701,
|
| 773 |
+
419,
|
| 774 |
+
358,
|
| 775 |
+
1839,
|
| 776 |
+
1552,
|
| 777 |
+
863,
|
| 778 |
+
1199,
|
| 779 |
+
945,
|
| 780 |
+
538,
|
| 781 |
+
57,
|
| 782 |
+
603,
|
| 783 |
+
33,
|
| 784 |
+
1048,
|
| 785 |
+
1954,
|
| 786 |
+
1771,
|
| 787 |
+
946,
|
| 788 |
+
354,
|
| 789 |
+
1808,
|
| 790 |
+
131,
|
| 791 |
+
21,
|
| 792 |
+
557,
|
| 793 |
+
1682,
|
| 794 |
+
1315,
|
| 795 |
+
1206,
|
| 796 |
+
1876,
|
| 797 |
+
1270,
|
| 798 |
+
4,
|
| 799 |
+
53,
|
| 800 |
+
119,
|
| 801 |
+
1949,
|
| 802 |
+
123,
|
| 803 |
+
1509,
|
| 804 |
+
1736,
|
| 805 |
+
540,
|
| 806 |
+
1680,
|
| 807 |
+
242,
|
| 808 |
+
925,
|
| 809 |
+
1575,
|
| 810 |
+
745,
|
| 811 |
+
1093,
|
| 812 |
+
695,
|
| 813 |
+
839,
|
| 814 |
+
1890,
|
| 815 |
+
1902,
|
| 816 |
+
884,
|
| 817 |
+
1006,
|
| 818 |
+
1673,
|
| 819 |
+
2039,
|
| 820 |
+
1768,
|
| 821 |
+
1003,
|
| 822 |
+
1769,
|
| 823 |
+
573,
|
| 824 |
+
974,
|
| 825 |
+
135,
|
| 826 |
+
90,
|
| 827 |
+
110,
|
| 828 |
+
396,
|
| 829 |
+
1111,
|
| 830 |
+
2018,
|
| 831 |
+
890,
|
| 832 |
+
1802,
|
| 833 |
+
1292,
|
| 834 |
+
976,
|
| 835 |
+
910,
|
| 836 |
+
1762,
|
| 837 |
+
336,
|
| 838 |
+
1534,
|
| 839 |
+
1101,
|
| 840 |
+
1170,
|
| 841 |
+
1859,
|
| 842 |
+
1229,
|
| 843 |
+
883,
|
| 844 |
+
483,
|
| 845 |
+
1973,
|
| 846 |
+
185,
|
| 847 |
+
1501,
|
| 848 |
+
260,
|
| 849 |
+
865,
|
| 850 |
+
1755,
|
| 851 |
+
761,
|
| 852 |
+
1814,
|
| 853 |
+
1707,
|
| 854 |
+
45,
|
| 855 |
+
707,
|
| 856 |
+
318,
|
| 857 |
+
808,
|
| 858 |
+
1984,
|
| 859 |
+
1262,
|
| 860 |
+
253,
|
| 861 |
+
1434,
|
| 862 |
+
545,
|
| 863 |
+
435,
|
| 864 |
+
47,
|
| 865 |
+
1062,
|
| 866 |
+
31,
|
| 867 |
+
1471,
|
| 868 |
+
319,
|
| 869 |
+
655,
|
| 870 |
+
1828,
|
| 871 |
+
1408,
|
| 872 |
+
88,
|
| 873 |
+
227,
|
| 874 |
+
1032,
|
| 875 |
+
218,
|
| 876 |
+
1833,
|
| 877 |
+
610,
|
| 878 |
+
864,
|
| 879 |
+
1660,
|
| 880 |
+
977,
|
| 881 |
+
1867,
|
| 882 |
+
1138,
|
| 883 |
+
1208,
|
| 884 |
+
964,
|
| 885 |
+
1678,
|
| 886 |
+
1132,
|
| 887 |
+
243,
|
| 888 |
+
520,
|
| 889 |
+
1721,
|
| 890 |
+
914,
|
| 891 |
+
1220,
|
| 892 |
+
620,
|
| 893 |
+
372,
|
| 894 |
+
1152,
|
| 895 |
+
874,
|
| 896 |
+
682,
|
| 897 |
+
1362,
|
| 898 |
+
1487,
|
| 899 |
+
1827,
|
| 900 |
+
495,
|
| 901 |
+
1812,
|
| 902 |
+
875,
|
| 903 |
+
352,
|
| 904 |
+
601,
|
| 905 |
+
768,
|
| 906 |
+
1865,
|
| 907 |
+
2006,
|
| 908 |
+
1522,
|
| 909 |
+
1478,
|
| 910 |
+
486,
|
| 911 |
+
420,
|
| 912 |
+
1130,
|
| 913 |
+
2026,
|
| 914 |
+
387,
|
| 915 |
+
1162,
|
| 916 |
+
1644,
|
| 917 |
+
1076,
|
| 918 |
+
1301,
|
| 919 |
+
1341,
|
| 920 |
+
1541,
|
| 921 |
+
1868,
|
| 922 |
+
1815,
|
| 923 |
+
271,
|
| 924 |
+
221,
|
| 925 |
+
113,
|
| 926 |
+
151,
|
| 927 |
+
1008,
|
| 928 |
+
292,
|
| 929 |
+
1934,
|
| 930 |
+
1278,
|
| 931 |
+
1475,
|
| 932 |
+
1853,
|
| 933 |
+
300,
|
| 934 |
+
238,
|
| 935 |
+
751,
|
| 936 |
+
589,
|
| 937 |
+
1405,
|
| 938 |
+
1371,
|
| 939 |
+
694,
|
| 940 |
+
1197,
|
| 941 |
+
93,
|
| 942 |
+
1373,
|
| 943 |
+
1977,
|
| 944 |
+
272,
|
| 945 |
+
479,
|
| 946 |
+
371,
|
| 947 |
+
1176,
|
| 948 |
+
2044,
|
| 949 |
+
171,
|
| 950 |
+
491,
|
| 951 |
+
222,
|
| 952 |
+
68,
|
| 953 |
+
1470,
|
| 954 |
+
1672,
|
| 955 |
+
1959,
|
| 956 |
+
684,
|
| 957 |
+
1606,
|
| 958 |
+
1030,
|
| 959 |
+
1104,
|
| 960 |
+
1427,
|
| 961 |
+
861,
|
| 962 |
+
1813,
|
| 963 |
+
1203,
|
| 964 |
+
1640,
|
| 965 |
+
1731,
|
| 966 |
+
902,
|
| 967 |
+
1913,
|
| 968 |
+
1498,
|
| 969 |
+
1474,
|
| 970 |
+
99,
|
| 971 |
+
710,
|
| 972 |
+
1797,
|
| 973 |
+
1121,
|
| 974 |
+
1491,
|
| 975 |
+
1226,
|
| 976 |
+
980,
|
| 977 |
+
888,
|
| 978 |
+
1597,
|
| 979 |
+
1860,
|
| 980 |
+
991,
|
| 981 |
+
955,
|
| 982 |
+
1249,
|
| 983 |
+
181,
|
| 984 |
+
1939,
|
| 985 |
+
415,
|
| 986 |
+
254,
|
| 987 |
+
954,
|
| 988 |
+
677,
|
| 989 |
+
380,
|
| 990 |
+
84,
|
| 991 |
+
1108,
|
| 992 |
+
457,
|
| 993 |
+
1109,
|
| 994 |
+
877,
|
| 995 |
+
1546,
|
| 996 |
+
1425,
|
| 997 |
+
264,
|
| 998 |
+
22,
|
| 999 |
+
1451,
|
| 1000 |
+
534,
|
| 1001 |
+
1930,
|
| 1002 |
+
1909,
|
| 1003 |
+
452,
|
| 1004 |
+
1133,
|
| 1005 |
+
468,
|
| 1006 |
+
1502,
|
| 1007 |
+
1675,
|
| 1008 |
+
900,
|
| 1009 |
+
1216,
|
| 1010 |
+
885,
|
| 1011 |
+
2025,
|
| 1012 |
+
1,
|
| 1013 |
+
698,
|
| 1014 |
+
1600,
|
| 1015 |
+
1996,
|
| 1016 |
+
1289,
|
| 1017 |
+
889,
|
| 1018 |
+
2000,
|
| 1019 |
+
449,
|
| 1020 |
+
1841,
|
| 1021 |
+
1113,
|
| 1022 |
+
1905,
|
| 1023 |
+
644,
|
| 1024 |
+
1746,
|
| 1025 |
+
1073,
|
| 1026 |
+
638,
|
| 1027 |
+
1435,
|
| 1028 |
+
1847,
|
| 1029 |
+
652,
|
| 1030 |
+
1961,
|
| 1031 |
+
1100,
|
| 1032 |
+
184,
|
| 1033 |
+
744,
|
| 1034 |
+
455,
|
| 1035 |
+
507,
|
| 1036 |
+
1912,
|
| 1037 |
+
719,
|
| 1038 |
+
168,
|
| 1039 |
+
1764,
|
| 1040 |
+
67,
|
| 1041 |
+
1403,
|
| 1042 |
+
1280,
|
| 1043 |
+
501,
|
| 1044 |
+
2,
|
| 1045 |
+
563,
|
| 1046 |
+
1896,
|
| 1047 |
+
1472,
|
| 1048 |
+
2045,
|
| 1049 |
+
1512,
|
| 1050 |
+
1982,
|
| 1051 |
+
1591,
|
| 1052 |
+
541,
|
| 1053 |
+
91,
|
| 1054 |
+
1953,
|
| 1055 |
+
556,
|
| 1056 |
+
1029,
|
| 1057 |
+
629,
|
| 1058 |
+
1658,
|
| 1059 |
+
200,
|
| 1060 |
+
11,
|
| 1061 |
+
1187,
|
| 1062 |
+
297,
|
| 1063 |
+
2037,
|
| 1064 |
+
1035,
|
| 1065 |
+
1760,
|
| 1066 |
+
680,
|
| 1067 |
+
437,
|
| 1068 |
+
1645,
|
| 1069 |
+
1439,
|
| 1070 |
+
400,
|
| 1071 |
+
1756,
|
| 1072 |
+
596,
|
| 1073 |
+
1139,
|
| 1074 |
+
134,
|
| 1075 |
+
1357,
|
| 1076 |
+
1433,
|
| 1077 |
+
1510,
|
| 1078 |
+
1550,
|
| 1079 |
+
241,
|
| 1080 |
+
838,
|
| 1081 |
+
566,
|
| 1082 |
+
233,
|
| 1083 |
+
447,
|
| 1084 |
+
1482,
|
| 1085 |
+
1780,
|
| 1086 |
+
1874,
|
| 1087 |
+
1149,
|
| 1088 |
+
324,
|
| 1089 |
+
1633,
|
| 1090 |
+
1370,
|
| 1091 |
+
1638,
|
| 1092 |
+
2015,
|
| 1093 |
+
636,
|
| 1094 |
+
1265,
|
| 1095 |
+
18,
|
| 1096 |
+
713,
|
| 1097 |
+
1559,
|
| 1098 |
+
1359,
|
| 1099 |
+
1116,
|
| 1100 |
+
1785,
|
| 1101 |
+
821,
|
| 1102 |
+
734,
|
| 1103 |
+
1351,
|
| 1104 |
+
1102,
|
| 1105 |
+
724,
|
| 1106 |
+
1733,
|
| 1107 |
+
1384,
|
| 1108 |
+
1157,
|
| 1109 |
+
565,
|
| 1110 |
+
1134,
|
| 1111 |
+
815,
|
| 1112 |
+
1465,
|
| 1113 |
+
1146,
|
| 1114 |
+
281,
|
| 1115 |
+
182,
|
| 1116 |
+
56,
|
| 1117 |
+
1281,
|
| 1118 |
+
1264,
|
| 1119 |
+
1293,
|
| 1120 |
+
1754,
|
| 1121 |
+
335,
|
| 1122 |
+
1224,
|
| 1123 |
+
471,
|
| 1124 |
+
1313,
|
| 1125 |
+
1168,
|
| 1126 |
+
402,
|
| 1127 |
+
1235,
|
| 1128 |
+
1473,
|
| 1129 |
+
1250,
|
| 1130 |
+
860,
|
| 1131 |
+
1312,
|
| 1132 |
+
26,
|
| 1133 |
+
438,
|
| 1134 |
+
1955,
|
| 1135 |
+
130,
|
| 1136 |
+
145,
|
| 1137 |
+
1657,
|
| 1138 |
+
598,
|
| 1139 |
+
1394,
|
| 1140 |
+
1598,
|
| 1141 |
+
1942,
|
| 1142 |
+
126,
|
| 1143 |
+
1190,
|
| 1144 |
+
444,
|
| 1145 |
+
166,
|
| 1146 |
+
773,
|
| 1147 |
+
339,
|
| 1148 |
+
715,
|
| 1149 |
+
1975,
|
| 1150 |
+
1924,
|
| 1151 |
+
971,
|
| 1152 |
+
27,
|
| 1153 |
+
451,
|
| 1154 |
+
220,
|
| 1155 |
+
1572,
|
| 1156 |
+
1411,
|
| 1157 |
+
1720,
|
| 1158 |
+
378,
|
| 1159 |
+
832,
|
| 1160 |
+
1981,
|
| 1161 |
+
1364,
|
| 1162 |
+
1455,
|
| 1163 |
+
947,
|
| 1164 |
+
1075,
|
| 1165 |
+
634,
|
| 1166 |
+
988,
|
| 1167 |
+
1759,
|
| 1168 |
+
1800,
|
| 1169 |
+
1662,
|
| 1170 |
+
932,
|
| 1171 |
+
1630,
|
| 1172 |
+
190,
|
| 1173 |
+
590,
|
| 1174 |
+
1423,
|
| 1175 |
+
290,
|
| 1176 |
+
154,
|
| 1177 |
+
746,
|
| 1178 |
+
496,
|
| 1179 |
+
370,
|
| 1180 |
+
568,
|
| 1181 |
+
314,
|
| 1182 |
+
1816,
|
| 1183 |
+
1298,
|
| 1184 |
+
360,
|
| 1185 |
+
1947,
|
| 1186 |
+
1285,
|
| 1187 |
+
1566,
|
| 1188 |
+
1863,
|
| 1189 |
+
824,
|
| 1190 |
+
1377,
|
| 1191 |
+
618,
|
| 1192 |
+
1214,
|
| 1193 |
+
158,
|
| 1194 |
+
712,
|
| 1195 |
+
968,
|
| 1196 |
+
674,
|
| 1197 |
+
658,
|
| 1198 |
+
642,
|
| 1199 |
+
280,
|
| 1200 |
+
1989,
|
| 1201 |
+
1573,
|
| 1202 |
+
365,
|
| 1203 |
+
755,
|
| 1204 |
+
1060,
|
| 1205 |
+
20,
|
| 1206 |
+
5,
|
| 1207 |
+
1609,
|
| 1208 |
+
326,
|
| 1209 |
+
577,
|
| 1210 |
+
1844,
|
| 1211 |
+
1400,
|
| 1212 |
+
937,
|
| 1213 |
+
1503,
|
| 1214 |
+
517,
|
| 1215 |
+
346,
|
| 1216 |
+
328,
|
| 1217 |
+
940,
|
| 1218 |
+
1897,
|
| 1219 |
+
1818,
|
| 1220 |
+
191,
|
| 1221 |
+
516,
|
| 1222 |
+
1290,
|
| 1223 |
+
1749,
|
| 1224 |
+
1476,
|
| 1225 |
+
86,
|
| 1226 |
+
1201,
|
| 1227 |
+
1118,
|
| 1228 |
+
816,
|
| 1229 |
+
1017,
|
| 1230 |
+
1223,
|
| 1231 |
+
2008,
|
| 1232 |
+
412,
|
| 1233 |
+
34,
|
| 1234 |
+
1103,
|
| 1235 |
+
1213,
|
| 1236 |
+
1420,
|
| 1237 |
+
301,
|
| 1238 |
+
1219,
|
| 1239 |
+
304,
|
| 1240 |
+
1824,
|
| 1241 |
+
1892,
|
| 1242 |
+
1804,
|
| 1243 |
+
1414,
|
| 1244 |
+
798,
|
| 1245 |
+
649,
|
| 1246 |
+
1928,
|
| 1247 |
+
1011,
|
| 1248 |
+
656,
|
| 1249 |
+
277,
|
| 1250 |
+
1283,
|
| 1251 |
+
1205,
|
| 1252 |
+
1273,
|
| 1253 |
+
939,
|
| 1254 |
+
345,
|
| 1255 |
+
1063,
|
| 1256 |
+
334,
|
| 1257 |
+
691,
|
| 1258 |
+
212,
|
| 1259 |
+
406,
|
| 1260 |
+
1861,
|
| 1261 |
+
1971,
|
| 1262 |
+
1024,
|
| 1263 |
+
866,
|
| 1264 |
+
1830,
|
| 1265 |
+
1021,
|
| 1266 |
+
63,
|
| 1267 |
+
1901,
|
| 1268 |
+
1677,
|
| 1269 |
+
344,
|
| 1270 |
+
1438,
|
| 1271 |
+
1334,
|
| 1272 |
+
1696,
|
| 1273 |
+
1012,
|
| 1274 |
+
1667,
|
| 1275 |
+
1421,
|
| 1276 |
+
880,
|
| 1277 |
+
1015,
|
| 1278 |
+
868,
|
| 1279 |
+
1617,
|
| 1280 |
+
408,
|
| 1281 |
+
818,
|
| 1282 |
+
732,
|
| 1283 |
+
1851,
|
| 1284 |
+
1481,
|
| 1285 |
+
835,
|
| 1286 |
+
527,
|
| 1287 |
+
109,
|
| 1288 |
+
1346,
|
| 1289 |
+
1965,
|
| 1290 |
+
257,
|
| 1291 |
+
97,
|
| 1292 |
+
559,
|
| 1293 |
+
1291,
|
| 1294 |
+
1464,
|
| 1295 |
+
250,
|
| 1296 |
+
617,
|
| 1297 |
+
1333,
|
| 1298 |
+
1963,
|
| 1299 |
+
1810,
|
| 1300 |
+
1906,
|
| 1301 |
+
1553,
|
| 1302 |
+
1738,
|
| 1303 |
+
591,
|
| 1304 |
+
1770,
|
| 1305 |
+
102,
|
| 1306 |
+
2016,
|
| 1307 |
+
1605,
|
| 1308 |
+
570,
|
| 1309 |
+
687,
|
| 1310 |
+
612,
|
| 1311 |
+
1527,
|
| 1312 |
+
1500,
|
| 1313 |
+
1001,
|
| 1314 |
+
71,
|
| 1315 |
+
278,
|
| 1316 |
+
960,
|
| 1317 |
+
1140,
|
| 1318 |
+
936,
|
| 1319 |
+
525,
|
| 1320 |
+
429,
|
| 1321 |
+
25,
|
| 1322 |
+
602,
|
| 1323 |
+
1115,
|
| 1324 |
+
1951,
|
| 1325 |
+
1668,
|
| 1326 |
+
1284,
|
| 1327 |
+
462,
|
| 1328 |
+
1217,
|
| 1329 |
+
826,
|
| 1330 |
+
279,
|
| 1331 |
+
1986,
|
| 1332 |
+
193,
|
| 1333 |
+
266,
|
| 1334 |
+
894,
|
| 1335 |
+
424,
|
| 1336 |
+
943,
|
| 1337 |
+
1879,
|
| 1338 |
+
1569,
|
| 1339 |
+
1396,
|
| 1340 |
+
1247,
|
| 1341 |
+
1028,
|
| 1342 |
+
351,
|
| 1343 |
+
1819,
|
| 1344 |
+
781,
|
| 1345 |
+
1622,
|
| 1346 |
+
506,
|
| 1347 |
+
1558,
|
| 1348 |
+
453,
|
| 1349 |
+
1271,
|
| 1350 |
+
659,
|
| 1351 |
+
1158,
|
| 1352 |
+
1683,
|
| 1353 |
+
967,
|
| 1354 |
+
1691,
|
| 1355 |
+
576,
|
| 1356 |
+
686,
|
| 1357 |
+
604,
|
| 1358 |
+
522,
|
| 1359 |
+
439,
|
| 1360 |
+
183,
|
| 1361 |
+
1918,
|
| 1362 |
+
1531,
|
| 1363 |
+
823,
|
| 1364 |
+
1027,
|
| 1365 |
+
1711,
|
| 1366 |
+
1171,
|
| 1367 |
+
1549,
|
| 1368 |
+
2023,
|
| 1369 |
+
1123,
|
| 1370 |
+
1179,
|
| 1371 |
+
716,
|
| 1372 |
+
966,
|
| 1373 |
+
1705,
|
| 1374 |
+
161,
|
| 1375 |
+
426,
|
| 1376 |
+
526,
|
| 1377 |
+
827,
|
| 1378 |
+
1492,
|
| 1379 |
+
726,
|
| 1380 |
+
613,
|
| 1381 |
+
810,
|
| 1382 |
+
825,
|
| 1383 |
+
1745,
|
| 1384 |
+
1613,
|
| 1385 |
+
523,
|
| 1386 |
+
542,
|
| 1387 |
+
115,
|
| 1388 |
+
1704,
|
| 1389 |
+
1688,
|
| 1390 |
+
1956,
|
| 1391 |
+
1775,
|
| 1392 |
+
1806,
|
| 1393 |
+
1119,
|
| 1394 |
+
460,
|
| 1395 |
+
1781,
|
| 1396 |
+
1919,
|
| 1397 |
+
784,
|
| 1398 |
+
762,
|
| 1399 |
+
433,
|
| 1400 |
+
811,
|
| 1401 |
+
1524,
|
| 1402 |
+
721,
|
| 1403 |
+
487,
|
| 1404 |
+
822,
|
| 1405 |
+
1669,
|
| 1406 |
+
844,
|
| 1407 |
+
1765,
|
| 1408 |
+
443,
|
| 1409 |
+
167,
|
| 1410 |
+
1737,
|
| 1411 |
+
552,
|
| 1412 |
+
349,
|
| 1413 |
+
911,
|
| 1414 |
+
466,
|
| 1415 |
+
919,
|
| 1416 |
+
1200,
|
| 1417 |
+
595,
|
| 1418 |
+
196,
|
| 1419 |
+
547,
|
| 1420 |
+
1856,
|
| 1421 |
+
1612,
|
| 1422 |
+
169,
|
| 1423 |
+
1837,
|
| 1424 |
+
616,
|
| 1425 |
+
269,
|
| 1426 |
+
1794,
|
| 1427 |
+
776,
|
| 1428 |
+
1365,
|
| 1429 |
+
48,
|
| 1430 |
+
64,
|
| 1431 |
+
546,
|
| 1432 |
+
347,
|
| 1433 |
+
1997,
|
| 1434 |
+
741,
|
| 1435 |
+
388,
|
| 1436 |
+
1287,
|
| 1437 |
+
1127,
|
| 1438 |
+
252,
|
| 1439 |
+
2033,
|
| 1440 |
+
321,
|
| 1441 |
+
120,
|
| 1442 |
+
255,
|
| 1443 |
+
1236,
|
| 1444 |
+
329,
|
| 1445 |
+
1547,
|
| 1446 |
+
1180,
|
| 1447 |
+
1468,
|
| 1448 |
+
229,
|
| 1449 |
+
722,
|
| 1450 |
+
1535,
|
| 1451 |
+
316,
|
| 1452 |
+
1263,
|
| 1453 |
+
878,
|
| 1454 |
+
1094,
|
| 1455 |
+
1845,
|
| 1456 |
+
1253,
|
| 1457 |
+
1646,
|
| 1458 |
+
1178,
|
| 1459 |
+
295,
|
| 1460 |
+
928,
|
| 1461 |
+
38,
|
| 1462 |
+
189,
|
| 1463 |
+
174,
|
| 1464 |
+
1788,
|
| 1465 |
+
1323,
|
| 1466 |
+
1443,
|
| 1467 |
+
1706,
|
| 1468 |
+
1946,
|
| 1469 |
+
1568,
|
| 1470 |
+
1097,
|
| 1471 |
+
766,
|
| 1472 |
+
237,
|
| 1473 |
+
1681,
|
| 1474 |
+
1095,
|
| 1475 |
+
1967,
|
| 1476 |
+
223,
|
| 1477 |
+
1590,
|
| 1478 |
+
1925,
|
| 1479 |
+
1962,
|
| 1480 |
+
1445,
|
| 1481 |
+
539,
|
| 1482 |
+
224,
|
| 1483 |
+
59,
|
| 1484 |
+
941,
|
| 1485 |
+
1886,
|
| 1486 |
+
1543,
|
| 1487 |
+
204,
|
| 1488 |
+
89,
|
| 1489 |
+
1877,
|
| 1490 |
+
548,
|
| 1491 |
+
1903,
|
| 1492 |
+
1992,
|
| 1493 |
+
1375,
|
| 1494 |
+
1514,
|
| 1495 |
+
141,
|
| 1496 |
+
1530,
|
| 1497 |
+
488,
|
| 1498 |
+
663,
|
| 1499 |
+
738,
|
| 1500 |
+
1409,
|
| 1501 |
+
75,
|
| 1502 |
+
13,
|
| 1503 |
+
1985,
|
| 1504 |
+
735,
|
| 1505 |
+
62,
|
| 1506 |
+
450,
|
| 1507 |
+
1256,
|
| 1508 |
+
1079,
|
| 1509 |
+
571,
|
| 1510 |
+
685,
|
| 1511 |
+
1379,
|
| 1512 |
+
1239,
|
| 1513 |
+
1661,
|
| 1514 |
+
445,
|
| 1515 |
+
887,
|
| 1516 |
+
1620,
|
| 1517 |
+
1554,
|
| 1518 |
+
1182,
|
| 1519 |
+
503,
|
| 1520 |
+
555,
|
| 1521 |
+
177,
|
| 1522 |
+
1175,
|
| 1523 |
+
1586,
|
| 1524 |
+
393,
|
| 1525 |
+
705,
|
| 1526 |
+
226,
|
| 1527 |
+
1778,
|
| 1528 |
+
327,
|
| 1529 |
+
1328,
|
| 1530 |
+
1900,
|
| 1531 |
+
714,
|
| 1532 |
+
2021,
|
| 1533 |
+
1023,
|
| 1534 |
+
1209,
|
| 1535 |
+
78,
|
| 1536 |
+
653,
|
| 1537 |
+
1494,
|
| 1538 |
+
915,
|
| 1539 |
+
1945,
|
| 1540 |
+
1493,
|
| 1541 |
+
1188,
|
| 1542 |
+
16,
|
| 1543 |
+
259,
|
| 1544 |
+
1504,
|
| 1545 |
+
1895,
|
| 1546 |
+
1390,
|
| 1547 |
+
1485,
|
| 1548 |
+
276,
|
| 1549 |
+
897,
|
| 1550 |
+
367,
|
| 1551 |
+
788,
|
| 1552 |
+
251,
|
| 1553 |
+
1488,
|
| 1554 |
+
1186,
|
| 1555 |
+
1107,
|
| 1556 |
+
979,
|
| 1557 |
+
901,
|
| 1558 |
+
743,
|
| 1559 |
+
1820,
|
| 1560 |
+
1528,
|
| 1561 |
+
1564,
|
| 1562 |
+
1238,
|
| 1563 |
+
514,
|
| 1564 |
+
289,
|
| 1565 |
+
159,
|
| 1566 |
+
1446,
|
| 1567 |
+
1739,
|
| 1568 |
+
828,
|
| 1569 |
+
2038,
|
| 1570 |
+
187,
|
| 1571 |
+
1616,
|
| 1572 |
+
1090,
|
| 1573 |
+
1937,
|
| 1574 |
+
775,
|
| 1575 |
+
499,
|
| 1576 |
+
1338,
|
| 1577 |
+
627,
|
| 1578 |
+
1927,
|
| 1579 |
+
96,
|
| 1580 |
+
1136,
|
| 1581 |
+
1033,
|
| 1582 |
+
1404,
|
| 1583 |
+
494,
|
| 1584 |
+
857,
|
| 1585 |
+
448,
|
| 1586 |
+
163,
|
| 1587 |
+
1055,
|
| 1588 |
+
464,
|
| 1589 |
+
202,
|
| 1590 |
+
1402,
|
| 1591 |
+
1518,
|
| 1592 |
+
1296,
|
| 1593 |
+
1507,
|
| 1594 |
+
1174,
|
| 1595 |
+
790,
|
| 1596 |
+
1452,
|
| 1597 |
+
1361,
|
| 1598 |
+
1406,
|
| 1599 |
+
405,
|
| 1600 |
+
1124,
|
| 1601 |
+
1054,
|
| 1602 |
+
859,
|
| 1603 |
+
1308
|
| 1604 |
+
],
|
| 1605 |
+
"validation": [
|
| 1606 |
+
1354,
|
| 1607 |
+
1059,
|
| 1608 |
+
1871,
|
| 1609 |
+
244,
|
| 1610 |
+
2007,
|
| 1611 |
+
830,
|
| 1612 |
+
1589,
|
| 1613 |
+
1842,
|
| 1614 |
+
1517,
|
| 1615 |
+
669,
|
| 1616 |
+
789,
|
| 1617 |
+
848,
|
| 1618 |
+
1350,
|
| 1619 |
+
263,
|
| 1620 |
+
1479,
|
| 1621 |
+
1676,
|
| 1622 |
+
544,
|
| 1623 |
+
1353,
|
| 1624 |
+
498,
|
| 1625 |
+
1057,
|
| 1626 |
+
107,
|
| 1627 |
+
1757,
|
| 1628 |
+
1143,
|
| 1629 |
+
114,
|
| 1630 |
+
1064,
|
| 1631 |
+
1484,
|
| 1632 |
+
1722,
|
| 1633 |
+
133,
|
| 1634 |
+
302,
|
| 1635 |
+
213,
|
| 1636 |
+
322,
|
| 1637 |
+
1279,
|
| 1638 |
+
157,
|
| 1639 |
+
749,
|
| 1640 |
+
410,
|
| 1641 |
+
641,
|
| 1642 |
+
1368,
|
| 1643 |
+
813,
|
| 1644 |
+
172,
|
| 1645 |
+
153,
|
| 1646 |
+
32,
|
| 1647 |
+
247,
|
| 1648 |
+
2030,
|
| 1649 |
+
736,
|
| 1650 |
+
696,
|
| 1651 |
+
953,
|
| 1652 |
+
1581,
|
| 1653 |
+
198,
|
| 1654 |
+
1784,
|
| 1655 |
+
1811,
|
| 1656 |
+
1538,
|
| 1657 |
+
882,
|
| 1658 |
+
461,
|
| 1659 |
+
1299,
|
| 1660 |
+
179,
|
| 1661 |
+
998,
|
| 1662 |
+
553,
|
| 1663 |
+
356,
|
| 1664 |
+
633,
|
| 1665 |
+
363,
|
| 1666 |
+
1994,
|
| 1667 |
+
2002,
|
| 1668 |
+
819,
|
| 1669 |
+
132,
|
| 1670 |
+
1628,
|
| 1671 |
+
1972,
|
| 1672 |
+
195,
|
| 1673 |
+
1952,
|
| 1674 |
+
1603,
|
| 1675 |
+
720,
|
| 1676 |
+
1631,
|
| 1677 |
+
421,
|
| 1678 |
+
175,
|
| 1679 |
+
1159,
|
| 1680 |
+
981,
|
| 1681 |
+
935,
|
| 1682 |
+
82,
|
| 1683 |
+
296,
|
| 1684 |
+
1649,
|
| 1685 |
+
361,
|
| 1686 |
+
197,
|
| 1687 |
+
414,
|
| 1688 |
+
1920,
|
| 1689 |
+
1418,
|
| 1690 |
+
645,
|
| 1691 |
+
1480,
|
| 1692 |
+
519,
|
| 1693 |
+
1045,
|
| 1694 |
+
1177,
|
| 1695 |
+
667,
|
| 1696 |
+
535,
|
| 1697 |
+
240,
|
| 1698 |
+
275,
|
| 1699 |
+
1935,
|
| 1700 |
+
1215,
|
| 1701 |
+
853,
|
| 1702 |
+
29,
|
| 1703 |
+
1910,
|
| 1704 |
+
1716,
|
| 1705 |
+
1070,
|
| 1706 |
+
1268,
|
| 1707 |
+
1020,
|
| 1708 |
+
809,
|
| 1709 |
+
1578,
|
| 1710 |
+
1009,
|
| 1711 |
+
1642,
|
| 1712 |
+
740,
|
| 1713 |
+
1690,
|
| 1714 |
+
700,
|
| 1715 |
+
675,
|
| 1716 |
+
1610,
|
| 1717 |
+
1467,
|
| 1718 |
+
1636,
|
| 1719 |
+
108,
|
| 1720 |
+
1080,
|
| 1721 |
+
849,
|
| 1722 |
+
512,
|
| 1723 |
+
1911,
|
| 1724 |
+
1456,
|
| 1725 |
+
55,
|
| 1726 |
+
1337,
|
| 1727 |
+
515,
|
| 1728 |
+
1850,
|
| 1729 |
+
1461,
|
| 1730 |
+
1624,
|
| 1731 |
+
36,
|
| 1732 |
+
918,
|
| 1733 |
+
1958,
|
| 1734 |
+
1969,
|
| 1735 |
+
404,
|
| 1736 |
+
704,
|
| 1737 |
+
587,
|
| 1738 |
+
948,
|
| 1739 |
+
1627,
|
| 1740 |
+
330,
|
| 1741 |
+
66,
|
| 1742 |
+
1619,
|
| 1743 |
+
1010,
|
| 1744 |
+
1694,
|
| 1745 |
+
2031,
|
| 1746 |
+
1779,
|
| 1747 |
+
1641,
|
| 1748 |
+
1618,
|
| 1749 |
+
348,
|
| 1750 |
+
797,
|
| 1751 |
+
588,
|
| 1752 |
+
621,
|
| 1753 |
+
485,
|
| 1754 |
+
1388,
|
| 1755 |
+
10,
|
| 1756 |
+
1891,
|
| 1757 |
+
1369,
|
| 1758 |
+
1562,
|
| 1759 |
+
332,
|
| 1760 |
+
374,
|
| 1761 |
+
1663,
|
| 1762 |
+
474,
|
| 1763 |
+
1817,
|
| 1764 |
+
124,
|
| 1765 |
+
1882,
|
| 1766 |
+
391,
|
| 1767 |
+
1729,
|
| 1768 |
+
1665,
|
| 1769 |
+
1717,
|
| 1770 |
+
1650,
|
| 1771 |
+
1713,
|
| 1772 |
+
962,
|
| 1773 |
+
2013,
|
| 1774 |
+
607,
|
| 1775 |
+
1990,
|
| 1776 |
+
639,
|
| 1777 |
+
992,
|
| 1778 |
+
1397,
|
| 1779 |
+
1272,
|
| 1780 |
+
1164,
|
| 1781 |
+
164,
|
| 1782 |
+
1889,
|
| 1783 |
+
986,
|
| 1784 |
+
7,
|
| 1785 |
+
606,
|
| 1786 |
+
2029,
|
| 1787 |
+
1885,
|
| 1788 |
+
355,
|
| 1789 |
+
176,
|
| 1790 |
+
147,
|
| 1791 |
+
1700,
|
| 1792 |
+
1907,
|
| 1793 |
+
146,
|
| 1794 |
+
733,
|
| 1795 |
+
982,
|
| 1796 |
+
786,
|
| 1797 |
+
615,
|
| 1798 |
+
1326,
|
| 1799 |
+
609,
|
| 1800 |
+
194,
|
| 1801 |
+
793,
|
| 1802 |
+
1922,
|
| 1803 |
+
1584,
|
| 1804 |
+
432,
|
| 1805 |
+
1039,
|
| 1806 |
+
459,
|
| 1807 |
+
742,
|
| 1808 |
+
1938,
|
| 1809 |
+
1128,
|
| 1810 |
+
103,
|
| 1811 |
+
578,
|
| 1812 |
+
728,
|
| 1813 |
+
1831,
|
| 1814 |
+
891,
|
| 1815 |
+
1105,
|
| 1816 |
+
389,
|
| 1817 |
+
125,
|
| 1818 |
+
647,
|
| 1819 |
+
1184,
|
| 1820 |
+
1708,
|
| 1821 |
+
473,
|
| 1822 |
+
575,
|
| 1823 |
+
216,
|
| 1824 |
+
2043,
|
| 1825 |
+
1799,
|
| 1826 |
+
1431,
|
| 1827 |
+
689,
|
| 1828 |
+
288,
|
| 1829 |
+
796,
|
| 1830 |
+
2020,
|
| 1831 |
+
1826,
|
| 1832 |
+
1092,
|
| 1833 |
+
373,
|
| 1834 |
+
1050,
|
| 1835 |
+
567,
|
| 1836 |
+
1537,
|
| 1837 |
+
1515,
|
| 1838 |
+
993,
|
| 1839 |
+
1670,
|
| 1840 |
+
320,
|
| 1841 |
+
1225,
|
| 1842 |
+
711,
|
| 1843 |
+
1387,
|
| 1844 |
+
1018,
|
| 1845 |
+
558,
|
| 1846 |
+
1849,
|
| 1847 |
+
678,
|
| 1848 |
+
1005,
|
| 1849 |
+
581,
|
| 1850 |
+
995,
|
| 1851 |
+
72,
|
| 1852 |
+
128,
|
| 1853 |
+
903,
|
| 1854 |
+
282,
|
| 1855 |
+
846,
|
| 1856 |
+
1506,
|
| 1857 |
+
1574,
|
| 1858 |
+
403,
|
| 1859 |
+
654,
|
| 1860 |
+
1192,
|
| 1861 |
+
628,
|
| 1862 |
+
2028,
|
| 1863 |
+
1887,
|
| 1864 |
+
769,
|
| 1865 |
+
239,
|
| 1866 |
+
1417,
|
| 1867 |
+
8,
|
| 1868 |
+
341,
|
| 1869 |
+
703,
|
| 1870 |
+
862,
|
| 1871 |
+
58,
|
| 1872 |
+
1495,
|
| 1873 |
+
783,
|
| 1874 |
+
1916,
|
| 1875 |
+
1277,
|
| 1876 |
+
1974,
|
| 1877 |
+
1462,
|
| 1878 |
+
1545,
|
| 1879 |
+
709,
|
| 1880 |
+
1077,
|
| 1881 |
+
803,
|
| 1882 |
+
697,
|
| 1883 |
+
17,
|
| 1884 |
+
478,
|
| 1885 |
+
1917,
|
| 1886 |
+
331,
|
| 1887 |
+
312,
|
| 1888 |
+
791,
|
| 1889 |
+
170,
|
| 1890 |
+
1980,
|
| 1891 |
+
739,
|
| 1892 |
+
1866,
|
| 1893 |
+
1621,
|
| 1894 |
+
1344,
|
| 1895 |
+
1440,
|
| 1896 |
+
1752,
|
| 1897 |
+
1561,
|
| 1898 |
+
118,
|
| 1899 |
+
1964,
|
| 1900 |
+
463,
|
| 1901 |
+
1786,
|
| 1902 |
+
1061,
|
| 1903 |
+
369,
|
| 1904 |
+
1783,
|
| 1905 |
+
871,
|
| 1906 |
+
1659,
|
| 1907 |
+
1454,
|
| 1908 |
+
583,
|
| 1909 |
+
1331,
|
| 1910 |
+
764,
|
| 1911 |
+
1748,
|
| 1912 |
+
427,
|
| 1913 |
+
1309,
|
| 1914 |
+
752,
|
| 1915 |
+
1881,
|
| 1916 |
+
1117,
|
| 1917 |
+
1695,
|
| 1918 |
+
392,
|
| 1919 |
+
430,
|
| 1920 |
+
1763,
|
| 1921 |
+
497,
|
| 1922 |
+
1275,
|
| 1923 |
+
234,
|
| 1924 |
+
87,
|
| 1925 |
+
1166,
|
| 1926 |
+
1099,
|
| 1927 |
+
1222,
|
| 1928 |
+
303,
|
| 1929 |
+
384,
|
| 1930 |
+
1395,
|
| 1931 |
+
1295,
|
| 1932 |
+
912,
|
| 1933 |
+
105,
|
| 1934 |
+
1548,
|
| 1935 |
+
2041,
|
| 1936 |
+
3,
|
| 1937 |
+
1836,
|
| 1938 |
+
1302,
|
| 1939 |
+
774,
|
| 1940 |
+
1652,
|
| 1941 |
+
1237,
|
| 1942 |
+
1588,
|
| 1943 |
+
2024,
|
| 1944 |
+
670,
|
| 1945 |
+
1195,
|
| 1946 |
+
574,
|
| 1947 |
+
1858,
|
| 1948 |
+
2005,
|
| 1949 |
+
186,
|
| 1950 |
+
767,
|
| 1951 |
+
1436,
|
| 1952 |
+
1489,
|
| 1953 |
+
1407,
|
| 1954 |
+
1979,
|
| 1955 |
+
688,
|
| 1956 |
+
1078,
|
| 1957 |
+
150,
|
| 1958 |
+
1685,
|
| 1959 |
+
1240,
|
| 1960 |
+
211,
|
| 1961 |
+
1968,
|
| 1962 |
+
1447,
|
| 1963 |
+
1327,
|
| 1964 |
+
1774,
|
| 1965 |
+
1399,
|
| 1966 |
+
551,
|
| 1967 |
+
476,
|
| 1968 |
+
623,
|
| 1969 |
+
1252,
|
| 1970 |
+
916,
|
| 1971 |
+
1629,
|
| 1972 |
+
1793,
|
| 1973 |
+
632,
|
| 1974 |
+
854,
|
| 1975 |
+
1740,
|
| 1976 |
+
1634,
|
| 1977 |
+
1320,
|
| 1978 |
+
2046,
|
| 1979 |
+
802,
|
| 1980 |
+
236,
|
| 1981 |
+
1122,
|
| 1982 |
+
477,
|
| 1983 |
+
1243,
|
| 1984 |
+
1135,
|
| 1985 |
+
794,
|
| 1986 |
+
232,
|
| 1987 |
+
1614,
|
| 1988 |
+
1898,
|
| 1989 |
+
804,
|
| 1990 |
+
1870,
|
| 1991 |
+
1026,
|
| 1992 |
+
1991,
|
| 1993 |
+
54,
|
| 1994 |
+
1809,
|
| 1995 |
+
428,
|
| 1996 |
+
1196,
|
| 1997 |
+
1557,
|
| 1998 |
+
958,
|
| 1999 |
+
401,
|
| 2000 |
+
1893,
|
| 2001 |
+
1758,
|
| 2002 |
+
1232,
|
| 2003 |
+
1242,
|
| 2004 |
+
820,
|
| 2005 |
+
231,
|
| 2006 |
+
1555,
|
| 2007 |
+
273,
|
| 2008 |
+
35,
|
| 2009 |
+
1540,
|
| 2010 |
+
1983,
|
| 2011 |
+
1686,
|
| 2012 |
+
536,
|
| 2013 |
+
917,
|
| 2014 |
+
1796,
|
| 2015 |
+
1864,
|
| 2016 |
+
1674,
|
| 2017 |
+
1212,
|
| 2018 |
+
357,
|
| 2019 |
+
909,
|
| 2020 |
+
1904,
|
| 2021 |
+
1234,
|
| 2022 |
+
2040,
|
| 2023 |
+
1211,
|
| 2024 |
+
847,
|
| 2025 |
+
771,
|
| 2026 |
+
1477,
|
| 2027 |
+
1728,
|
| 2028 |
+
1587,
|
| 2029 |
+
648,
|
| 2030 |
+
1625,
|
| 2031 |
+
225,
|
| 2032 |
+
944,
|
| 2033 |
+
1007,
|
| 2034 |
+
924,
|
| 2035 |
+
1322,
|
| 2036 |
+
1724,
|
| 2037 |
+
1258,
|
| 2038 |
+
1807,
|
| 2039 |
+
342,
|
| 2040 |
+
852,
|
| 2041 |
+
1251,
|
| 2042 |
+
180,
|
| 2043 |
+
440,
|
| 2044 |
+
706,
|
| 2045 |
+
530,
|
| 2046 |
+
1776,
|
| 2047 |
+
1725,
|
| 2048 |
+
1161,
|
| 2049 |
+
1058,
|
| 2050 |
+
812,
|
| 2051 |
+
1429,
|
| 2052 |
+
1520,
|
| 2053 |
+
1596
|
| 2054 |
+
]
|
| 2055 |
+
}
|
results/training_curves.pdf
ADDED
|
Binary file (31 kB). View file
|
|
|
results/training_curves.png
ADDED
|
Git LFS Details
|
results/training_status.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"status": "completed",
|
| 3 |
+
"completed_epochs": 500,
|
| 4 |
+
"best_epoch": 495,
|
| 5 |
+
"best_val_relative_l2": 0.008166384883224964,
|
| 6 |
+
"paper_relative_l2": 0.0109,
|
| 7 |
+
"ratio_to_paper": 0.749209622314217,
|
| 8 |
+
"training_seconds": 12257.58068851661,
|
| 9 |
+
"n_train": 1600,
|
| 10 |
+
"n_val": 448,
|
| 11 |
+
"seed": 42,
|
| 12 |
+
"checkpoint": "weight/best_model.pth",
|
| 13 |
+
"slurm_job_id": "1059315"
|
| 14 |
+
}
|
results/training_summary.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"status": "completed",
|
| 3 |
+
"completed_epochs": 500,
|
| 4 |
+
"best_epoch": 495,
|
| 5 |
+
"best_val_relative_l2": 0.008166384883224964,
|
| 6 |
+
"paper_relative_l2": 0.0109,
|
| 7 |
+
"ratio_to_paper": 0.749209622314217,
|
| 8 |
+
"training_seconds": 12257.58068851661,
|
| 9 |
+
"n_train": 1600,
|
| 10 |
+
"n_val": 448,
|
| 11 |
+
"seed": 42,
|
| 12 |
+
"checkpoint": "weight/best_model.pth",
|
| 13 |
+
"slurm_job_id": "1059315"
|
| 14 |
+
}
|
results/validation_examples.pdf
ADDED
|
Binary file (33.4 kB). View file
|
|
|
results/validation_examples.png
ADDED
|
Git LFS Details
|
results/verification.json
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"status": "passed",
|
| 3 |
+
"completed_epochs": 500,
|
| 4 |
+
"n_train": 1600,
|
| 5 |
+
"n_validation": 448,
|
| 6 |
+
"resolution": 256,
|
| 7 |
+
"seed": 42,
|
| 8 |
+
"history_continuous": true,
|
| 9 |
+
"scheduler_verified": true,
|
| 10 |
+
"split_disjoint_and_complete": true,
|
| 11 |
+
"best_checkpoint_selection_verified": true,
|
| 12 |
+
"checkpoint_reload_metric_difference": 9.313225746154785e-10,
|
| 13 |
+
"independent_float64_relative_l2": 0.008166383878061999,
|
| 14 |
+
"physical_outputs_finite": true,
|
| 15 |
+
"figures_nonempty": true,
|
| 16 |
+
"portability": "passed: physically relocated code and checkpoint, changed data/results directories; CPU load only",
|
| 17 |
+
"accelerator_execution": "Slurm job 1059315, a01r3n12",
|
| 18 |
+
"metrics": {
|
| 19 |
+
"n_validation": 448,
|
| 20 |
+
"checkpoint_epoch": 495,
|
| 21 |
+
"best_epoch": 495,
|
| 22 |
+
"validation_relative_l2": 0.00816638395190239,
|
| 23 |
+
"validation_relative_l2_std": 0.0073033287189900875,
|
| 24 |
+
"validation_mse_physical": 5.692711056326516e-05,
|
| 25 |
+
"validation_rmse_physical": 0.00754500599578023,
|
| 26 |
+
"checkpoint_recorded_relative_l2": 0.008166384883224964,
|
| 27 |
+
"reload_metric_absolute_difference": 9.313225746154785e-10,
|
| 28 |
+
"paper_table1_relative_l2": 0.0109,
|
| 29 |
+
"ratio_to_paper": 0.7492095368717788,
|
| 30 |
+
"inference_seconds": 7.967788686975837,
|
| 31 |
+
"checkpoint_sha256": "82ca744dfb18510e680edf20b02213a585c6d859d269a2775c7192be8f67f821",
|
| 32 |
+
"device": "BW"
|
| 33 |
+
}
|
| 34 |
+
}
|
results/visualization_manifest.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"figures": [
|
| 3 |
+
"training_curves.png",
|
| 4 |
+
"training_curves.pdf",
|
| 5 |
+
"validation_examples.png",
|
| 6 |
+
"validation_examples.pdf",
|
| 7 |
+
"error_distribution.png"
|
| 8 |
+
],
|
| 9 |
+
"selected_validation_indices": [
|
| 10 |
+
0,
|
| 11 |
+
111,
|
| 12 |
+
136
|
| 13 |
+
],
|
| 14 |
+
"sample_count": 448,
|
| 15 |
+
"completed_epochs": 500,
|
| 16 |
+
"metrics": {
|
| 17 |
+
"n_validation": 448,
|
| 18 |
+
"checkpoint_epoch": 495,
|
| 19 |
+
"best_epoch": 495,
|
| 20 |
+
"validation_relative_l2": 0.00816638395190239,
|
| 21 |
+
"validation_relative_l2_std": 0.0073033287189900875,
|
| 22 |
+
"validation_mse_physical": 5.692711056326516e-05,
|
| 23 |
+
"validation_rmse_physical": 0.00754500599578023,
|
| 24 |
+
"checkpoint_recorded_relative_l2": 0.008166384883224964,
|
| 25 |
+
"reload_metric_absolute_difference": 9.313225746154785e-10,
|
| 26 |
+
"paper_table1_relative_l2": 0.0109,
|
| 27 |
+
"ratio_to_paper": 0.7492095368717788,
|
| 28 |
+
"inference_seconds": 7.967788686975837,
|
| 29 |
+
"checkpoint_sha256": "82ca744dfb18510e680edf20b02213a585c6d859d269a2775c7192be8f67f821",
|
| 30 |
+
"device": "BW"
|
| 31 |
+
}
|
| 32 |
+
}
|
scripts/common.py
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Configuration, supplied MAT data, and portable checkpoint utilities."""
|
| 2 |
+
|
| 3 |
+
import hashlib
|
| 4 |
+
import json
|
| 5 |
+
import os
|
| 6 |
+
import random
|
| 7 |
+
from pathlib import Path
|
| 8 |
+
|
| 9 |
+
import numpy as np
|
| 10 |
+
import scipy.io
|
| 11 |
+
import torch
|
| 12 |
+
import yaml
|
| 13 |
+
from torch.nn import functional as F
|
| 14 |
+
|
| 15 |
+
ROOT = Path(__file__).resolve().parents[1]
|
| 16 |
+
|
| 17 |
+
|
| 18 |
+
def package_path(value):
|
| 19 |
+
path = Path(value).expanduser()
|
| 20 |
+
return path if path.is_absolute() else ROOT / path
|
| 21 |
+
|
| 22 |
+
|
| 23 |
+
def load_config(path):
|
| 24 |
+
with open(package_path(path)) as stream:
|
| 25 |
+
return yaml.safe_load(stream)
|
| 26 |
+
|
| 27 |
+
|
| 28 |
+
def save_json(path, value):
|
| 29 |
+
path = Path(path)
|
| 30 |
+
path.parent.mkdir(parents=True, exist_ok=True)
|
| 31 |
+
temp = path.with_name(path.name + ".tmp")
|
| 32 |
+
temp.write_text(json.dumps(value, ensure_ascii=False, indent=2, allow_nan=False))
|
| 33 |
+
temp.replace(path)
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
def seed_everything(seed):
|
| 37 |
+
random.seed(seed)
|
| 38 |
+
np.random.seed(seed)
|
| 39 |
+
torch.manual_seed(seed)
|
| 40 |
+
torch.cuda.manual_seed_all(seed)
|
| 41 |
+
|
| 42 |
+
|
| 43 |
+
def compute_device(name):
|
| 44 |
+
device = torch.device(name)
|
| 45 |
+
if device.type == "cuda":
|
| 46 |
+
if not os.environ.get("SLURM_JOB_ID"):
|
| 47 |
+
raise RuntimeError("Accelerator execution requires a Slurm allocation")
|
| 48 |
+
if not torch.cuda.is_available():
|
| 49 |
+
raise RuntimeError("No accelerator visible inside the Slurm job")
|
| 50 |
+
return device
|
| 51 |
+
|
| 52 |
+
|
| 53 |
+
def read_fields(config):
|
| 54 |
+
data = config["data"]
|
| 55 |
+
path = package_path(data["directory"]) / data["filename"]
|
| 56 |
+
arrays = scipy.io.loadmat(path, variable_names=[data["input_key"], data["target_key"]])
|
| 57 |
+
fields = []
|
| 58 |
+
for key in [data["input_key"], data["target_key"]]:
|
| 59 |
+
array = arrays[key]
|
| 60 |
+
if list(array.shape) != data["expected_shape"] or array.dtype != np.float64:
|
| 61 |
+
raise ValueError(f"Unexpected supplied data {key}: {array.shape}, {array.dtype}")
|
| 62 |
+
if not np.isfinite(array).all():
|
| 63 |
+
raise ValueError(f"Nonfinite values in {key}")
|
| 64 |
+
tensor = torch.from_numpy(array.astype(np.float32))
|
| 65 |
+
# Paper leaves resizing unspecified: author's linear interpolation,
|
| 66 |
+
# align_corners=False, evaluates at source centers 15.5,47.5,... .
|
| 67 |
+
tensor = F.interpolate(tensor[:, None], size=data["resolution"],
|
| 68 |
+
mode=data["interpolation"], align_corners=False)
|
| 69 |
+
fields.append(tensor.transpose(1, 2).contiguous())
|
| 70 |
+
return fields
|
| 71 |
+
|
| 72 |
+
|
| 73 |
+
def split_indices(config):
|
| 74 |
+
data = config["data"]
|
| 75 |
+
permutation = torch.randperm(data["expected_shape"][0], generator=torch.Generator().manual_seed(config["seed"]))
|
| 76 |
+
n, m = data["n_train"], data["n_val"]
|
| 77 |
+
if n + m != len(permutation):
|
| 78 |
+
raise ValueError("The formal experiment must use all 2048 supplied samples")
|
| 79 |
+
return permutation[:n], permutation[n:n + m]
|
| 80 |
+
|
| 81 |
+
|
| 82 |
+
def fit_normalizers(initial, final, train_ids, eps):
|
| 83 |
+
result = {"eps": eps}
|
| 84 |
+
for prefix, field in [("a", initial), ("u", final)]:
|
| 85 |
+
training = field[train_ids]
|
| 86 |
+
result[prefix + "_mean"] = training.mean()
|
| 87 |
+
result[prefix + "_std"] = training.std(correction=1)
|
| 88 |
+
return result
|
| 89 |
+
|
| 90 |
+
|
| 91 |
+
def encode(field, stats, prefix):
|
| 92 |
+
return (field - stats[prefix + "_mean"].to(field)) / (stats[prefix + "_std"].to(field) + stats["eps"])
|
| 93 |
+
|
| 94 |
+
|
| 95 |
+
def decode(field, stats, prefix="u"):
|
| 96 |
+
return field * (stats[prefix + "_std"].to(field) + stats["eps"]) + stats[prefix + "_mean"].to(field)
|
| 97 |
+
|
| 98 |
+
|
| 99 |
+
def make_inputs(initial, stats):
|
| 100 |
+
physical = encode(initial, stats, "a")
|
| 101 |
+
grid = torch.linspace(0, 1, initial.shape[1], dtype=initial.dtype).view(1, -1, 1)
|
| 102 |
+
return torch.cat([physical, grid.expand(initial.shape[0], -1, -1)], dim=-1)
|
| 103 |
+
|
| 104 |
+
|
| 105 |
+
def relative_l2(prediction, target):
|
| 106 |
+
difference = (prediction - target).flatten(1)
|
| 107 |
+
return torch.linalg.vector_norm(difference, dim=1) / (torch.linalg.vector_norm(target.flatten(1), dim=1) + 1e-12)
|
| 108 |
+
|
| 109 |
+
|
| 110 |
+
def atomic_checkpoint(path, state):
|
| 111 |
+
path = package_path(path)
|
| 112 |
+
path.parent.mkdir(parents=True, exist_ok=True)
|
| 113 |
+
temp = path.with_name(path.name + ".tmp")
|
| 114 |
+
torch.save(state, temp)
|
| 115 |
+
temp.replace(path)
|
| 116 |
+
|
| 117 |
+
|
| 118 |
+
def load_checkpoint(path):
|
| 119 |
+
# Tensor/primitive-only checkpoint; no pickled custom class or path equality.
|
| 120 |
+
state = torch.load(package_path(path), map_location="cpu", weights_only=True)
|
| 121 |
+
if state.get("format") != "lino-burgers-v1":
|
| 122 |
+
raise ValueError("Unsupported LiNO checkpoint")
|
| 123 |
+
return state
|
| 124 |
+
|
| 125 |
+
|
| 126 |
+
def file_digest(path):
|
| 127 |
+
digest = hashlib.sha256()
|
| 128 |
+
with open(path, "rb") as stream:
|
| 129 |
+
for block in iter(lambda: stream.read(8 * 1024 * 1024), b""):
|
| 130 |
+
digest.update(block)
|
| 131 |
+
return digest.hexdigest()
|
scripts/inference.py
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Reload the best checkpoint and evaluate every held-out validation sample."""
|
| 2 |
+
|
| 3 |
+
import argparse
|
| 4 |
+
import csv
|
| 5 |
+
import sys
|
| 6 |
+
import time
|
| 7 |
+
from pathlib import Path
|
| 8 |
+
|
| 9 |
+
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
|
| 10 |
+
import numpy as np
|
| 11 |
+
import torch
|
| 12 |
+
from model.lino import LiNO
|
| 13 |
+
from common import (compute_device, decode, file_digest, load_checkpoint, load_config,
|
| 14 |
+
make_inputs, package_path, read_fields, relative_l2, save_json)
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
@torch.no_grad()
|
| 18 |
+
def inference(config, checkpoint=None):
|
| 19 |
+
device = compute_device(config["inference"]["device"])
|
| 20 |
+
checkpoint = package_path(checkpoint or config["training"]["checkpoint"])
|
| 21 |
+
state = load_checkpoint(checkpoint)
|
| 22 |
+
contract = state["data_contract"]
|
| 23 |
+
for key in ["resolution", "interpolation", "input_key", "target_key"]:
|
| 24 |
+
if config["data"][key] != contract[key]:
|
| 25 |
+
raise ValueError(f"Data contract mismatch for {key}")
|
| 26 |
+
data_path = package_path(config["data"]["directory"]) / config["data"]["filename"]
|
| 27 |
+
if file_digest(data_path) != contract["dataset_sha256"]:
|
| 28 |
+
raise ValueError("Dataset content differs from the training data (paths may change)")
|
| 29 |
+
initial, final = read_fields(config)
|
| 30 |
+
ids, stats = state["val_indices"], state["normalizers"]
|
| 31 |
+
model = LiNO(**state["architecture"]).to(device)
|
| 32 |
+
model.load_state_dict(state["model_state"], strict=True)
|
| 33 |
+
model.eval()
|
| 34 |
+
inputs = make_inputs(initial[ids], stats)
|
| 35 |
+
targets = final[ids]
|
| 36 |
+
predictions = []
|
| 37 |
+
started = time.monotonic()
|
| 38 |
+
batch_size = config["inference"]["batch_size"]
|
| 39 |
+
for start in range(0, len(ids), batch_size):
|
| 40 |
+
normalized = model(inputs[start:start+batch_size].to(device))
|
| 41 |
+
predictions.append(decode(normalized, stats).cpu())
|
| 42 |
+
if start % (batch_size * 25) == 0:
|
| 43 |
+
print(f"INFERENCE samples={min(start+batch_size,len(ids))}/{len(ids)} checkpoint_epoch={state['epoch']}", flush=True)
|
| 44 |
+
prediction = torch.cat(predictions)
|
| 45 |
+
errors = relative_l2(prediction, targets)
|
| 46 |
+
mse_by_sample = (prediction-targets).square().flatten(1).mean(1)
|
| 47 |
+
if not torch.isfinite(prediction).all():
|
| 48 |
+
raise FloatingPointError("Nonfinite inference output")
|
| 49 |
+
output = package_path(config["results"]["directory"])
|
| 50 |
+
output.mkdir(parents=True, exist_ok=True)
|
| 51 |
+
np.savez_compressed(output/"predictions.npz", initial=initial[ids].numpy(), target=targets.numpy(),
|
| 52 |
+
prediction=prediction.numpy(), sample_indices=ids.numpy(), relative_l2=errors.numpy(),
|
| 53 |
+
x=np.linspace(0,1,config["data"]["resolution"],dtype=np.float32))
|
| 54 |
+
with open(output/"per_sample_metrics.csv", "w", newline="") as stream:
|
| 55 |
+
writer = csv.writer(stream)
|
| 56 |
+
writer.writerow(["validation_index", "source_index", "relative_l2", "mse_physical"])
|
| 57 |
+
writer.writerows((i,int(source),float(rel),float(mse)) for i,(source,rel,mse) in enumerate(zip(ids,errors,mse_by_sample)))
|
| 58 |
+
metric = errors.mean().item()
|
| 59 |
+
metrics = dict(n_validation=len(ids), checkpoint_epoch=state["epoch"], best_epoch=state["best_epoch"],
|
| 60 |
+
validation_relative_l2=metric, validation_relative_l2_std=errors.std(correction=0).item(),
|
| 61 |
+
validation_mse_physical=mse_by_sample.mean().item(),
|
| 62 |
+
validation_rmse_physical=mse_by_sample.mean().sqrt().item(),
|
| 63 |
+
checkpoint_recorded_relative_l2=state["best_val_relative_l2"],
|
| 64 |
+
reload_metric_absolute_difference=abs(metric-state["best_val_relative_l2"]),
|
| 65 |
+
paper_table1_relative_l2=0.0109, ratio_to_paper=metric/0.0109,
|
| 66 |
+
inference_seconds=time.monotonic()-started,
|
| 67 |
+
checkpoint_sha256=file_digest(checkpoint), device=torch.cuda.get_device_name(device))
|
| 68 |
+
if metrics["reload_metric_absolute_difference"] > 1e-6:
|
| 69 |
+
raise AssertionError(f"Reloaded metric disagrees with checkpoint: {metrics}")
|
| 70 |
+
save_json(output/"metrics.json", metrics)
|
| 71 |
+
print("BEST CHECKPOINT INFERENCE COMPLETED", metrics, flush=True)
|
| 72 |
+
|
| 73 |
+
|
| 74 |
+
if __name__ == "__main__":
|
| 75 |
+
parser = argparse.ArgumentParser(description=__doc__)
|
| 76 |
+
parser.add_argument("--config", default="config/config.yaml")
|
| 77 |
+
parser.add_argument("--checkpoint", default=None)
|
| 78 |
+
args = parser.parse_args()
|
| 79 |
+
inference(load_config(args.config), args.checkpoint)
|
scripts/result.py
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Plot training curves and physical-space validation predictions."""
|
| 2 |
+
|
| 3 |
+
import argparse
|
| 4 |
+
import csv
|
| 5 |
+
import json
|
| 6 |
+
from pathlib import Path
|
| 7 |
+
import matplotlib
|
| 8 |
+
matplotlib.use("Agg")
|
| 9 |
+
import matplotlib.pyplot as plt
|
| 10 |
+
import numpy as np
|
| 11 |
+
from common import load_config, package_path, save_json
|
| 12 |
+
|
| 13 |
+
|
| 14 |
+
def render(config):
|
| 15 |
+
output = package_path(config["results"]["directory"])
|
| 16 |
+
data = np.load(output/"predictions.npz")
|
| 17 |
+
metrics = json.loads((output/"metrics.json").read_text())
|
| 18 |
+
with open(output/"history.csv") as stream:
|
| 19 |
+
rows = list(csv.DictReader(stream))
|
| 20 |
+
epoch = np.array([int(r["epoch"]) for r in rows])
|
| 21 |
+
fig, axes = plt.subplots(1, 2, figsize=(11, 4), constrained_layout=True)
|
| 22 |
+
for name, label in [("train_loss","Training"),("val_loss","Validation")]:
|
| 23 |
+
axes[0].semilogy(epoch,[float(r[name]) for r in rows],label=label)
|
| 24 |
+
axes[0].set(xlabel="Epoch",ylabel="MSE + relative L2 (normalized)")
|
| 25 |
+
axes[0].legend()
|
| 26 |
+
axes[1].semilogy(epoch,[float(r["val_relative_l2"]) for r in rows],color="tab:blue",label="Validation")
|
| 27 |
+
axes[1].axhline(0.0109,color="tab:red",linestyle="--",label="Paper Table 1: 0.0109")
|
| 28 |
+
axes[1].set(xlabel="Epoch",ylabel="Relative L2 (physical space)")
|
| 29 |
+
axes[1].legend()
|
| 30 |
+
for ax in axes: ax.grid(alpha=0.2)
|
| 31 |
+
fig.savefig(output/"training_curves.png",dpi=200)
|
| 32 |
+
fig.savefig(output/"training_curves.pdf")
|
| 33 |
+
plt.close(fig)
|
| 34 |
+
errors=data["relative_l2"]
|
| 35 |
+
chosen=[0,int(np.argsort(errors)[len(errors)//2]),int(np.argmax(errors))]
|
| 36 |
+
fig, axes=plt.subplots(3,2,figsize=(12,10),constrained_layout=True)
|
| 37 |
+
x=data["x"]
|
| 38 |
+
for row,index in enumerate(chosen):
|
| 39 |
+
initial=data["initial"][index,:,0]; target=data["target"][index,:,0]; pred=data["prediction"][index,:,0]
|
| 40 |
+
axes[row,0].plot(x,initial,color="0.6",linewidth=1,label="Initial u0")
|
| 41 |
+
axes[row,0].plot(x,target,color="black",linewidth=1.5,label="Reference u(T)")
|
| 42 |
+
axes[row,0].plot(x,pred,color="tab:blue",linestyle="--",label="LiNO")
|
| 43 |
+
axes[row,0].set_title(f"Source sample {data['sample_indices'][index]}, relative L2={errors[index]:.4g}")
|
| 44 |
+
axes[row,0].set(xlabel="x",ylabel="u (dataset units)")
|
| 45 |
+
axes[row,0].legend()
|
| 46 |
+
axes[row,1].plot(x,pred-target,color="tab:red")
|
| 47 |
+
axes[row,1].axhline(0,color="0.5",linewidth=0.5)
|
| 48 |
+
axes[row,1].set(xlabel="x",ylabel="Prediction - reference")
|
| 49 |
+
fig.savefig(output/"validation_examples.png",dpi=200)
|
| 50 |
+
fig.savefig(output/"validation_examples.pdf")
|
| 51 |
+
plt.close(fig)
|
| 52 |
+
fig, ax=plt.subplots(figsize=(6,4),constrained_layout=True)
|
| 53 |
+
ax.hist(errors,bins=35,color="tab:blue",alpha=.85)
|
| 54 |
+
ax.set(xlabel="Validation relative L2",ylabel="Samples",title=f"All {len(errors)} held-out samples")
|
| 55 |
+
fig.savefig(output/"error_distribution.png",dpi=200)
|
| 56 |
+
plt.close(fig)
|
| 57 |
+
save_json(output/"visualization_manifest.json",dict(figures=["training_curves.png","training_curves.pdf","validation_examples.png","validation_examples.pdf","error_distribution.png"],
|
| 58 |
+
selected_validation_indices=chosen,sample_count=len(errors),completed_epochs=len(rows),metrics=metrics))
|
| 59 |
+
print(f"VISUALIZATION COMPLETED: {output} ({len(rows)} epochs, {len(errors)} validation samples)",flush=True)
|
| 60 |
+
|
| 61 |
+
|
| 62 |
+
if __name__ == "__main__":
|
| 63 |
+
parser=argparse.ArgumentParser(description=__doc__)
|
| 64 |
+
parser.add_argument("--config",default="config/config.yaml")
|
| 65 |
+
args=parser.parse_args()
|
| 66 |
+
render(load_config(args.config))
|
scripts/train.py
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
"""Full paper training: python scripts/train.py --config config/config.yaml."""
|
| 2 |
+
|
| 3 |
+
import argparse
|
| 4 |
+
import csv
|
| 5 |
+
import os
|
| 6 |
+
import platform
|
| 7 |
+
import sys
|
| 8 |
+
import time
|
| 9 |
+
from pathlib import Path
|
| 10 |
+
|
| 11 |
+
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
|
| 12 |
+
import torch
|
| 13 |
+
from torch.utils.data import DataLoader, TensorDataset
|
| 14 |
+
from model.lino import LiNO
|
| 15 |
+
from common import (atomic_checkpoint, compute_device, decode, encode, file_digest,
|
| 16 |
+
fit_normalizers, load_checkpoint, load_config, make_inputs,
|
| 17 |
+
package_path, read_fields, relative_l2, save_json,
|
| 18 |
+
seed_everything, split_indices)
|
| 19 |
+
|
| 20 |
+
|
| 21 |
+
@torch.no_grad()
|
| 22 |
+
def evaluate(model, loader, stats, device):
|
| 23 |
+
model.eval()
|
| 24 |
+
total = torch.zeros(4, device=device)
|
| 25 |
+
count = 0
|
| 26 |
+
for inputs, targets in loader:
|
| 27 |
+
inputs, targets = inputs.to(device), targets.to(device)
|
| 28 |
+
prediction = model(inputs)
|
| 29 |
+
mse = (prediction - targets).square().mean()
|
| 30 |
+
rel = relative_l2(prediction, targets).mean()
|
| 31 |
+
physical_prediction, physical_target = decode(prediction, stats), decode(targets, stats)
|
| 32 |
+
physical_rel = relative_l2(physical_prediction, physical_target).mean()
|
| 33 |
+
physical_mse = (physical_prediction - physical_target).square().mean()
|
| 34 |
+
total += torch.stack([mse + rel, mse, physical_rel, physical_mse]) * len(inputs)
|
| 35 |
+
count += len(inputs)
|
| 36 |
+
values = (total / count).cpu().tolist()
|
| 37 |
+
if not all(torch.isfinite(torch.tensor(values))):
|
| 38 |
+
raise FloatingPointError("Nonfinite validation metrics")
|
| 39 |
+
return dict(zip(["val_loss", "val_mse_normalized", "val_relative_l2", "val_mse_physical"], values))
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
def train(config, resume=None):
|
| 43 |
+
seed_everything(config["seed"])
|
| 44 |
+
settings = config["training"]
|
| 45 |
+
device = compute_device(settings["device"])
|
| 46 |
+
output = package_path(config["results"]["directory"])
|
| 47 |
+
output.mkdir(parents=True, exist_ok=True)
|
| 48 |
+
initial, final = read_fields(config)
|
| 49 |
+
train_ids, val_ids = split_indices(config)
|
| 50 |
+
stats = fit_normalizers(initial, final, train_ids, config["data"]["normalization_eps"])
|
| 51 |
+
restored = load_checkpoint(resume) if resume else None
|
| 52 |
+
if restored:
|
| 53 |
+
if restored["architecture"] != config["model"]:
|
| 54 |
+
raise ValueError("Resume architecture differs from config")
|
| 55 |
+
train_ids, val_ids, stats = restored["train_indices"], restored["val_indices"], restored["normalizers"]
|
| 56 |
+
inputs, targets = make_inputs(initial, stats), encode(final, stats, "u")
|
| 57 |
+
loader_args = dict(batch_size=settings["batch_size"], num_workers=settings["num_workers"], pin_memory=True, drop_last=False)
|
| 58 |
+
training = DataLoader(TensorDataset(inputs[train_ids], targets[train_ids]), shuffle=True, **loader_args)
|
| 59 |
+
validation = DataLoader(TensorDataset(inputs[val_ids], targets[val_ids]), shuffle=False, **loader_args)
|
| 60 |
+
model = LiNO(**config["model"]).to(device)
|
| 61 |
+
optimizer = torch.optim.AdamW(model.parameters(), lr=settings["learning_rate"],
|
| 62 |
+
weight_decay=settings["weight_decay"], betas=tuple(settings["betas"]), eps=settings["optimizer_eps"])
|
| 63 |
+
scheduler = torch.optim.lr_scheduler.StepLR(optimizer, step_size=settings["scheduler_step"], gamma=settings["scheduler_gamma"])
|
| 64 |
+
best, best_epoch, start_epoch = float("inf"), 0, 0
|
| 65 |
+
if restored:
|
| 66 |
+
model.load_state_dict(restored["model_state"], strict=True)
|
| 67 |
+
optimizer.load_state_dict(restored["optimizer_state"])
|
| 68 |
+
scheduler.load_state_dict(restored["scheduler_state"])
|
| 69 |
+
best, best_epoch, start_epoch = restored["best_val_relative_l2"], restored["best_epoch"], restored["epoch"]
|
| 70 |
+
torch.set_rng_state(restored["torch_rng_state"])
|
| 71 |
+
torch.cuda.set_rng_state_all(restored["accelerator_rng_states"])
|
| 72 |
+
data_path = package_path(config["data"]["directory"]) / config["data"]["filename"]
|
| 73 |
+
parameter_count = sum(p.numel() for p in model.parameters())
|
| 74 |
+
manifest = dict(config=config, architecture=model.architecture, parameter_count=parameter_count,
|
| 75 |
+
dataset_path=str(data_path), dataset_sha256=file_digest(data_path),
|
| 76 |
+
raw_shape=config["data"]["expected_shape"], resolution=config["data"]["resolution"],
|
| 77 |
+
n_train=len(train_ids), n_val=len(val_ids), seed=config["seed"],
|
| 78 |
+
dtype="float32", optimizer="AdamW", precision="float32", early_stopping=False,
|
| 79 |
+
torch_version=str(torch.__version__), hip_version=torch.version.hip,
|
| 80 |
+
python_version=platform.python_version(), hostname=platform.node(),
|
| 81 |
+
slurm_job_id=os.environ.get("SLURM_JOB_ID"), device=torch.cuda.get_device_name(device),
|
| 82 |
+
source_files={str(p.relative_to(Path(__file__).resolve().parents[1])):file_digest(p)
|
| 83 |
+
for folder in ["model", "scripts"] for p in (Path(__file__).resolve().parents[1]/folder).glob("*.py")})
|
| 84 |
+
save_json(output / "run_manifest.json", manifest)
|
| 85 |
+
save_json(output / "split_indices.json", {"seed":config["seed"], "train":train_ids.tolist(), "validation":val_ids.tolist()})
|
| 86 |
+
history_path = output / "history.csv"
|
| 87 |
+
columns = ["epoch", "train_loss", "train_mse_normalized", "train_relative_l2_normalized", "val_loss", "val_mse_normalized", "val_relative_l2", "val_mse_physical", "lr_used", "lr_next", "epoch_seconds", "best_val_relative_l2"]
|
| 88 |
+
print(f"FORMAL RUN device={manifest['device']} job={manifest['slurm_job_id']} params={parameter_count} train={len(train_ids)} val={len(val_ids)} resolution={inputs.shape[1]} epochs={settings['epochs']} batch={settings['batch_size']}", flush=True)
|
| 89 |
+
started = time.monotonic()
|
| 90 |
+
with open(history_path, "a" if resume else "w", newline="", buffering=1) as stream:
|
| 91 |
+
writer = csv.DictWriter(stream, fieldnames=columns)
|
| 92 |
+
if not resume:
|
| 93 |
+
writer.writeheader()
|
| 94 |
+
for epoch in range(start_epoch + 1, settings["epochs"] + 1):
|
| 95 |
+
epoch_start = time.monotonic()
|
| 96 |
+
lr_used = optimizer.param_groups[0]["lr"]
|
| 97 |
+
model.train()
|
| 98 |
+
totals = torch.zeros(3, device=device)
|
| 99 |
+
count = 0
|
| 100 |
+
for step, (batch_x, batch_y) in enumerate(training, 1):
|
| 101 |
+
batch_x, batch_y = batch_x.to(device), batch_y.to(device)
|
| 102 |
+
optimizer.zero_grad(set_to_none=True)
|
| 103 |
+
prediction = model(batch_x)
|
| 104 |
+
mse = (prediction - batch_y).square().mean()
|
| 105 |
+
relative = relative_l2(prediction, batch_y).mean()
|
| 106 |
+
loss = mse + relative
|
| 107 |
+
loss.backward()
|
| 108 |
+
gradient_norm = torch.nn.utils.clip_grad_norm_(model.parameters(), settings["grad_clip"], error_if_nonfinite=True)
|
| 109 |
+
optimizer.step()
|
| 110 |
+
totals += torch.stack([loss.detach(), mse.detach(), relative.detach()]) * len(batch_x)
|
| 111 |
+
count += len(batch_x)
|
| 112 |
+
if step % settings["log_interval"] == 0 or step == len(training):
|
| 113 |
+
print(f"epoch={epoch:03d}/{settings['epochs']} step={step:03d}/{len(training)} loss={loss.item():.7e} mse={mse.item():.7e} rel_l2_norm={relative.item():.7e} grad_norm={gradient_norm.item():.5e}", flush=True)
|
| 114 |
+
scheduler.step()
|
| 115 |
+
metrics = evaluate(model, validation, stats, device)
|
| 116 |
+
train_loss, train_mse, train_rel = (totals / count).cpu().tolist()
|
| 117 |
+
improved = metrics["val_relative_l2"] < best
|
| 118 |
+
if improved:
|
| 119 |
+
best, best_epoch = metrics["val_relative_l2"], epoch
|
| 120 |
+
row = dict(epoch=epoch, train_loss=train_loss, train_mse_normalized=train_mse,
|
| 121 |
+
train_relative_l2_normalized=train_rel, **metrics, lr_used=lr_used,
|
| 122 |
+
lr_next=optimizer.param_groups[0]["lr"], epoch_seconds=time.monotonic()-epoch_start,
|
| 123 |
+
best_val_relative_l2=best)
|
| 124 |
+
state = dict(format="lino-burgers-v1", architecture=model.architecture,
|
| 125 |
+
model_state=model.state_dict(), optimizer_state=optimizer.state_dict(),
|
| 126 |
+
scheduler_state=scheduler.state_dict(), epoch=epoch, best_epoch=best_epoch,
|
| 127 |
+
best_val_relative_l2=best, normalizers=stats, train_indices=train_ids,
|
| 128 |
+
val_indices=val_ids, data_contract={"resolution":config["data"]["resolution"],
|
| 129 |
+
"interpolation":config["data"]["interpolation"], "input_key":config["data"]["input_key"],
|
| 130 |
+
"target_key":config["data"]["target_key"], "dataset_sha256":manifest["dataset_sha256"]},
|
| 131 |
+
torch_rng_state=torch.get_rng_state(), accelerator_rng_states=torch.cuda.get_rng_state_all(),
|
| 132 |
+
validation_metrics=metrics)
|
| 133 |
+
if improved:
|
| 134 |
+
atomic_checkpoint(settings["checkpoint"], state)
|
| 135 |
+
atomic_checkpoint(settings["last_checkpoint"], state)
|
| 136 |
+
writer.writerow(row)
|
| 137 |
+
save_json(output / "training_status.json", {**row, "best_epoch":best_epoch, "status":"running", "completed_epochs":epoch})
|
| 138 |
+
print(f"EPOCH {epoch:03d}/{settings['epochs']} train_loss={train_loss:.8e} val_loss={metrics['val_loss']:.8e} val_relative_l2={metrics['val_relative_l2']:.8e} best={best:.8e} best_epoch={best_epoch} lr={lr_used:.6e} seconds={row['epoch_seconds']:.2f}", flush=True)
|
| 139 |
+
summary = dict(status="completed", completed_epochs=settings["epochs"], best_epoch=best_epoch,
|
| 140 |
+
best_val_relative_l2=best, paper_relative_l2=0.0109,
|
| 141 |
+
ratio_to_paper=best/0.0109, training_seconds=time.monotonic()-started,
|
| 142 |
+
n_train=len(train_ids), n_val=len(val_ids), seed=config["seed"],
|
| 143 |
+
checkpoint=str(settings["checkpoint"]), slurm_job_id=manifest["slurm_job_id"])
|
| 144 |
+
save_json(output / "training_summary.json", summary)
|
| 145 |
+
save_json(output / "training_status.json", summary)
|
| 146 |
+
print("TRAINING COMPLETED", summary, flush=True)
|
| 147 |
+
|
| 148 |
+
|
| 149 |
+
if __name__ == "__main__":
|
| 150 |
+
parser = argparse.ArgumentParser(description=__doc__)
|
| 151 |
+
parser.add_argument("--config", default="config/config.yaml")
|
| 152 |
+
parser.add_argument("--resume", default=None, help="Restore a full last checkpoint if interrupted")
|
| 153 |
+
args = parser.parse_args()
|
| 154 |
+
train(load_config(args.config), args.resume)
|
weight/best_model.pth
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:82ca744dfb18510e680edf20b02213a585c6d859d269a2775c7192be8f67f821
|
| 3 |
+
size 22643009
|