Repository: lanl/OpenFWI Branch: main Commit: 48754806b7b4 Files: 38 Total size: 222.0 KB Directory structure: gitextract_szcesyxt/ ├── LICENSE ├── README.md ├── dataset.py ├── dataset_config.json ├── gan_train.py ├── network.py ├── pytorch_ssim.py ├── rainbow256.npy ├── scheduler.py ├── split_files/ │ ├── curvefault_a_train.txt │ ├── curvefault_a_val.txt │ ├── curvefault_b_train.txt │ ├── curvefault_b_val.txt │ ├── curvevel_a_train.txt │ ├── curvevel_a_val.txt │ ├── curvevel_b_train.txt │ ├── curvevel_b_val.txt │ ├── flatfault_a_train.txt │ ├── flatfault_a_val.txt │ ├── flatfault_b_train.txt │ ├── flatfault_b_val.txt │ ├── flatvel_a_train.txt │ ├── flatvel_a_val.txt │ ├── flatvel_b_train.txt │ ├── flatvel_b_val.txt │ ├── kaggle_tutorial_train.txt │ ├── kaggle_tutorial_val.txt │ ├── style_a_train.txt │ ├── style_a_val.txt │ ├── style_b_train.txt │ ├── style_b_val.txt │ ├── tutorial_train.txt │ └── tutorial_val.txt ├── test.py ├── train.py ├── transforms.py ├── utils.py └── vis.py ================================================ FILE CONTENTS ================================================ ================================================ FILE: LICENSE ================================================ BSD 3-Clause License Copyright (c) 2022, Los Alamos National Laboratory All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ================================================ FILE: README.md ================================================ This program is open source under the BSD-3 License. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. [![License](https://img.shields.io/badge/License-BSD_3--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause) # OpenFWI Benchmarks > Pytorch Implementation on OpenFWI 2D datasets ## About This repository officially supports the reproducibility of OpenFWI Benchmarks[[1]](#ref1). The mateirals will evolve with the further development of OpenFWI. For the time being, it contains the codes for training and testing InversionNet[[2]](#ref2) and VelocityGAN[[3]](#ref3), and covers 10 datasets in __Vel family__, __Fault family__, and __Style family__. ## Prepare Data First download any dataset from our [website](https://openfwi-lanl.github.io/docs/data.html#vel) and unzip it into your local directory. ### Load a pair of velocity map and seismic data For any dataset in _Vel, Fault, Style_ family, the data is saved as `.npy` files, each file contains a batch of 500 samples. `datai.npy` refers to the `i-th` sample of seismic data. To load data and check: ```bash import numpy as np # load seismic data seismic_data = np.load('data1.npy') print(seismic_data.shape) #(500,5,1000,70) # load velocity map velocity_map = np.load('model1.npy') print(velocity_map.shape) #(500,1,70,70) ``` ### Prepare training and testing set Note that there are many ways of organizing training and testing dataset, as long as it is compatible with the [DataLoader module](https://pytorch.org/docs/stable/data.html) in pytorch. Whichever way you choose, please refer to the following table for the train/test split. | Dataset | Train / test Split | Corresponding `.npy` files | | ----------- | ----------- | ------------ | | Vel Family | 24k / 6k | data(model)1-48.npy / data(model)49-60.npy | | Fault Family | 48k / 6k | data(model)1-96.npy / data(model)97-108.npy | | Style Family | 60k / 7k | data(model)1-120.npy / data(model)121-134.npy | A convenient way of loading the data is to use a `.txt` file containing the _location+filename_ of all `.npy` files, parse each line of the `.txt` file and push to the dataloader. Take **flatvel-A** as an exmaple, we create `flatvel-a-train.txt`, organized as the follows, and same for `flatvel-a-test.txt`. ```bash Dataset_directory/data1.npy Dataset_directory/data2.npy ... Dataset_directory/data48.npy ``` **To save time, you can download all the text files from the `splitting_files` folder and change to your own directory.** ## Reproduce the OpenFWI Benchmarks > For InversionNet and VelocityGAN, the current version supports training with a single GPU. For UPFWI and InversionNet3D, multiple-GPU is necessary due to the computation cost. ### Environment setup The following packages are required: - pytorch v1.7.1 - torchvision v0.8.2 - scikit learn - numpy - matplotlib (for visualization) If you other versions of pytorch and torchvision, please make sure they align. ### InversionNet To train from scratch on Flatvel-A dataset with $\ell_1$ loss, run the following codes: ``` python train.py -ds flatvel-a -n YOUR_DIRECTORY -m InversionNet -g2v 0 --tensorboard -t flatvel_a_train.txt -v flatvel_a_val.txt ``` `-ds` specifies the dataset, `-n` creates the folder containing the saved model other log files, `-g2v` sets the coefficient of $\ell_2$ loss to be zero, `-t` and `-v` assign the training data and test data loading files. To continue training from a saved checkpoint, run the following codes: ``` python train.py -ds flatvel-a -n YOUR_DIRECTORY -r CHECKPOINT.PTH -m InversionNet -g2v 0 --tensorboard -t flatvel_a_train.txt -v flatvel_a_val.txt ``` Please refer to the details of the codes if you would like to change other parameters (*learning rate,* etc.). These commands suffice to reproduce the OpenFWI benchmarks. The last step would be testing, where we include the visualization. Also we borrow the implementation of SSIM metric from [pytorch-ssim](https://github.com/Po-Hsun-Su/pytorch-ssim). Please make sure that `pytorch-ssim.py` and `rainbow256.npy` are placed together with others. ``` python test.py -ds flatvel-a -n YOUR_DIRECTORY -m InversionNet -v flatvel_a_val.txt -r CHECKPOINT.PTH --vis -vb 2 -vsa 3 ``` `--vis` enables the visualization and creates a folder with the figures, you may also change the amount of velocity maps by playing with `-vb` and `-vsa`. ### VelocityGAN The code logic of VelocityGAN is almost identical the that of InversionNet. To train from scratch on Flatvel-A dataset with $\ell_1$ loss, run the following codes: ``` python gan_train.py -ds flatvel-a -n YOUR_DIRECTORY -m InversionNet -g2v 0 --tensorboard -t flatvel_a_train.txt -v flatvel_a_val.txt ``` To continue training from a saved checkpoint, run the following codes: ``` python gan_train.py -ds flatvel-a -n YOUR_DIRECTORY -r CHECKPOINT.PTH -m InversionNet -g2v 0 --tensorboard -t flatvel_a_train.txt -v flatvel_a_val.txt ``` The command for testing is the same with InversionNet ## Future Updates - We will release the training configuration of Kimberlina-CO2 dataset very soon. - We will improve the instruction with illustrations and other necessary details - The codes of UPFWI and InversionNet3D is pending approval, they will be added to this repo once approved. ## References [1] Deng, Chengyuan, et al. "OpenFWI: Benchmark Seismic Datasets for Machine Learning-Based Full Waveform Inversion." arXiv preprint arXiv:2111.02926 (2021). [1] Wu, Yue, and Youzuo Lin. "InversionNet: An efficient and accurate data-driven full waveform inversion." IEEE Transactions on Computational Imaging 6 (2019): 419-433. [1] Zhang, Zhongping, and Youzuo Lin. "Data-driven seismic waveform inversion: A study on the robustness and generalization." IEEE Transactions on Geoscience and Remote sensing 58.10 (2020): 6900-6913. ================================================ FILE: dataset.py ================================================ # © 2022. Triad National Security, LLC. All rights reserved. # This program was produced under U.S. Government contract 89233218CNA000001 for Los Alamos # National Laboratory (LANL), which is operated by Triad National Security, LLC for the U.S. # Department of Energy/National Nuclear Security Administration. All rights in the program are # reserved by Triad National Security, LLC, and the U.S. Department of Energy/National Nuclear # Security Administration. The Government is granted for itself and others acting on its behalf a # nonexclusive, paid-up, irrevocable worldwide license in this material to reproduce, prepare # derivative works, distribute copies to the public, perform publicly and display publicly, and to permit # others to do so. import os import numpy as np from torch.utils.data import Dataset from torchvision.transforms import Compose import transforms as T class FWIDataset(Dataset): ''' FWI dataset For convenience, in this class, a batch refers to a npy file instead of the batch used during training. Args: anno: path to annotation file preload: whether to load the whole dataset into memory sample_ratio: downsample ratio for seismic data file_size: # of samples in each npy file transform_data|label: transformation applied to data or label ''' def __init__(self, anno, preload=True, sample_ratio=1, file_size=500, transform_data=None, transform_label=None): if not os.path.exists(anno): print(f'Annotation file {anno} does not exists') self.preload = preload self.sample_ratio = sample_ratio self.file_size = file_size self.transform_data = transform_data self.transform_label = transform_label with open(anno, 'r') as f: self.batches = f.readlines() if preload: self.data_list, self.label_list = [], [] for batch in self.batches: data, label = self.load_every(batch) self.data_list.append(data) if label is not None: self.label_list.append(label) # Load from one line def load_every(self, batch): batch = batch.split('\t') data_path = batch[0] if len(batch) > 1 else batch[0][:-1] data = np.load(data_path)[:, :, ::self.sample_ratio, :] data = data.astype('float32') if len(batch) > 1: label_path = batch[1][:-1] label = np.load(label_path) label = label.astype('float32') else: label = None return data, label def __getitem__(self, idx): batch_idx, sample_idx = idx // self.file_size, idx % self.file_size if self.preload: data = self.data_list[batch_idx][sample_idx] label = self.label_list[batch_idx][sample_idx] if len(self.label_list) != 0 else None else: data, label = self.load_every(self.batches[batch_idx]) data = data[sample_idx] label = label[sample_idx] if label is not None else None if self.transform_data: data = self.transform_data(data) if self.transform_label and label is not None: label = self.transform_label(label) return data, label if label is not None else np.array([]) def __len__(self): return len(self.batches) * self.file_size if __name__ == '__main__': transform_data = Compose([ T.LogTransform(k=1), T.MinMaxNormalize(T.log_transform(-61, k=1), T.log_transform(120, k=1)) ]) transform_label = Compose([ T.MinMaxNormalize(2000, 6000) ]) dataset = FWIDataset(f'relevant_files/temp.txt', transform_data=transform_data, transform_label=transform_label, file_size=1) data, label = dataset[0] print(data.shape) print(label is None) ================================================ FILE: dataset_config.json ================================================ { "flatvel-a": { "data_min": -26.95, "data_max": 52.77, "label_min": 1500, "label_max": 4500, "file_size": 500, "nbc": 120, "dx": 10, "nt": 1000, "dt": 1e-3, "f": 15, "n_grid": 70, "ns": 5, "ng": 70, "sz": 10, "gz": 10 }, "curvevel-a": { "data_min": -27.11, "data_max": 55.10, "label_min": 1500, "label_max": 4500, "file_size": 500, "nbc": 120, "dx": 10, "nt": 1000, "dt": 1e-3, "f": 15, "n_grid": 70, "ns": 5, "ng": 70, "sz": 10, "gz": 10 }, "flatvel-b": { "data_min": -27.17, "data_max": 56.05, "label_min": 1500, "label_max": 4500, "file_size": 500, "nbc": 120, "dx": 10, "nt": 1000, "dt": 1e-3, "f": 15, "n_grid": 70, "ns": 5, "ng": 70, "sz": 10, "gz": 10 }, "curvevel-b": { "data_min": -29.04, "data_max": 57.03, "label_min": 1500, "label_max": 4500, "file_size": 500, "nbc": 120, "dx": 10, "nt": 1000, "dt": 1e-3, "f": 15, "n_grid": 70, "ns": 5, "ng": 70, "sz": 10, "gz": 10 }, "flatfault-a": { "data_min": -26.10, "data_max": 50.86, "label_min": 1500, "label_max": 4500, "file_size": 500, "nbc": 120, "dx": 10, "nt": 1000, "dt": 1e-3, "f": 15, "n_grid": 70, "ns": 5, "ng": 70, "sz": 10, "gz": 10 }, "curvefault-a": { "data_min": -26.48, "data_max": 52.32, "label_min": 1500, "label_max": 4500, "file_size": 500, "nbc": 120, "dx": 10, "nt": 1000, "dt": 1e-3, "f": 15, "n_grid": 70, "ns": 5, "ng": 70, "sz": 10, "gz": 10 }, "flatfault-b": { "data_min": -24.86, "data_max": 50.28, "label_min": 1500, "label_max": 4500, "file_size": 500, "nbc": 120, "dx": 10, "nt": 1000, "dt": 1e-3, "f": 15, "n_grid": 70, "ns": 5, "ng": 70, "sz": 10, "gz": 10 }, "curvefault-b": { "data_min": -24.93, "data_max": 50.98, "label_min": 1500, "label_max": 4500, "file_size": 500, "nbc": 120, "dx": 10, "nt": 1000, "dt": 1e-3, "f": 15, "n_grid": 70, "ns": 5, "ng": 70, "sz": 10, "gz": 10 }, "style-a": { "data_min": -24.96, "data_max": 48.93, "label_min": 1500, "label_max": 4500, "file_size": 500, "nbc": 120, "dx": 10, "nt": 1000, "dt": 1e-3, "f": 15, "n_grid": 70, "ns": 5, "ng": 70, "sz": 10, "gz": 10 }, "style-b": { "data_min": -23.76, "data_max": 46.01, "label_min": 1500, "label_max": 4500, "file_size": 500, "nbc": 120, "dx": 10, "nt": 1000, "dt": 1e-3, "f": 15, "n_grid": 70, "ns": 5, "ng": 70, "sz": 10, "gz": 10 }, "flatvel-tutorial": { "data_min": -26.95, "data_max": 52.77, "label_min": 1500, "label_max": 4500, "file_size": 120, "nbc": 120, "dx": 10, "nt": 1000, "dt": 1e-3, "f": 15, "n_grid": 70, "ns": 5, "ng": 70, "sz": 10, "gz": 10 } } ================================================ FILE: gan_train.py ================================================ # © 2022. Triad National Security, LLC. All rights reserved. # This program was produced under U.S. Government contract 89233218CNA000001 for Los Alamos # National Laboratory (LANL), which is operated by Triad National Security, LLC for the U.S. # Department of Energy/National Nuclear Security Administration. All rights in the program are # reserved by Triad National Security, LLC, and the U.S. Department of Energy/National Nuclear # Security Administration. The Government is granted for itself and others acting on its behalf a # nonexclusive, paid-up, irrevocable worldwide license in this material to reproduce, prepare # derivative works, distribute copies to the public, perform publicly and display publicly, and to permit # others to do so. import os import sys import time import datetime import json import torch from torch import nn from torch.utils.data import RandomSampler, DataLoader from torch.utils.data.dataloader import default_collate from torch.utils.data.distributed import DistributedSampler from torch.utils.tensorboard import SummaryWriter import torchvision from torchvision.transforms import Compose import utils import network from dataset import FWIDataset from scheduler import WarmupMultiStepLR import transforms as T # Need to use parallel in apex, torch ddp can cause bugs when computing gradient penalty import apex.parallel as parallel step = 0 def train_one_epoch(model, model_d, criterion_g, criterion_d, optimizer_g, optimizer_d, lr_schedulers, dataloader, device, epoch, print_freq, writer, n_critic=5): global step model.train() model_d.train() # Logger setup metric_logger = utils.MetricLogger(delimiter=' ') metric_logger.add_meter('lr_g', utils.SmoothedValue(window_size=1, fmt='{value}')) metric_logger.add_meter('lr_d', utils.SmoothedValue(window_size=1, fmt='{value}')) metric_logger.add_meter('samples/s', utils.SmoothedValue(window_size=10, fmt='{value:.3f}')) header = 'Epoch: [{}]'.format(epoch) itr = 0 # step in this epoch max_itr = len(dataloader) for data, label in metric_logger.log_every(dataloader, print_freq, header): start_time = time.time() data, label = data.to(device), label.to(device) # Update discribminator first optimizer_d.zero_grad() with torch.no_grad(): pred = model(data) loss_d, loss_diff, loss_gp = criterion_d(label, pred, model_d) loss_d.backward() optimizer_d.step() metric_logger.update(loss_diff=loss_diff, loss_gp=loss_gp) # Update generator occasionally if ((itr + 1) % n_critic == 0) or (itr == max_itr - 1): optimizer_g.zero_grad() pred = model(data) loss_g, loss_g1v, loss_g2v = criterion_g(pred, label, model_d) loss_g.backward() optimizer_g.step() metric_logger.update(loss_g1v=loss_g1v, loss_g2v=loss_g2v) batch_size = data.shape[0] metric_logger.update(lr_g=optimizer_g.param_groups[0]['lr'], lr_d=optimizer_d.param_groups[0]['lr']) metric_logger.meters['samples/s'].update(batch_size / (time.time() - start_time)) if writer: writer.add_scalar('loss_diff', loss_diff, step) writer.add_scalar('loss_gp', loss_gp, step) if ((itr + 1) % n_critic == 0) or (itr == max_itr - 1): writer.add_scalar('loss_g1v', loss_g1v, step) writer.add_scalar('loss_g2v', loss_g2v, step) step += 1 itr += 1 for lr_scheduler in lr_schedulers: lr_scheduler.step() def evaluate(model, criterion, dataloader, device, writer): model.eval() metric_logger = utils.MetricLogger(delimiter=' ') header = 'Test:' with torch.no_grad(): for data, label in metric_logger.log_every(dataloader, 20, header): data = data.to(device, non_blocking=True) label = label.to(device, non_blocking=True) pred = model(data) loss, loss_g1v, loss_g2v = criterion(pred, label) metric_logger.update(loss=loss.item(), loss_g1v=loss_g1v.item(), loss_g2v=loss_g2v.item()) # Gather the stats from all processes metric_logger.synchronize_between_processes() print(' * Loss {loss.global_avg:.8f}\n'.format(loss=metric_logger.loss)) if writer: writer.add_scalar('loss', metric_logger.loss.global_avg, step) writer.add_scalar('loss_g1v', metric_logger.loss_g1v.global_avg, step) writer.add_scalar('loss_g2v', metric_logger.loss_g2v.global_avg, step) return metric_logger.loss.global_avg def main(args): global step print(args) print('torch version: ', torch.__version__) print('torchvision version: ', torchvision.__version__) utils.mkdir(args.output_path) # create folder to store checkpoints utils.init_distributed_mode(args) # distributed mode initialization # Set up tensorboard summary writer train_writer, val_writer = None, None if args.tensorboard: utils.mkdir(args.log_path) # create folder to store tensorboard logs if not args.distributed or (args.rank == 0) and (args.local_rank == 0): train_writer = SummaryWriter(os.path.join(args.output_path, 'logs', 'train')) val_writer = SummaryWriter(os.path.join(args.output_path, 'logs', 'val')) device = torch.device(args.device) torch.backends.cudnn.benchmark = True with open('dataset_config.json') as f: try: ctx = json.load(f)[args.dataset] except KeyError: print('Unsupported dataset.') sys.exit() if args.file_size is not None: ctx['file_size'] = args.file_size # Create dataset and dataloader print('Loading data') print('Loading training data') log_data_min = T.log_transform(ctx['data_min'], k=args.k) log_data_max = T.log_transform(ctx['data_max'], k=args.k) transform_data = Compose([ T.LogTransform(k=args.k), T.MinMaxNormalize(log_data_min, log_data_max) ]) transform_label = Compose([ T.MinMaxNormalize(ctx['label_min'], ctx['label_max']) ]) if args.train_anno[-3:] == 'txt': dataset_train = FWIDataset( args.train_anno, preload=True, sample_ratio=args.sample_temporal, file_size=ctx['file_size'], transform_data=transform_data, transform_label=transform_label ) else: dataset_train = torch.load(args.train_anno) print('Loading validation data') if args.val_anno[-3:] == 'txt': dataset_valid = FWIDataset( args.val_anno, preload=True, sample_ratio=args.sample_temporal, file_size=ctx['file_size'], transform_data=transform_data, transform_label=transform_label ) else: dataset_valid = torch.load(args.val_anno) print('Creating data loaders') if args.distributed: train_sampler = DistributedSampler(dataset_train, shuffle=True) valid_sampler = DistributedSampler(dataset_valid, shuffle=True) else: train_sampler = RandomSampler(dataset_train) valid_sampler = RandomSampler(dataset_valid) dataloader_train = DataLoader( dataset_train, batch_size=args.batch_size, sampler=train_sampler, num_workers=args.workers, pin_memory=True, drop_last=True, collate_fn=default_collate) dataloader_valid = DataLoader( dataset_valid, batch_size=args.batch_size, sampler=valid_sampler, num_workers=args.workers, pin_memory=True, collate_fn=default_collate) print('Creating model') if args.model not in network.model_dict or args.model_d not in network.model_dict: print('Unsupported model.') sys.exit() model = network.model_dict[args.model](upsample_mode=args.up_mode, sample_spatial=args.sample_spatial, sample_temporal=args.sample_temporal).to(device) model_d = network.model_dict[args.model_d]().to(device) if args.distributed and args.sync_bn: model = parallel.convert_syncbn_model(model) model_d = parallel.convert_syncbn_model(model_d) # Define loss function l1loss = nn.L1Loss() l2loss = nn.MSELoss() def criterion_g(pred, gt, model_d=None): loss_g1v = l1loss(pred, gt) loss_g2v = l2loss(pred, gt) loss = args.lambda_g1v * loss_g1v + args.lambda_g2v * loss_g2v if model_d is not None: loss_adv = -torch.mean(model_d(pred)) loss += args.lambda_adv * loss_adv return loss, loss_g1v, loss_g2v criterion_d = utils.Wasserstein_GP(device, args.lambda_gp) # Scale lr according to effective batch size lr_g = args.lr_g * args.world_size lr_d = args.lr_d * args.world_size optimizer_g = torch.optim.AdamW(model.parameters(), lr=lr_g, betas=(0, 0.9), weight_decay=args.weight_decay) optimizer_d = torch.optim.AdamW(model_d.parameters(), lr=lr_d, betas=(0, 0.9), weight_decay=args.weight_decay) # Convert scheduler to be per iteration instead of per epoch warmup_iters = args.lr_warmup_epochs * len(dataloader_train) lr_milestones = [len(dataloader_train) * m for m in args.lr_milestones] lr_schedulers = [WarmupMultiStepLR( optimizer, milestones=lr_milestones, gamma=args.lr_gamma, warmup_iters=warmup_iters, warmup_factor=1e-5) for optimizer in [optimizer_g, optimizer_d]] model_without_ddp = model model_d_without_ddp = model_d if args.distributed: model = parallel.DistributedDataParallel(model) model_d = parallel.DistributedDataParallel(model_d) model_without_ddp = model.module model_d_without_ddp = model_d.module if args.resume: checkpoint = torch.load(args.resume, map_location='cpu') model_without_ddp.load_state_dict(network.replace_legacy(checkpoint['model'])) model_d_without_ddp.load_state_dict(network.replace_legacy(checkpoint['model_d'])) optimizer_g.load_state_dict(checkpoint['optimizer_g']) optimizer_d.load_state_dict(checkpoint['optimizer_d']) args.start_epoch = checkpoint['epoch'] + 1 step = checkpoint['step'] for i in range(len(lr_schedulers)): lr_schedulers[i].load_state_dict(checkpoint['lr_schedulers'][i]) for lr_scheduler in lr_schedulers: lr_scheduler.milestones = lr_milestones print('Start training') start_time = time.time() for epoch in range(args.start_epoch, args.epochs): if args.distributed: train_sampler.set_epoch(epoch) train_one_epoch(model, model_d, criterion_g, criterion_d, optimizer_g, optimizer_d, lr_schedulers, dataloader_train, device, epoch, args.print_freq, train_writer, args.n_critic) evaluate(model, criterion_g, dataloader_valid, device, val_writer) checkpoint = { 'model': model_without_ddp.state_dict(), 'model_d': model_d_without_ddp.state_dict(), 'optimizer_g': optimizer_g.state_dict(), 'optimizer_d': optimizer_d.state_dict(), 'lr_schedulers': [scheduler.state_dict() for scheduler in lr_schedulers], 'epoch': epoch, 'step': step, 'args': args} # Save checkpoint per epoch utils.save_on_master( checkpoint, os.path.join(args.output_path, 'checkpoint.pth')) # Save checkpoint every epoch block if args.output_path and (epoch + 1) % args.epoch_block == 0: utils.save_on_master( checkpoint, os.path.join(args.output_path, 'model_{}.pth'.format(epoch + 1))) total_time = time.time() - start_time total_time_str = str(datetime.timedelta(seconds=int(total_time))) print('Training time {}'.format(total_time_str)) def parse_args(): import argparse parser = argparse.ArgumentParser(description='GAN Training') parser.add_argument('-d', '--device', default='cuda', help='device') parser.add_argument('-ds', '--dataset', default='flat', type=str, help='dataset name') parser.add_argument('-fs', '--file-size', default=None, type=str, help='number of samples in each npy file') # Path related parser.add_argument('-ap', '--anno-path', default='/vast/home/aicyd/Desktop/OpenFWI/src/', help='annotation files location') parser.add_argument('-t', '--train-anno', default='train_flatvel.json', help='name of train anno') parser.add_argument('-v', '--val-anno', default='val_flatvel.json', help='name of val anno') parser.add_argument('-o', '--output-path', default='models', help='path to parent folder to save checkpoints') parser.add_argument('-l', '--log-path', default='models', help='path to parent folder to save logs') parser.add_argument('-n', '--save-name', default='gan', help='folder name for this experiment') parser.add_argument('-s', '--suffix', type=str, default=None, help='subfolder name for this run') # Model related parser.add_argument('-m', '--model', type=str, help='generator name') parser.add_argument('-md', '--model-d', default='Discriminator', help='discriminator name') parser.add_argument('-um', '--up-mode', default=None, help='upsampling layer mode such as "nearest", "bicubic", etc.') parser.add_argument('-ss', '--sample-spatial', type=float, default=1.0, help='spatial sampling ratio') parser.add_argument('-st', '--sample-temporal', type=int, default=1, help='temporal sampling ratio') # Training related parser.add_argument('-nc', '--n_critic', default=5, type=int, help='generator & discriminator update ratio') parser.add_argument('-b', '--batch-size', default=64, type=int) parser.add_argument('--lr_g', default=0.0001, type=float, help='initial learning rate of generator') parser.add_argument('--lr_d', default=0.0001, type=float, help='initial learning rate of discriminator') parser.add_argument('-lm', '--lr-milestones', nargs='+', default=[], type=int, help='decrease lr on milestones') parser.add_argument('--momentum', default=0.9, type=float, help='momentum') parser.add_argument('--weight-decay', default=1e-4 , type=float, help='weight decay (default: 1e-4)') parser.add_argument('--lr-gamma', default=0.1, type=float, help='decrease lr by a factor of lr-gamma') parser.add_argument('--lr-warmup-epochs', default=0, type=int, help='number of warmup epochs') parser.add_argument('-eb', '--epoch_block', type=int, default=20, help='epochs in a saved block') parser.add_argument('-nb', '--num_block', type=int, default=25, help='number of saved block') parser.add_argument('-j', '--workers', default=16, type=int, help='number of data loading workers (default: 16)') parser.add_argument('--k', default=1, type=float, help='k in log transformation') parser.add_argument('--print-freq', default=20, type=int, help='print frequency') parser.add_argument('-r', '--resume', default=None, help='resume from checkpoint') parser.add_argument('--start-epoch', default=0, type=int, help='start epoch') # Loss related parser.add_argument('-g1v', '--lambda_g1v', type=float, default=100.0) parser.add_argument('-g2v', '--lambda_g2v', type=float, default=100.0) parser.add_argument('-adv', '--lambda_adv', type=float, default=1.0) parser.add_argument('-gp', '--lambda_gp', type=float, default=10.0) # Distributed training related parser.add_argument('--sync-bn', action='store_true', help='Use sync batch norm') parser.add_argument('--world-size', default=1, type=int, help='number of distributed processes') parser.add_argument('--dist-url', default='env://', help='url used to set up distributed training') # Tensorboard related parser.add_argument('--tensorboard', action='store_true', help='Use tensorboard for logging.') args = parser.parse_args() args.output_path = os.path.join(args.output_path, args.save_name, args.suffix or '') args.log_path = os.path.join(args.log_path, args.save_name, args.suffix or '') args.train_anno = os.path.join(args.anno_path, args.train_anno) args.val_anno = os.path.join(args.anno_path, args.val_anno) args.epochs = args.epoch_block * args.num_block if args.resume: args.resume = os.path.join(args.output_path, args.resume) return args if __name__ == '__main__': args = parse_args() main(args) ================================================ FILE: network.py ================================================ # © 2022. Triad National Security, LLC. All rights reserved. # This program was produced under U.S. Government contract 89233218CNA000001 for Los Alamos # National Laboratory (LANL), which is operated by Triad National Security, LLC for the U.S. # Department of Energy/National Nuclear Security Administration. All rights in the program are # reserved by Triad National Security, LLC, and the U.S. Department of Energy/National Nuclear # Security Administration. The Government is granted for itself and others acting on its behalf a # nonexclusive, paid-up, irrevocable worldwide license in this material to reproduce, prepare # derivative works, distribute copies to the public, perform publicly and display publicly, and to permit # others to do so. import torch import torch.nn as nn import torch.nn.functional as F from math import ceil from collections import OrderedDict NORM_LAYERS = { 'bn': nn.BatchNorm2d, 'in': nn.InstanceNorm2d, 'ln': nn.LayerNorm } # Replace the key names in the checkpoint in which legacy network building blocks are used def replace_legacy(old_dict): li = [] for k, v in old_dict.items(): k = (k.replace('Conv2DwithBN', 'layers') .replace('Conv2DwithBN_Tanh', 'layers') .replace('Deconv2DwithBN', 'layers') .replace('ResizeConv2DwithBN', 'layers')) li.append((k, v)) return OrderedDict(li) class Conv2DwithBN(nn.Module): def __init__(self, in_fea, out_fea, kernel_size=3, stride=1, padding=1, bn=True, relu_slop=0.2, dropout=None): super(Conv2DwithBN,self).__init__() layers = [nn.Conv2d(in_channels=in_fea, out_channels=out_fea, kernel_size=kernel_size, stride=stride, padding=padding)] if bn: layers.append(nn.BatchNorm2d(num_features=out_fea)) layers.append(nn.LeakyReLU(relu_slop, inplace=True)) if dropout: layers.append(nn.Dropout2d(0.8)) self.Conv2DwithBN = nn.Sequential(*layers) def forward(self, x): return self.Conv2DwithBN(x) class ResizeConv2DwithBN(nn.Module): def __init__(self, in_fea, out_fea, scale_factor=2, mode='nearest'): super(ResizeConv2DwithBN, self).__init__() layers = [nn.Upsample(scale_factor=scale_factor, mode=mode)] layers.append(nn.Conv2d(in_channels=in_fea, out_channels=out_fea, kernel_size=3, stride=1, padding=1)) layers.append(nn.BatchNorm2d(num_features=out_fea)) layers.append(nn.LeakyReLU(0.2, inplace=True)) self.ResizeConv2DwithBN = nn.Sequential(*layers) def forward(self, x): return self.ResizeConv2DwithBN(x) class Conv2DwithBN_Tanh(nn.Module): def __init__(self, in_fea, out_fea, kernel_size=3, stride=1, padding=1): super(Conv2DwithBN_Tanh, self).__init__() layers = [nn.Conv2d(in_channels=in_fea, out_channels=out_fea, kernel_size=kernel_size, stride=stride, padding=padding)] layers.append(nn.BatchNorm2d(num_features=out_fea)) layers.append(nn.Tanh()) self.Conv2DwithBN = nn.Sequential(*layers) def forward(self, x): return self.Conv2DwithBN(x) class ConvBlock(nn.Module): def __init__(self, in_fea, out_fea, kernel_size=3, stride=1, padding=1, norm='bn', relu_slop=0.2, dropout=None): super(ConvBlock,self).__init__() layers = [nn.Conv2d(in_channels=in_fea, out_channels=out_fea, kernel_size=kernel_size, stride=stride, padding=padding)] if norm in NORM_LAYERS: layers.append(NORM_LAYERS[norm](out_fea)) layers.append(nn.LeakyReLU(relu_slop, inplace=True)) if dropout: layers.append(nn.Dropout2d(0.8)) self.layers = nn.Sequential(*layers) def forward(self, x): return self.layers(x) class ConvBlock_Tanh(nn.Module): def __init__(self, in_fea, out_fea, kernel_size=3, stride=1, padding=1, norm='bn'): super(ConvBlock_Tanh, self).__init__() layers = [nn.Conv2d(in_channels=in_fea, out_channels=out_fea, kernel_size=kernel_size, stride=stride, padding=padding)] if norm in NORM_LAYERS: layers.append(NORM_LAYERS[norm](out_fea)) layers.append(nn.Tanh()) self.layers = nn.Sequential(*layers) def forward(self, x): return self.layers(x) class DeconvBlock(nn.Module): def __init__(self, in_fea, out_fea, kernel_size=2, stride=2, padding=0, output_padding=0, norm='bn'): super(DeconvBlock, self).__init__() layers = [nn.ConvTranspose2d(in_channels=in_fea, out_channels=out_fea, kernel_size=kernel_size, stride=stride, padding=padding, output_padding=output_padding)] if norm in NORM_LAYERS: layers.append(NORM_LAYERS[norm](out_fea)) layers.append(nn.LeakyReLU(0.2, inplace=True)) self.layers = nn.Sequential(*layers) def forward(self, x): return self.layers(x) class ResizeBlock(nn.Module): def __init__(self, in_fea, out_fea, scale_factor=2, mode='nearest', norm='bn'): super(ResizeBlock, self).__init__() layers = [nn.Upsample(scale_factor=scale_factor, mode=mode)] layers.append(nn.Conv2d(in_channels=in_fea, out_channels=out_fea, kernel_size=3, stride=1, padding=1)) if norm in NORM_LAYERS: layers.append(NORM_LAYERS[norm](out_fea)) layers.append(nn.LeakyReLU(0.2, inplace=True)) self.layers = nn.Sequential(*layers) def forward(self, x): return self.layers(x) # FlatFault/CurveFault # 1000, 70 -> 70, 70 class InversionNet(nn.Module): def __init__(self, dim1=32, dim2=64, dim3=128, dim4=256, dim5=512, sample_spatial=1.0, **kwargs): super(InversionNet, self).__init__() self.convblock1 = ConvBlock(5, dim1, kernel_size=(7, 1), stride=(2, 1), padding=(3, 0)) self.convblock2_1 = ConvBlock(dim1, dim2, kernel_size=(3, 1), stride=(2, 1), padding=(1, 0)) self.convblock2_2 = ConvBlock(dim2, dim2, kernel_size=(3, 1), padding=(1, 0)) self.convblock3_1 = ConvBlock(dim2, dim2, kernel_size=(3, 1), stride=(2, 1), padding=(1, 0)) self.convblock3_2 = ConvBlock(dim2, dim2, kernel_size=(3, 1), padding=(1, 0)) self.convblock4_1 = ConvBlock(dim2, dim3, kernel_size=(3, 1), stride=(2, 1), padding=(1, 0)) self.convblock4_2 = ConvBlock(dim3, dim3, kernel_size=(3, 1), padding=(1, 0)) self.convblock5_1 = ConvBlock(dim3, dim3, stride=2) self.convblock5_2 = ConvBlock(dim3, dim3) self.convblock6_1 = ConvBlock(dim3, dim4, stride=2) self.convblock6_2 = ConvBlock(dim4, dim4) self.convblock7_1 = ConvBlock(dim4, dim4, stride=2) self.convblock7_2 = ConvBlock(dim4, dim4) self.convblock8 = ConvBlock(dim4, dim5, kernel_size=(8, ceil(70 * sample_spatial / 8)), padding=0) self.deconv1_1 = DeconvBlock(dim5, dim5, kernel_size=5) self.deconv1_2 = ConvBlock(dim5, dim5) self.deconv2_1 = DeconvBlock(dim5, dim4, kernel_size=4, stride=2, padding=1) self.deconv2_2 = ConvBlock(dim4, dim4) self.deconv3_1 = DeconvBlock(dim4, dim3, kernel_size=4, stride=2, padding=1) self.deconv3_2 = ConvBlock(dim3, dim3) self.deconv4_1 = DeconvBlock(dim3, dim2, kernel_size=4, stride=2, padding=1) self.deconv4_2 = ConvBlock(dim2, dim2) self.deconv5_1 = DeconvBlock(dim2, dim1, kernel_size=4, stride=2, padding=1) self.deconv5_2 = ConvBlock(dim1, dim1) self.deconv6 = ConvBlock_Tanh(dim1, 1) def forward(self,x): # Encoder Part x = self.convblock1(x) # (None, 32, 500, 70) x = self.convblock2_1(x) # (None, 64, 250, 70) x = self.convblock2_2(x) # (None, 64, 250, 70) x = self.convblock3_1(x) # (None, 64, 125, 70) x = self.convblock3_2(x) # (None, 64, 125, 70) x = self.convblock4_1(x) # (None, 128, 63, 70) x = self.convblock4_2(x) # (None, 128, 63, 70) x = self.convblock5_1(x) # (None, 128, 32, 35) x = self.convblock5_2(x) # (None, 128, 32, 35) x = self.convblock6_1(x) # (None, 256, 16, 18) x = self.convblock6_2(x) # (None, 256, 16, 18) x = self.convblock7_1(x) # (None, 256, 8, 9) x = self.convblock7_2(x) # (None, 256, 8, 9) x = self.convblock8(x) # (None, 512, 1, 1) # Decoder Part x = self.deconv1_1(x) # (None, 512, 5, 5) x = self.deconv1_2(x) # (None, 512, 5, 5) x = self.deconv2_1(x) # (None, 256, 10, 10) x = self.deconv2_2(x) # (None, 256, 10, 10) x = self.deconv3_1(x) # (None, 128, 20, 20) x = self.deconv3_2(x) # (None, 128, 20, 20) x = self.deconv4_1(x) # (None, 64, 40, 40) x = self.deconv4_2(x) # (None, 64, 40, 40) x = self.deconv5_1(x) # (None, 32, 80, 80) x = self.deconv5_2(x) # (None, 32, 80, 80) x = F.pad(x, [-5, -5, -5, -5], mode="constant", value=0) # (None, 32, 70, 70) 125, 100 x = self.deconv6(x) # (None, 1, 70, 70) return x class FCN4_Deep_Resize_2(nn.Module): def __init__(self, dim1=32, dim2=64, dim3=128, dim4=256, dim5=512, ratio=1.0, upsample_mode='nearest'): super(FCN4_Deep_Resize_2, self).__init__() self.convblock1 = Conv2DwithBN(5, dim1, kernel_size=(7, 1), stride=(2, 1), padding=(3, 0)) self.convblock2_1 = Conv2DwithBN(dim1, dim2, kernel_size=(3, 1), stride=(2, 1), padding=(1, 0)) self.convblock2_2 = Conv2DwithBN(dim2, dim2, kernel_size=(3, 1), padding=(1, 0)) self.convblock3_1 = Conv2DwithBN(dim2, dim2, kernel_size=(3, 1), stride=(2, 1), padding=(1, 0)) self.convblock3_2 = Conv2DwithBN(dim2, dim2, kernel_size=(3, 1), padding=(1, 0)) self.convblock4_1 = Conv2DwithBN(dim2, dim3, kernel_size=(3, 1), stride=(2, 1), padding=(1, 0)) self.convblock4_2 = Conv2DwithBN(dim3, dim3, kernel_size=(3, 1), padding=(1, 0)) self.convblock5_1 = Conv2DwithBN(dim3, dim3, stride=2) self.convblock5_2 = Conv2DwithBN(dim3, dim3) self.convblock6_1 = Conv2DwithBN(dim3, dim4, stride=2) self.convblock6_2 = Conv2DwithBN(dim4, dim4) self.convblock7_1 = Conv2DwithBN(dim4, dim4, stride=2) self.convblock7_2 = Conv2DwithBN(dim4, dim4) self.convblock8 = Conv2DwithBN(dim4, dim5, kernel_size=(8, ceil(70 * ratio / 8)), padding=0) self.deconv1_1 = ResizeConv2DwithBN(dim5, dim5, scale_factor=5, mode=upsample_mode) self.deconv1_2 = Conv2DwithBN(dim5, dim5) self.deconv2_1 = ResizeConv2DwithBN(dim5, dim4, scale_factor=2, mode=upsample_mode) self.deconv2_2 = Conv2DwithBN(dim4, dim4) self.deconv3_1 = ResizeConv2DwithBN(dim4, dim3, scale_factor=2, mode=upsample_mode) self.deconv3_2 = Conv2DwithBN(dim3, dim3) self.deconv4_1 = ResizeConv2DwithBN(dim3, dim2, scale_factor=2, mode=upsample_mode) self.deconv4_2 = Conv2DwithBN(dim2, dim2) self.deconv5_1 = ResizeConv2DwithBN(dim2, dim1, scale_factor=2, mode=upsample_mode) self.deconv5_2 = Conv2DwithBN(dim1, dim1) self.deconv6 = Conv2DwithBN_Tanh(dim1, 1) def forward(self,x): # Encoder Part x = self.convblock1(x) # (None, 32, 500, 70) x = self.convblock2_1(x) # (None, 64, 250, 70) x = self.convblock2_2(x) # (None, 64, 250, 70) x = self.convblock3_1(x) # (None, 64, 125, 70) x = self.convblock3_2(x) # (None, 64, 125, 70) x = self.convblock4_1(x) # (None, 128, 63, 70) x = self.convblock4_2(x) # (None, 128, 63, 70) x = self.convblock5_1(x) # (None, 128, 32, 35) x = self.convblock5_2(x) # (None, 128, 32, 35) x = self.convblock6_1(x) # (None, 256, 16, 18) x = self.convblock6_2(x) # (None, 256, 16, 18) x = self.convblock7_1(x) # (None, 256, 8, 9) x = self.convblock7_2(x) # (None, 256, 8, 9) x = self.convblock8(x) # (None, 512, 1, 1) # Decoder Part x = self.deconv1_1(x) # (None, 512, 5, 5) x = self.deconv1_2(x) # (None, 512, 5, 5) x = self.deconv2_1(x) # (None, 256, 10, 10) x = self.deconv2_2(x) # (None, 256, 10, 10) x = self.deconv3_1(x) # (None, 128, 20, 20) x = self.deconv3_2(x) # (None, 128, 20, 20) x = self.deconv4_1(x) # (None, 64, 40, 40) x = self.deconv4_2(x) # (None, 64, 40, 40) x = self.deconv5_1(x) # (None, 32, 80, 80) x = self.deconv5_2(x) # (None, 32, 80, 80) x = F.pad(x, [-5, -5, -5, -5], mode="constant", value=0) # (None, 32, 70, 70) x = self.deconv6(x) # (None, 1, 70, 70) return x class Discriminator(nn.Module): def __init__(self, dim1=32, dim2=64, dim3=128, dim4=256, **kwargs): super(Discriminator, self).__init__() self.convblock1_1 = ConvBlock(1, dim1, stride=2) self.convblock1_2 = ConvBlock(dim1, dim1) self.convblock2_1 = ConvBlock(dim1, dim2, stride=2) self.convblock2_2 = ConvBlock(dim2, dim2) self.convblock3_1 = ConvBlock(dim2, dim3, stride=2) self.convblock3_2 = ConvBlock(dim3, dim3) self.convblock4_1 = ConvBlock(dim3, dim4, stride=2) self.convblock4_2 = ConvBlock(dim4, dim4) self.convblock5 = ConvBlock(dim4, 1, kernel_size=5, padding=0) def forward(self, x): x = self.convblock1_1(x) x = self.convblock1_2(x) x = self.convblock2_1(x) x = self.convblock2_2(x) x = self.convblock3_1(x) x = self.convblock3_2(x) x = self.convblock4_1(x) x = self.convblock4_2(x) x = self.convblock5(x) x = x.view(x.shape[0], -1) return x class Conv_HPGNN(nn.Module): def __init__(self, in_fea, out_fea, kernel_size=None, stride=None, padding=None, **kwargs): super(Conv_HPGNN, self).__init__() layers = [ ConvBlock(in_fea, out_fea, relu_slop=0.1, dropout=0.8), ConvBlock(out_fea, out_fea, relu_slop=0.1, dropout=0.8), ] if kernel_size is not None: layers.append(nn.MaxPool2d(kernel_size=kernel_size, stride=stride, padding=padding)) self.layers = nn.Sequential(*layers) def forward(self, x): return self.layers(x) class Deconv_HPGNN(nn.Module): def __init__(self, in_fea, out_fea, kernel_size, **kwargs): super(Deconv_HPGNN, self).__init__() layers = [ nn.ConvTranspose2d(in_fea, in_fea, kernel_size=kernel_size, stride=2, padding=0), ConvBlock(in_fea, out_fea, relu_slop=0.1, dropout=0.8), ConvBlock(out_fea, out_fea, relu_slop=0.1, dropout=0.8) ] self.layers = nn.Sequential(*layers) def forward(self, x): return self.layers(x) model_dict = { 'InversionNet': InversionNet, 'Discriminator': Discriminator, 'UPFWI': FCN4_Deep_Resize_2 } ================================================ FILE: pytorch_ssim.py ================================================ # From https://github.com/Po-Hsun-Su/pytorch-ssim/blob/master/pytorch_ssim/__init__.py import torch import torch.nn.functional as F from torch.autograd import Variable import numpy as np from math import exp def gaussian(window_size, sigma): gauss = torch.Tensor([exp(-(x - window_size//2)**2/float(2*sigma**2)) for x in range(window_size)]) return gauss/gauss.sum() def create_window(window_size, channel): _1D_window = gaussian(window_size, 1.5).unsqueeze(1) _2D_window = _1D_window.mm(_1D_window.t()).float().unsqueeze(0).unsqueeze(0) window = Variable(_2D_window.expand(channel, 1, window_size, window_size).contiguous()) return window def _ssim(img1, img2, window, window_size, channel, size_average = True): mu1 = F.conv2d(img1, window, padding = window_size//2, groups = channel) mu2 = F.conv2d(img2, window, padding = window_size//2, groups = channel) mu1_sq = mu1.pow(2) mu2_sq = mu2.pow(2) mu1_mu2 = mu1*mu2 sigma1_sq = F.conv2d(img1*img1, window, padding = window_size//2, groups = channel) - mu1_sq sigma2_sq = F.conv2d(img2*img2, window, padding = window_size//2, groups = channel) - mu2_sq sigma12 = F.conv2d(img1*img2, window, padding = window_size//2, groups = channel) - mu1_mu2 C1 = 0.01**2 C2 = 0.03**2 ssim_map = ((2*mu1_mu2 + C1)*(2*sigma12 + C2))/((mu1_sq + mu2_sq + C1)*(sigma1_sq + sigma2_sq + C2)) if size_average: return ssim_map.mean() else: return ssim_map.mean(1).mean(1).mean(1) class SSIM(torch.nn.Module): def __init__(self, window_size = 11, size_average = True): super(SSIM, self).__init__() self.window_size = window_size self.size_average = size_average self.channel = 1 self.window = create_window(window_size, self.channel) def forward(self, img1, img2): (_, channel, _, _) = img1.size() if channel == self.channel and self.window.data.type() == img1.data.type(): window = self.window else: window = create_window(self.window_size, channel) if img1.is_cuda: window = window.cuda(img1.get_device()) window = window.type_as(img1) self.window = window self.channel = channel return _ssim(img1, img2, window, self.window_size, channel, self.size_average) def ssim(img1, img2, window_size = 11, size_average = True): (_, channel, _, _) = img1.size() window = create_window(window_size, channel) if img1.is_cuda: window = window.cuda(img1.get_device()) window = window.type_as(img1) return _ssim(img1, img2, window, window_size, channel, size_average) ================================================ FILE: scheduler.py ================================================ # © 2022. Triad National Security, LLC. All rights reserved. # This program was produced under U.S. Government contract 89233218CNA000001 for Los Alamos # National Laboratory (LANL), which is operated by Triad National Security, LLC for the U.S. # Department of Energy/National Nuclear Security Administration. All rights in the program are # reserved by Triad National Security, LLC, and the U.S. Department of Energy/National Nuclear # Security Administration. The Government is granted for itself and others acting on its behalf a # nonexclusive, paid-up, irrevocable worldwide license in this material to reproduce, prepare # derivative works, distribute copies to the public, perform publicly and display publicly, and to permit # others to do so. import torch from bisect import bisect_right # Scheduler adopted from the original repo class WarmupMultiStepLR(torch.optim.lr_scheduler._LRScheduler): def __init__( self, optimizer, milestones, gamma=0.1, warmup_factor=1.0 / 3, warmup_iters=5, warmup_method="linear", last_epoch=-1, ): if not milestones == sorted(milestones): raise ValueError( "Milestones should be a list of" " increasing integers. Got {}", milestones, ) if warmup_method not in ("constant", "linear"): raise ValueError( "Only 'constant' or 'linear' warmup_method accepted" "got {}".format(warmup_method) ) self.milestones = milestones self.gamma = gamma self.warmup_factor = warmup_factor self.warmup_iters = warmup_iters self.warmup_method = warmup_method super(WarmupMultiStepLR, self).__init__(optimizer, last_epoch) def get_lr(self): warmup_factor = 1 if self.last_epoch < self.warmup_iters: if self.warmup_method == "constant": warmup_factor = self.warmup_factor elif self.warmup_method == "linear": alpha = float(self.last_epoch) / self.warmup_iters warmup_factor = self.warmup_factor * (1 - alpha) + alpha return [ base_lr * warmup_factor * self.gamma ** bisect_right(self.milestones, self.last_epoch) for base_lr in self.base_lrs ] ================================================ FILE: split_files/curvefault_a_train.txt ================================================ /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_0.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_0.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_1.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_1.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_2.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_2.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_3.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_3.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_4.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_4.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_5.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_5.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_6.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_6.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_7.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_7.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_8.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_8.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_9.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_9.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_10.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_10.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_11.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_11.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_12.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_12.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_13.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_13.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_14.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_14.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_15.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_15.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_16.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_16.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_17.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_17.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_18.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_18.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_19.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_19.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_20.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_20.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_21.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_21.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_22.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_22.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_23.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_23.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_24.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_24.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_25.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_25.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_26.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_26.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_27.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_27.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_28.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_28.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_29.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_29.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_30.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_30.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_31.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_31.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_0.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_0.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_1.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_1.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_2.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_2.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_3.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_3.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_4.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_4.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_5.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_5.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_6.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_6.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_7.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_7.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_8.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_8.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_9.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_9.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_10.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_10.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_11.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_11.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_12.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_12.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_13.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_13.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_14.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_14.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_15.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_15.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_16.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_16.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_17.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_17.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_18.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_18.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_19.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_19.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_20.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_20.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_21.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_21.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_22.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_22.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_23.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_23.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_24.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_24.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_25.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_25.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_26.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_26.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_27.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_27.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_28.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_28.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_29.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_29.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_30.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_30.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_31.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_31.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_0.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_0.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_1.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_1.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_2.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_2.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_3.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_3.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_4.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_4.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_5.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_5.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_6.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_6.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_7.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_7.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_8.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_8.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_9.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_9.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_10.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_10.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_11.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_11.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_12.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_12.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_13.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_13.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_14.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_14.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_15.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_15.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_16.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_16.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_17.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_17.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_18.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_18.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_19.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_19.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_20.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_20.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_21.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_21.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_22.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_22.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_23.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_23.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_24.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_24.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_25.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_25.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_26.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_26.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_27.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_27.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_28.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_28.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_29.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_29.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_30.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_30.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_31.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_31.npy ================================================ FILE: split_files/curvefault_a_val.txt ================================================ /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_32.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_32.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_33.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_33.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_34.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_34.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis2_1_35.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel2_1_35.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_32.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_32.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_33.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_33.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_34.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_34.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis3_1_35.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel3_1_35.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_32.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_32.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_33.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_33.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_34.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_34.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/seis4_1_35.npy /projects/piml_inversion/FWIOpenData/CurveFault_A/vel4_1_35.npy ================================================ FILE: split_files/curvefault_b_train.txt ================================================ /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_0.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_0.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_1.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_1.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_2.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_2.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_3.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_3.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_4.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_4.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_5.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_5.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_6.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_6.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_7.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_7.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_8.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_8.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_9.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_9.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_10.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_10.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_11.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_11.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_12.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_12.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_13.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_13.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_14.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_14.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_15.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_15.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_16.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_16.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_17.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_17.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_18.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_18.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_19.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_19.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_20.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_20.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_21.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_21.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_22.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_22.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_23.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_23.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_24.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_24.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_25.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_25.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_26.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_26.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_27.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_27.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_28.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_28.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_29.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_29.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_30.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_30.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_31.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_31.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_0.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_0.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_1.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_1.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_2.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_2.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_3.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_3.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_4.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_4.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_5.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_5.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_6.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_6.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_7.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_7.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_8.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_8.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_9.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_9.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_10.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_10.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_11.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_11.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_12.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_12.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_13.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_13.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_14.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_14.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_15.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_15.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_16.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_16.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_17.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_17.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_18.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_18.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_19.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_19.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_20.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_20.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_21.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_21.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_22.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_22.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_23.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_23.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_24.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_24.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_25.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_25.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_26.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_26.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_27.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_27.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_28.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_28.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_29.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_29.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_30.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_30.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_31.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_31.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_0.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_0.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_1.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_1.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_2.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_2.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_3.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_3.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_4.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_4.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_5.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_5.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_6.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_6.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_7.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_7.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_8.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_8.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_9.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_9.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_10.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_10.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_11.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_11.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_12.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_12.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_13.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_13.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_14.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_14.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_15.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_15.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_16.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_16.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_17.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_17.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_18.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_18.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_19.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_19.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_20.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_20.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_21.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_21.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_22.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_22.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_23.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_23.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_24.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_24.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_25.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_25.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_26.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_26.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_27.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_27.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_28.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_28.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_29.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_29.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_30.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_30.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_31.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_31.npy ================================================ FILE: split_files/curvefault_b_val.txt ================================================ /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_32.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_32.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_33.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_33.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_34.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_34.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis6_1_35.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel6_1_35.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_32.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_32.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_33.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_33.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_34.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_34.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis7_1_35.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel7_1_35.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_32.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_32.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_33.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_33.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_34.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_34.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/seis8_1_35.npy /projects/piml_inversion/FWIOpenData/CurveFault_B/vel8_1_35.npy ================================================ FILE: split_files/curvevel_a_train.txt ================================================ /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data1.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model1.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data2.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model2.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data3.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model3.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data4.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model4.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data5.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model5.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data6.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model6.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data7.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model7.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data8.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model8.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data9.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model9.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data10.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model10.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data11.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model11.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data12.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model12.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data13.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model13.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data14.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model14.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data15.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model15.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data16.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model16.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data17.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model17.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data18.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model18.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data19.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model19.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data20.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model20.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data21.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model21.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data22.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model22.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data23.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model23.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data24.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model24.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data25.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model25.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data26.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model26.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data27.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model27.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data28.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model28.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data29.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model29.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data30.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model30.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data31.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model31.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data32.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model32.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data33.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model33.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data34.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model34.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data35.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model35.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data36.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model36.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data37.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model37.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data38.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model38.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data39.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model39.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data40.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model40.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data41.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model41.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data42.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model42.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data43.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model43.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data44.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model44.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data45.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model45.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data46.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model46.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data47.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model47.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data48.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model48.npy ================================================ FILE: split_files/curvevel_a_val.txt ================================================ /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data49.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model49.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data50.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model50.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data51.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model51.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data52.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model52.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data53.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model53.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data54.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model54.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data55.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model55.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data56.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model56.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data57.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model57.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data58.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model58.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data59.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model59.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/data/data60.npy /projects/piml_inversion/FWIOpenData/CurveVel_A/model/model60.npy ================================================ FILE: split_files/curvevel_b_train.txt ================================================ /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data1.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model1.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data2.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model2.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data3.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model3.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data4.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model4.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data5.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model5.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data6.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model6.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data7.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model7.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data8.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model8.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data9.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model9.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data10.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model10.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data11.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model11.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data12.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model12.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data13.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model13.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data14.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model14.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data15.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model15.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data16.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model16.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data17.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model17.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data18.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model18.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data19.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model19.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data20.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model20.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data21.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model21.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data22.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model22.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data23.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model23.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data24.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model24.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data25.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model25.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data26.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model26.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data27.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model27.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data28.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model28.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data29.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model29.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data30.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model30.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data31.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model31.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data32.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model32.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data33.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model33.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data34.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model34.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data35.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model35.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data36.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model36.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data37.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model37.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data38.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model38.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data39.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model39.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data40.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model40.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data41.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model41.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data42.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model42.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data43.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model43.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data44.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model44.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data45.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model45.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data46.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model46.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data47.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model47.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data48.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model48.npy ================================================ FILE: split_files/curvevel_b_val.txt ================================================ /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data49.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model49.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data50.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model50.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data51.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model51.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data52.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model52.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data53.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model53.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data54.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model54.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data55.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model55.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data56.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model56.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data57.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model57.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data58.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model58.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data59.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model59.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/data/data60.npy /projects/piml_inversion/FWIOpenData/CurveVel_B/model/model60.npy ================================================ FILE: split_files/flatfault_a_train.txt ================================================ /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_0.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_0.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_1.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_1.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_2.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_2.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_3.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_3.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_4.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_4.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_5.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_5.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_6.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_6.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_7.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_7.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_8.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_8.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_9.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_9.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_10.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_10.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_11.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_11.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_12.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_12.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_13.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_13.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_14.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_14.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_15.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_15.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_16.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_16.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_17.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_17.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_18.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_18.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_19.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_19.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_20.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_20.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_21.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_21.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_22.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_22.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_23.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_23.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_24.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_24.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_25.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_25.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_26.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_26.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_27.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_27.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_28.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_28.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_29.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_29.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_30.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_30.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_31.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_31.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_0.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_0.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_1.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_1.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_2.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_2.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_3.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_3.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_4.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_4.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_5.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_5.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_6.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_6.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_7.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_7.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_8.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_8.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_9.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_9.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_10.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_10.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_11.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_11.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_12.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_12.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_13.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_13.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_14.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_14.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_15.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_15.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_16.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_16.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_17.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_17.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_18.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_18.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_19.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_19.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_20.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_20.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_21.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_21.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_22.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_22.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_23.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_23.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_24.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_24.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_25.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_25.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_26.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_26.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_27.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_27.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_28.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_28.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_29.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_29.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_30.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_30.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_31.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_31.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_0.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_0.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_1.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_1.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_2.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_2.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_3.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_3.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_4.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_4.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_5.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_5.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_6.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_6.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_7.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_7.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_8.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_8.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_9.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_9.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_10.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_10.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_11.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_11.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_12.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_12.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_13.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_13.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_14.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_14.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_15.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_15.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_16.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_16.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_17.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_17.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_18.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_18.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_19.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_19.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_20.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_20.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_21.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_21.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_22.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_22.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_23.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_23.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_24.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_24.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_25.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_25.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_26.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_26.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_27.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_27.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_28.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_28.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_29.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_29.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_30.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_30.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_31.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_31.npy ================================================ FILE: split_files/flatfault_a_val.txt ================================================ /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_32.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_32.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_33.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_33.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_34.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_34.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis2_1_35.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel2_1_35.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_32.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_32.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_33.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_33.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_34.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_34.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis3_1_35.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel3_1_35.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_32.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_32.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_33.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_33.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_34.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_34.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/seis4_1_35.npy /projects/piml_inversion/FWIOpenData/FlatFault_A/vel4_1_35.npy ================================================ FILE: split_files/flatfault_b_train.txt ================================================ /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_0.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_0.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_1.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_1.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_2.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_2.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_3.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_3.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_4.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_4.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_5.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_5.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_6.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_6.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_7.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_7.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_8.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_8.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_9.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_9.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_10.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_10.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_11.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_11.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_12.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_12.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_13.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_13.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_14.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_14.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_15.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_15.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_16.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_16.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_17.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_17.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_18.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_18.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_19.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_19.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_20.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_20.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_21.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_21.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_22.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_22.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_23.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_23.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_24.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_24.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_25.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_25.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_26.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_26.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_27.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_27.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_28.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_28.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_29.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_29.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_30.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_30.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_31.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_31.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_0.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_0.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_1.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_1.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_2.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_2.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_3.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_3.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_4.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_4.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_5.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_5.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_6.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_6.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_7.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_7.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_8.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_8.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_9.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_9.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_10.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_10.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_11.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_11.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_12.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_12.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_13.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_13.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_14.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_14.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_15.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_15.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_16.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_16.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_17.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_17.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_18.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_18.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_19.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_19.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_20.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_20.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_21.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_21.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_22.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_22.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_23.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_23.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_24.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_24.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_25.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_25.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_26.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_26.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_27.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_27.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_28.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_28.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_29.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_29.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_30.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_30.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_31.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_31.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_0.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_0.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_1.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_1.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_2.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_2.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_3.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_3.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_4.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_4.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_5.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_5.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_6.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_6.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_7.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_7.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_8.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_8.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_9.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_9.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_10.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_10.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_11.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_11.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_12.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_12.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_13.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_13.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_14.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_14.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_15.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_15.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_16.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_16.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_17.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_17.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_18.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_18.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_19.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_19.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_20.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_20.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_21.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_21.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_22.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_22.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_23.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_23.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_24.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_24.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_25.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_25.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_26.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_26.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_27.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_27.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_28.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_28.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_29.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_29.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_30.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_30.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_31.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_31.npy ================================================ FILE: split_files/flatfault_b_val.txt ================================================ /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_32.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_32.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_33.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_33.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_34.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_34.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis6_1_35.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel6_1_35.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_32.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_32.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_33.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_33.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_34.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_34.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis7_1_35.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel7_1_35.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_32.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_32.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_33.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_33.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_34.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_34.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/seis8_1_35.npy /projects/piml_inversion/FWIOpenData/FlatFault_B/vel8_1_35.npy ================================================ FILE: split_files/flatvel_a_train.txt ================================================ /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data1.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model1.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data2.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model2.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data3.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model3.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data4.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model4.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data5.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model5.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data6.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model6.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data7.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model7.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data8.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model8.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data9.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model9.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data10.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model10.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data11.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model11.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data12.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model12.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data13.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model13.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data14.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model14.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data15.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model15.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data16.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model16.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data17.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model17.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data18.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model18.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data19.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model19.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data20.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model20.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data21.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model21.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data22.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model22.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data23.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model23.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data24.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model24.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data25.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model25.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data26.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model26.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data27.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model27.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data28.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model28.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data29.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model29.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data30.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model30.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data31.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model31.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data32.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model32.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data33.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model33.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data34.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model34.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data35.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model35.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data36.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model36.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data37.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model37.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data38.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model38.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data39.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model39.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data40.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model40.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data41.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model41.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data42.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model42.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data43.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model43.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data44.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model44.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data45.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model45.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data46.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model46.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data47.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model47.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data48.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model48.npy ================================================ FILE: split_files/flatvel_a_val.txt ================================================ /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data49.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model49.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data50.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model50.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data51.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model51.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data52.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model52.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data53.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model53.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data54.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model54.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data55.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model55.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data56.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model56.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data57.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model57.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data58.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model58.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data59.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model59.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/data/data60.npy /projects/piml_inversion/FWIOpenData/FlatVel_A/model/model60.npy ================================================ FILE: split_files/flatvel_b_train.txt ================================================ /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data1.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model1.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data2.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model2.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data3.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model3.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data4.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model4.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data5.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model5.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data6.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model6.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data7.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model7.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data8.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model8.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data9.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model9.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data10.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model10.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data11.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model11.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data12.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model12.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data13.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model13.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data14.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model14.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data15.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model15.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data16.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model16.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data17.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model17.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data18.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model18.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data19.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model19.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data20.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model20.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data21.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model21.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data22.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model22.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data23.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model23.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data24.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model24.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data25.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model25.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data26.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model26.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data27.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model27.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data28.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model28.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data29.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model29.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data30.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model30.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data31.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model31.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data32.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model32.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data33.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model33.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data34.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model34.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data35.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model35.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data36.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model36.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data37.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model37.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data38.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model38.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data39.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model39.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data40.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model40.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data41.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model41.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data42.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model42.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data43.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model43.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data44.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model44.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data45.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model45.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data46.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model46.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data47.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model47.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data48.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model48.npy ================================================ FILE: split_files/flatvel_b_val.txt ================================================ /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data49.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model49.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data50.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model50.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data51.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model51.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data52.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model52.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data53.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model53.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data54.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model54.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data55.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model55.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data56.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model56.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data57.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model57.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data58.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model58.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data59.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model59.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/data/data60.npy /projects/piml_inversion/FWIOpenData/FlatVel_B/model/model60.npy ================================================ FILE: split_files/kaggle_tutorial_train.txt ================================================ /kaggle/input/waveform-inversion/train_samples/FlatVel_A/data/data1.npy /kaggle/input/waveform-inversion/train_samples/FlatVel_A/model/model1.npy ================================================ FILE: split_files/kaggle_tutorial_val.txt ================================================ /kaggle/input/waveform-inversion/train_samples/FlatVel_A/data/data2.npy /kaggle/input/waveform-inversion/train_samples/FlatVel_A/model/model2.npy ================================================ FILE: split_files/style_a_train.txt ================================================ /projects/piml_inversion/FWIOpenData/Style_A/data/data1.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model1.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data2.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model2.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data3.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model3.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data4.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model4.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data5.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model5.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data6.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model6.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data7.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model7.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data8.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model8.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data9.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model9.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data10.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model10.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data11.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model11.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data12.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model12.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data13.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model13.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data14.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model14.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data15.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model15.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data16.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model16.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data17.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model17.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data18.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model18.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data19.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model19.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data20.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model20.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data21.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model21.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data22.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model22.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data23.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model23.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data24.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model24.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data25.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model25.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data26.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model26.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data27.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model27.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data28.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model28.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data29.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model29.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data30.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model30.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data31.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model31.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data32.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model32.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data33.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model33.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data34.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model34.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data35.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model35.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data36.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model36.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data37.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model37.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data38.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model38.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data39.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model39.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data40.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model40.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data41.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model41.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data42.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model42.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data43.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model43.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data44.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model44.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data45.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model45.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data46.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model46.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data47.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model47.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data48.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model48.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data49.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model49.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data50.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model50.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data51.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model51.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data52.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model52.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data53.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model53.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data54.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model54.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data55.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model55.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data56.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model56.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data57.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model57.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data58.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model58.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data59.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model59.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data60.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model60.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data61.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model61.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data62.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model62.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data63.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model63.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data64.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model64.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data65.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model65.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data66.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model66.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data67.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model67.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data68.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model68.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data69.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model69.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data70.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model70.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data71.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model71.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data72.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model72.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data73.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model73.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data74.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model74.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data75.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model75.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data76.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model76.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data77.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model77.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data78.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model78.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data79.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model79.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data80.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model80.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data81.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model81.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data82.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model82.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data83.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model83.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data84.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model84.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data85.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model85.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data86.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model86.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data87.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model87.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data88.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model88.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data89.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model89.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data90.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model90.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data91.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model91.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data92.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model92.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data93.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model93.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data94.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model94.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data95.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model95.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data96.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model96.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data97.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model97.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data98.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model98.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data99.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model99.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data100.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model100.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data101.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model101.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data102.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model102.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data103.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model103.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data104.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model104.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data105.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model105.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data106.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model106.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data107.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model107.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data108.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model108.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data109.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model109.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data110.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model110.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data111.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model111.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data112.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model112.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data113.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model113.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data114.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model114.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data115.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model115.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data116.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model116.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data117.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model117.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data118.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model118.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data119.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model119.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data120.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model120.npy ================================================ FILE: split_files/style_a_val.txt ================================================ /projects/piml_inversion/FWIOpenData/Style_A/data/data121.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model121.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data122.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model122.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data123.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model123.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data124.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model124.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data125.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model125.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data126.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model126.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data127.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model127.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data128.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model128.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data129.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model129.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data130.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model130.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data131.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model131.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data132.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model132.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data133.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model133.npy /projects/piml_inversion/FWIOpenData/Style_A/data/data134.npy /projects/piml_inversion/FWIOpenData/Style_A/model/model134.npy ================================================ FILE: split_files/style_b_train.txt ================================================ /projects/piml_inversion/FWIOpenData/Style_B/data/data1.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model1.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data2.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model2.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data3.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model3.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data4.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model4.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data5.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model5.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data6.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model6.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data7.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model7.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data8.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model8.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data9.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model9.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data10.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model10.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data11.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model11.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data12.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model12.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data13.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model13.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data14.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model14.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data15.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model15.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data16.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model16.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data17.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model17.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data18.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model18.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data19.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model19.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data20.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model20.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data21.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model21.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data22.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model22.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data23.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model23.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data24.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model24.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data25.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model25.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data26.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model26.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data27.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model27.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data28.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model28.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data29.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model29.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data30.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model30.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data31.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model31.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data32.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model32.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data33.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model33.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data34.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model34.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data35.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model35.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data36.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model36.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data37.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model37.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data38.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model38.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data39.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model39.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data40.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model40.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data41.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model41.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data42.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model42.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data43.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model43.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data44.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model44.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data45.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model45.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data46.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model46.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data47.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model47.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data48.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model48.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data49.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model49.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data50.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model50.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data51.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model51.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data52.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model52.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data53.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model53.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data54.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model54.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data55.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model55.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data56.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model56.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data57.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model57.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data58.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model58.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data59.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model59.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data60.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model60.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data61.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model61.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data62.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model62.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data63.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model63.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data64.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model64.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data65.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model65.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data66.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model66.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data67.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model67.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data68.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model68.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data69.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model69.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data70.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model70.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data71.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model71.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data72.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model72.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data73.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model73.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data74.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model74.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data75.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model75.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data76.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model76.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data77.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model77.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data78.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model78.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data79.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model79.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data80.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model80.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data81.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model81.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data82.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model82.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data83.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model83.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data84.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model84.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data85.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model85.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data86.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model86.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data87.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model87.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data88.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model88.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data89.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model89.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data90.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model90.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data91.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model91.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data92.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model92.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data93.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model93.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data94.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model94.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data95.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model95.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data96.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model96.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data97.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model97.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data98.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model98.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data99.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model99.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data100.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model100.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data101.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model101.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data102.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model102.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data103.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model103.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data104.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model104.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data105.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model105.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data106.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model106.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data107.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model107.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data108.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model108.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data109.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model109.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data110.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model110.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data111.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model111.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data112.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model112.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data113.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model113.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data114.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model114.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data115.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model115.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data116.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model116.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data117.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model117.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data118.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model118.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data119.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model119.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data120.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model120.npy ================================================ FILE: split_files/style_b_val.txt ================================================ /projects/piml_inversion/FWIOpenData/Style_B/data/data121.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model121.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data122.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model122.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data123.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model123.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data124.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model124.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data125.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model125.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data126.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model126.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data127.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model127.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data128.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model128.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data129.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model129.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data130.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model130.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data131.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model131.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data132.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model132.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data133.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model133.npy /projects/piml_inversion/FWIOpenData/Style_B/data/data134.npy /projects/piml_inversion/FWIOpenData/Style_B/model/model134.npy ================================================ FILE: split_files/tutorial_train.txt ================================================ ./fva_data1.npy ./fva_velocity1.npy ./fva_data2.npy ./fva_velocity2.npy ================================================ FILE: split_files/tutorial_val.txt ================================================ ./fva_data3.npy ./fva_velocity3.npy ================================================ FILE: test.py ================================================ # © 2022. Triad National Security, LLC. All rights reserved. # This program was produced under U.S. Government contract 89233218CNA000001 for Los Alamos # National Laboratory (LANL), which is operated by Triad National Security, LLC for the U.S. # Department of Energy/National Nuclear Security Administration. All rights in the program are # reserved by Triad National Security, LLC, and the U.S. Department of Energy/National Nuclear # Security Administration. The Government is granted for itself and others acting on its behalf a # nonexclusive, paid-up, irrevocable worldwide license in this material to reproduce, prepare # derivative works, distribute copies to the public, perform publicly and display publicly, and to permit # others to do so. import os import sys import time import datetime import json import torch import torch.nn as nn from torch.utils.data import SequentialSampler from torch.utils.data.dataloader import default_collate import torchvision from torchvision.transforms import Compose import numpy as np import utils import network from vis import * from dataset import FWIDataset import transforms as T import pytorch_ssim def evaluate(model, criterions, dataloader, device, k, ctx, vis_path, vis_batch, vis_sample, missing, std): model.eval() label_list, label_pred_list= [], [] # store denormalized predcition & gt in numpy label_tensor, label_pred_tensor = [], [] # store normalized prediction & gt in tensor if missing or std: data_list, data_noise_list = [], [] # store original data and noisy/muted data with torch.no_grad(): batch_idx = 0 for data, label in dataloader: data = data.type(torch.FloatTensor).to(device, non_blocking=True) label = label.type(torch.FloatTensor).to(device, non_blocking=True) label_np = T.tonumpy_denormalize(label, ctx['label_min'], ctx['label_max'], exp=False) label_list.append(label_np) label_tensor.append(label) if missing or std: # Add gaussian noise data_noise = torch.clip(data + (std ** 0.5) * torch.randn(data.shape).to(device, non_blocking=True), min=-1, max=1) # Mute some traces mute_idx = np.random.choice(data.shape[3], size=missing, replace=False) data_noise[:, :, :, mute_idx] = data[0, 0, 0, 0] data_np = T.tonumpy_denormalize(data, ctx['data_min'], ctx['data_max'], k=k) data_noise_np = T.tonumpy_denormalize(data_noise, ctx['data_min'], ctx['data_max'], k=k) data_list.append(data_np) data_noise_list.append(data_noise_np) pred = model(data_noise) else: pred = model(data) label_pred_np = T.tonumpy_denormalize(pred, ctx['label_min'], ctx['label_max'], exp=False) label_pred_list.append(label_pred_np) label_pred_tensor.append(pred) # Visualization if vis_path and batch_idx < vis_batch: for i in range(vis_sample): plot_velocity(label_pred_np[i, 0], label_np[i, 0], f'{vis_path}/V_{batch_idx}_{i}.png') #, vmin=ctx['label_min'], vmax=ctx['label_max']) if missing or std: for ch in [2]: # range(data.shape[1]): plot_seismic(data_np[i, ch], data_noise_np[i, ch], f'{vis_path}/S_{batch_idx}_{i}_{ch}.png', vmin=ctx['data_min'] * 0.01, vmax=ctx['data_max'] * 0.01) batch_idx += 1 label, label_pred = np.concatenate(label_list), np.concatenate(label_pred_list) label_t, pred_t = torch.cat(label_tensor), torch.cat(label_pred_tensor) l1 = nn.L1Loss() l2 = nn.MSELoss() print(f'MAE: {l1(label_t, pred_t)}') print(f'MSE: {l2(label_t, pred_t)}') ssim_loss = pytorch_ssim.SSIM(window_size=11) print(f'SSIM: {ssim_loss(label_t / 2 + 0.5, pred_t / 2 + 0.5)}') # (-1, 1) to (0, 1) for name, criterion in criterions.items(): print(f' * Velocity {name}: {criterion(label, label_pred)}') # print(f' | Velocity 2 layers {name}: {criterion(label[:1000], label_pred[:1000])}') # print(f' | Velocity 3 layers {name}: {criterion(label[1000:2000], label_pred[1000:2000])}') # print(f' | Velocity 4 layers {name}: {criterion(label[2000:], label_pred[2000:])}') def main(args): print(args) print("torch version: ", torch.__version__) print("torchvision version: ", torchvision.__version__) utils.mkdir(args.output_path) device = torch.device(args.device) torch.backends.cudnn.benchmark = True with open('dataset_config.json') as f: try: ctx = json.load(f)[args.dataset] except KeyError: print('Unsupported dataset.') sys.exit() if args.file_size is not None: ctx['file_size'] = args.file_size print("Loading data") print("Loading validation data") log_data_min = T.log_transform(ctx['data_min'], k=args.k) log_data_max = T.log_transform(ctx['data_max'], k=args.k) transform_valid_data = Compose([ T.LogTransform(k=args.k), T.MinMaxNormalize(log_data_min, log_data_max), ]) transform_valid_label = Compose([ T.MinMaxNormalize(ctx['label_min'], ctx['label_max']) ]) if args.val_anno[-3:] == 'txt': dataset_valid = FWIDataset( args.val_anno, sample_ratio=args.sample_temporal, file_size=ctx['file_size'], transform_data=transform_valid_data, transform_label=transform_valid_label ) else: dataset_valid = torch.load(args.val_anno) print("Creating data loaders") valid_sampler = SequentialSampler(dataset_valid) dataloader_valid = torch.utils.data.DataLoader( dataset_valid, batch_size=args.batch_size, sampler=valid_sampler, num_workers=args.workers, pin_memory=True, collate_fn=default_collate) print("Creating model") if args.model not in network.model_dict: print('Unsupported model.') sys.exit() model = network.model_dict[args.model](upsample_mode=args.up_mode, sample_spatial=args.sample_spatial, sample_temporal=args.sample_temporal, norm=args.norm).to(device) criterions = { 'MAE': lambda x, y: np.mean(np.abs(x - y)), 'MSE': lambda x, y: np.mean((x - y) ** 2) } if args.resume: print(args.resume) checkpoint = torch.load(args.resume, map_location='cpu') model.load_state_dict(network.replace_legacy(checkpoint['model'])) print('Loaded model checkpoint at Epoch {} / Step {}.'.format(checkpoint['epoch'], checkpoint['step'])) if args.vis: # Create folder to store visualization results vis_folder = f'visualization_{args.vis_suffix}' if args.vis_suffix else 'visualization' vis_path = os.path.join(args.output_path, vis_folder) utils.mkdir(vis_path) else: vis_path = None print("Start testing") start_time = time.time() evaluate(model, criterions, dataloader_valid, device, args.k, ctx, vis_path, args.vis_batch, args.vis_sample, args.missing, args.std) total_time = time.time() - start_time total_time_str = str(datetime.timedelta(seconds=int(total_time))) print('Testing time {}'.format(total_time_str)) def parse_args(): import argparse parser = argparse.ArgumentParser(description='FCN Testing') parser.add_argument('-d', '--device', default='cuda', help='device') parser.add_argument('-ds', '--dataset', default='flatfault-b', type=str, help='dataset name') parser.add_argument('-fs', '--file-size', default=None, type=int, help='number of samples in each npy file') # Path related parser.add_argument('-ap', '--anno-path', default='split_files', help='annotation files location') parser.add_argument('-v', '--val-anno', default='flatfault_b_val_invnet.txt', help='name of val anno') parser.add_argument('-o', '--output-path', default='Invnet_models', help='path to parent folder to save checkpoints') parser.add_argument('-n', '--save-name', default='fcn_l1loss_ffb', help='folder name for this experiment') parser.add_argument('-s', '--suffix', type=str, default=None, help='subfolder name for this run') # Model related parser.add_argument('-m', '--model', type=str, help='inverse model name') parser.add_argument('-no', '--norm', default='bn', help='normalization layer type, support bn, in, ln (default: bn)') parser.add_argument('-um', '--up-mode', default=None, help='upsampling layer mode such as "nearest", "bicubic", etc.') parser.add_argument('-ss', '--sample-spatial', type=float, default=1.0, help='spatial sampling ratio') parser.add_argument('-st', '--sample-temporal', type=int, default=1, help='temporal sampling ratio') # Test related parser.add_argument('-b', '--batch-size', default=50, type=int) parser.add_argument('-j', '--workers', default=16, type=int, help='number of data loading workers (default: 16)') parser.add_argument('--k', default=1, type=float, help='k in log transformation') parser.add_argument('-r', '--resume', default=None, help='resume from checkpoint') parser.add_argument('--vis', help='visualization option', action="store_true") parser.add_argument('-vsu','--vis-suffix', default=None, type=str, help='visualization suffix') parser.add_argument('-vb','--vis-batch', help='number of batch to be visualized', default=0, type=int) parser.add_argument('-vsa', '--vis-sample', help='number of samples in a batch to be visualized', default=0, type=int) parser.add_argument('--missing', default=0, type=int, help='number of missing traces') parser.add_argument('--std', default=0, type=float, help='standard deviation of gaussian noise') args = parser.parse_args() args.output_path = os.path.join(args.output_path, args.save_name, args.suffix or '') args.val_anno = os.path.join(args.anno_path, args.val_anno) args.resume = os.path.join(args.output_path, args.resume) return args if __name__ == '__main__': args = parse_args() main(args) ================================================ FILE: train.py ================================================ # © 2022. Triad National Security, LLC. All rights reserved. # This program was produced under U.S. Government contract 89233218CNA000001 for Los Alamos # National Laboratory (LANL), which is operated by Triad National Security, LLC for the U.S. # Department of Energy/National Nuclear Security Administration. All rights in the program are # reserved by Triad National Security, LLC, and the U.S. Department of Energy/National Nuclear # Security Administration. The Government is granted for itself and others acting on its behalf a # nonexclusive, paid-up, irrevocable worldwide license in this material to reproduce, prepare # derivative works, distribute copies to the public, perform publicly and display publicly, and to permit # others to do so. import os import sys import time import datetime import json import torch from torch import nn from torch.utils.data import RandomSampler, DataLoader from torch.utils.data.dataloader import default_collate from torch.utils.data.distributed import DistributedSampler from torch.nn.parallel import DistributedDataParallel from torch.utils.tensorboard import SummaryWriter import torchvision from torchvision.transforms import Compose import utils import network from dataset import FWIDataset from scheduler import WarmupMultiStepLR import transforms as T step = 0 def train_one_epoch(model, criterion, optimizer, lr_scheduler, dataloader, device, epoch, print_freq, writer): global step model.train() # Logger setup metric_logger = utils.MetricLogger(delimiter=' ') metric_logger.add_meter('lr', utils.SmoothedValue(window_size=1, fmt='{value}')) metric_logger.add_meter('samples/s', utils.SmoothedValue(window_size=10, fmt='{value:.3f}')) header = 'Epoch: [{}]'.format(epoch) for data, label in metric_logger.log_every(dataloader, print_freq, header): start_time = time.time() optimizer.zero_grad() data, label = data.to(device), label.to(device) output = model(data) loss, loss_g1v, loss_g2v = criterion(output, label) loss.backward() optimizer.step() loss_val = loss.item() loss_g1v_val = loss_g1v.item() loss_g2v_val = loss_g2v.item() batch_size = data.shape[0] metric_logger.update(loss=loss_val, loss_g1v=loss_g1v_val, loss_g2v=loss_g2v_val, lr=optimizer.param_groups[0]['lr']) metric_logger.meters['samples/s'].update(batch_size / (time.time() - start_time)) if writer: writer.add_scalar('loss', loss_val, step) writer.add_scalar('loss_g1v', loss_g1v_val, step) writer.add_scalar('loss_g2v', loss_g2v_val, step) step += 1 lr_scheduler.step() def evaluate(model, criterion, dataloader, device, writer): model.eval() metric_logger = utils.MetricLogger(delimiter=' ') header = 'Test:' with torch.no_grad(): for data, label in metric_logger.log_every(dataloader, 20, header): data = data.to(device, non_blocking=True) label = label.to(device, non_blocking=True) output = model(data) loss, loss_g1v, loss_g2v = criterion(output, label) metric_logger.update(loss=loss.item(), loss_g1v=loss_g1v.item(), loss_g2v=loss_g2v.item()) # Gather the stats from all processes metric_logger.synchronize_between_processes() print(' * Loss {loss.global_avg:.8f}\n'.format(loss=metric_logger.loss)) if writer: writer.add_scalar('loss', metric_logger.loss.global_avg, step) writer.add_scalar('loss_g1v', metric_logger.loss_g1v.global_avg, step) writer.add_scalar('loss_g2v', metric_logger.loss_g2v.global_avg, step) return metric_logger.loss.global_avg def main(args): global step print(args) print('torch version: ', torch.__version__) print('torchvision version: ', torchvision.__version__) utils.mkdir(args.output_path) # create folder to store checkpoints utils.init_distributed_mode(args) # distributed mode initialization # Set up tensorboard summary writer train_writer, val_writer = None, None if args.tensorboard: utils.mkdir(args.log_path) # create folder to store tensorboard logs if not args.distributed or (args.rank == 0) and (args.local_rank == 0): train_writer = SummaryWriter(os.path.join(args.output_path, 'logs', 'train')) val_writer = SummaryWriter(os.path.join(args.output_path, 'logs', 'val')) device = torch.device(args.device) torch.backends.cudnn.benchmark = True with open('dataset_config.json') as f: try: ctx = json.load(f)[args.dataset] except KeyError: print('Unsupported dataset.') sys.exit() if args.file_size is not None: ctx['file_size'] = args.file_size # Create dataset and dataloader print('Loading data') print('Loading training data') # Normalize data and label to [-1, 1] transform_data = Compose([ T.LogTransform(k=args.k), T.MinMaxNormalize(T.log_transform(ctx['data_min'], k=args.k), T.log_transform(ctx['data_max'], k=args.k)) ]) transform_label = Compose([ T.MinMaxNormalize(ctx['label_min'], ctx['label_max']) ]) if args.train_anno[-3:] == 'txt': dataset_train = FWIDataset( args.train_anno, preload=True, sample_ratio=args.sample_temporal, file_size=ctx['file_size'], transform_data=transform_data, transform_label=transform_label ) else: dataset_train = torch.load(args.train_anno) print('Loading validation data') if args.val_anno[-3:] == 'txt': dataset_valid = FWIDataset( args.val_anno, preload=True, sample_ratio=args.sample_temporal, file_size=ctx['file_size'], transform_data=transform_data, transform_label=transform_label ) else: dataset_valid = torch.load(args.val_anno) print('Creating data loaders') if args.distributed: train_sampler = DistributedSampler(dataset_train, shuffle=True) valid_sampler = DistributedSampler(dataset_valid, shuffle=True) else: train_sampler = RandomSampler(dataset_train) valid_sampler = RandomSampler(dataset_valid) dataloader_train = DataLoader( dataset_train, batch_size=args.batch_size, sampler=train_sampler, num_workers=args.workers, pin_memory=True, drop_last=True, collate_fn=default_collate) dataloader_valid = DataLoader( dataset_valid, batch_size=args.batch_size, sampler=valid_sampler, num_workers=args.workers, pin_memory=True, collate_fn=default_collate) print('Creating model') if args.model not in network.model_dict: print('Unsupported model.') sys.exit() model = network.model_dict[args.model](upsample_mode=args.up_mode, sample_spatial=args.sample_spatial, sample_temporal=args.sample_temporal).to(device) if args.distributed and args.sync_bn: model = torch.nn.SyncBatchNorm.convert_sync_batchnorm(model) # Define loss function l1loss = nn.L1Loss() l2loss = nn.MSELoss() def criterion(pred, gt): loss_g1v = l1loss(pred, gt) loss_g2v = l2loss(pred, gt) loss = args.lambda_g1v * loss_g1v + args.lambda_g2v * loss_g2v return loss, loss_g1v, loss_g2v # Scale lr according to effective batch size lr = args.lr * args.world_size optimizer = torch.optim.AdamW(model.parameters(), lr=lr, betas=(0.9, 0.999), weight_decay=args.weight_decay) # Convert scheduler to be per iteration instead of per epoch warmup_iters = args.lr_warmup_epochs * len(dataloader_train) lr_milestones = [len(dataloader_train) * m for m in args.lr_milestones] lr_scheduler = WarmupMultiStepLR( optimizer, milestones=lr_milestones, gamma=args.lr_gamma, warmup_iters=warmup_iters, warmup_factor=1e-5) model_without_ddp = model if args.distributed: model = DistributedDataParallel(model, device_ids=[args.local_rank]) model_without_ddp = model.module if args.resume: checkpoint = torch.load(args.resume, map_location='cpu') model_without_ddp.load_state_dict(network.replace_legacy(checkpoint['model'])) optimizer.load_state_dict(checkpoint['optimizer']) lr_scheduler.load_state_dict(checkpoint['lr_scheduler']) args.start_epoch = checkpoint['epoch'] + 1 step = checkpoint['step'] lr_scheduler.milestones=lr_milestones print('Start training') start_time = time.time() best_loss = 10 chp=1 for epoch in range(args.start_epoch, args.epochs): if args.distributed: train_sampler.set_epoch(epoch) train_one_epoch(model, criterion, optimizer, lr_scheduler, dataloader_train, device, epoch, args.print_freq, train_writer) loss = evaluate(model, criterion, dataloader_valid, device, val_writer) checkpoint = { 'model': model_without_ddp.state_dict(), 'optimizer': optimizer.state_dict(), 'lr_scheduler': lr_scheduler.state_dict(), 'epoch': epoch, 'step': step, 'args': args} # Save checkpoint per epoch if loss < best_loss: utils.save_on_master( checkpoint, os.path.join(args.output_path, 'checkpoint.pth')) print('saving checkpoint at epoch: ', epoch) chp = epoch best_loss = loss # Save checkpoint every epoch block print('current best loss: ', best_loss) print('current best epoch: ', chp) if args.output_path and (epoch + 1) % args.epoch_block == 0: utils.save_on_master( checkpoint, os.path.join(args.output_path, 'model_{}.pth'.format(epoch + 1))) total_time = time.time() - start_time total_time_str = str(datetime.timedelta(seconds=int(total_time))) print('Training time {}'.format(total_time_str)) def parse_args(): import argparse parser = argparse.ArgumentParser(description='FCN Training') parser.add_argument('-d', '--device', default='cuda', help='device') parser.add_argument('-ds', '--dataset', default='flatfault-b', type=str, help='dataset name') parser.add_argument('-fs', '--file-size', default=None, type=int, help='number of samples in each npy file') # Path related parser.add_argument('-ap', '--anno-path', default='split_files', help='annotation files location') parser.add_argument('-t', '--train-anno', default='flatfault_b_train_invnet.txt', help='name of train anno') parser.add_argument('-v', '--val-anno', default='flatfault_b_val_invnet.txt', help='name of val anno') parser.add_argument('-o', '--output-path', default='Invnet_models', help='path to parent folder to save checkpoints') parser.add_argument('-l', '--log-path', default='Invnet_models', help='path to parent folder to save logs') parser.add_argument('-n', '--save-name', default='fcn_l1loss_ffb', help='folder name for this experiment') parser.add_argument('-s', '--suffix', type=str, default=None, help='subfolder name for this run') # Model related parser.add_argument('-m', '--model', type=str, help='inverse model name') parser.add_argument('-um', '--up-mode', default=None, help='upsampling layer mode such as "nearest", "bicubic", etc.') parser.add_argument('-ss', '--sample-spatial', type=float, default=1.0, help='spatial sampling ratio') parser.add_argument('-st', '--sample-temporal', type=int, default=1, help='temporal sampling ratio') # Training related parser.add_argument('-b', '--batch-size', default=256, type=int) parser.add_argument('--lr', default=0.0001, type=float, help='initial learning rate') parser.add_argument('-lm', '--lr-milestones', nargs='+', default=[], type=int, help='decrease lr on milestones') parser.add_argument('--momentum', default=0.9, type=float, help='momentum') parser.add_argument('--weight-decay', default=1e-4 , type=float, help='weight decay (default: 1e-4)') parser.add_argument('--lr-gamma', default=0.1, type=float, help='decrease lr by a factor of lr-gamma') parser.add_argument('--lr-warmup-epochs', default=0, type=int, help='number of warmup epochs') parser.add_argument('-eb', '--epoch_block', type=int, default=40, help='epochs in a saved block') parser.add_argument('-nb', '--num_block', type=int, default=3, help='number of saved block') parser.add_argument('-j', '--workers', default=16, type=int, help='number of data loading workers (default: 16)') parser.add_argument('--k', default=1, type=float, help='k in log transformation') parser.add_argument('--print-freq', default=50, type=int, help='print frequency') parser.add_argument('-r', '--resume', default=None, help='resume from checkpoint') parser.add_argument('--start-epoch', default=0, type=int, help='start epoch') # Loss related parser.add_argument('-g1v', '--lambda_g1v', type=float, default=1.0) parser.add_argument('-g2v', '--lambda_g2v', type=float, default=1.0) # Distributed training related parser.add_argument('--sync-bn', action='store_true', help='Use sync batch norm') parser.add_argument('--world-size', default=1, type=int, help='number of distributed processes') parser.add_argument('--dist-url', default='env://', help='url used to set up distributed training') # Tensorboard related parser.add_argument('--tensorboard', action='store_true', help='Use tensorboard for logging.') args = parser.parse_args() args.output_path = os.path.join(args.output_path, args.save_name, args.suffix or '') args.log_path = os.path.join(args.log_path, args.save_name, args.suffix or '') args.train_anno = os.path.join(args.anno_path, args.train_anno) args.val_anno = os.path.join(args.anno_path, args.val_anno) args.epochs = args.epoch_block * args.num_block if args.resume: args.resume = os.path.join(args.output_path, args.resume) return args if __name__ == '__main__': args = parse_args() main(args) ================================================ FILE: transforms.py ================================================ # © 2022. Triad National Security, LLC. All rights reserved. # This program was produced under U.S. Government contract 89233218CNA000001 for Los Alamos # National Laboratory (LANL), which is operated by Triad National Security, LLC for the U.S. # Department of Energy/National Nuclear Security Administration. All rights in the program are # reserved by Triad National Security, LLC, and the U.S. Department of Energy/National Nuclear # Security Administration. The Government is granted for itself and others acting on its behalf a # nonexclusive, paid-up, irrevocable worldwide license in this material to reproduce, prepare # derivative works, distribute copies to the public, perform publicly and display publicly, and to permit # others to do so. import torch import numpy as np import random from sklearn.decomposition import PCA def crop(vid, i, j, h, w): return vid[..., i:(i + h), j:(j + w)] def center_crop(vid, output_size): h, w = vid.shape[-2:] th, tw = output_size i = int(round((h - th) / 2.)) j = int(round((w - tw) / 2.)) return crop(vid, i, j, th, tw) def hflip(vid): return vid.flip(dims=(-1,)) # NOTE: for those functions, which generally expect mini-batches, we keep them # as non-minibatch so that they are applied as if they were 4d (thus image). # this way, we only apply the transformation in the spatial domain def resize(vid, size, interpolation='bilinear'): # NOTE: using bilinear interpolation because we don't work on minibatches # at this level scale = None if isinstance(size, int): scale = float(size) / min(vid.shape[-2:]) size = None return torch.nn.functional.interpolate( vid, size=size, scale_factor=scale, mode=interpolation, align_corners=False) def random_resize(vid, size, random_factor, interpolation='bilinear'): # NOTE: using bilinear interpolation because we don't work on minibatches # at this level scale = None r = 1 + random.random() * (random_factor - 1) if isinstance(size, int): scale = float(size) / min(vid.shape[-2:]) * r size = None else: size = tuple([int(elem * r) for elem in list(size)]) return torch.nn.functional.interpolate( vid, size=size, scale_factor=scale, mode=interpolation, align_corners=False) def pad(vid, padding, fill=0, padding_mode="constant"): # NOTE: don't want to pad on temporal dimension, so let as non-batch # (4d) before padding. This works as expected return torch.nn.functional.pad(vid, padding, value=fill, mode=padding_mode) def to_normalized_float_tensor(vid): return vid.permute(3, 0, 1, 2).to(torch.float32) / 255 def normalize(vid, mean, std): shape = (-1,) + (1,) * (vid.dim() - 1) mean = torch.as_tensor(mean).reshape(shape) std = torch.as_tensor(std).reshape(shape) return (vid - mean) / std def minmax_normalize(vid, vmin, vmax, scale=2): vid -= vmin vid /= (vmax - vmin) return (vid - 0.5) * 2 if scale == 2 else vid def minmax_denormalize(vid, vmin, vmax, scale=2): if scale == 2: vid = vid / 2 + 0.5 return vid * (vmax - vmin) + vmin def add_noise(data, snr): sig_avg_power_db = 10*np.log10(np.mean(data**2)) noise_avg_power_db = sig_avg_power_db - snr noise_avg_power = 10**(noise_avg_power_db/10) noise = np.random.normal(0, np.sqrt(noise_avg_power), data.shape) noisy_data = data + noise return noisy_data def log_transform(data, k=1, c=0): return (np.log1p(np.abs(k * data) + c)) * np.sign(data) def log_transform_tensor(data, k=1, c=0): return (torch.log1p(torch.abs(k * data) + c)) * torch.sign(data) def exp_transform(data, k=1, c=0): return (np.expm1(np.abs(data)) - c) * np.sign(data) / k def tonumpy_denormalize(vid, vmin, vmax, exp=True, k=1, c=0, scale=2): if exp: vmin = log_transform(vmin, k=k, c=c) vmax = log_transform(vmax, k=k, c=c) vid = minmax_denormalize(vid.cpu().numpy(), vmin, vmax, scale) return exp_transform(vid, k=k, c=c) if exp else vid # Class interface class RandomCrop(object): def __init__(self, size): self.size = size @staticmethod def get_params(vid, output_size): """Get parameters for ``crop`` for a random crop. """ h, w = vid.shape[-2:] th, tw = output_size if w == tw and h == th: return 0, 0, h, w i = random.randint(0, h - th) j = random.randint(0, w - tw) return i, j, th, tw def __call__(self, vid): i, j, h, w = self.get_params(vid, self.size) return crop(vid, i, j, h, w) class CenterCrop(object): def __init__(self, size): self.size = size def __call__(self, vid): return center_crop(vid, self.size) class Resize(object): def __init__(self, size): self.size = size def __call__(self, vid): return resize(vid, self.size) class RandomResize(object): def __init__(self, size, random_factor=1.25): self.size = size self.factor = random_factor def __call__(self, vid): return random_resize(vid, self.size, self.factor) class ToFloatTensorInZeroOne(object): def __call__(self, vid): return to_normalized_float_tensor(vid) class Normalize(object): def __init__(self, mean, std): self.mean = mean self.std = std def __call__(self, vid): return normalize(vid, self.mean, self.std) class MinMaxNormalize(object): def __init__(self, datamin, datamax, scale=2): self.datamin = datamin self.datamax = datamax self.scale = scale def __call__(self, vid): return minmax_normalize(vid, self.datamin, self.datamax, self.scale) class RandomHorizontalFlip(object): def __init__(self, p=0.5): self.p = p def __call__(self, vid): if random.random() < self.p: return hflip(vid) return vid class Pad(object): def __init__(self, padding, fill=0): self.padding = padding self.fill = fill def __call__(self, vid): return pad(vid, self.padding, self.fill) class TemporalDownsample(object): def __init__(self, rate=1): self.rate = rate def __call__(self, vid): return vid[::self.rate] class AddNoise(object): def __init__(self, snr=10): self.snr = snr def __call__(self, vid): return add_noise(vid, self.snr) class PCD(object): def __init__(self, n_comp=8): self.pca = PCA(n_components=n_comp) def __call__(self, data): data= data.reshape((data.shape[0], -1)) feat_mean = data.mean(axis=0) data -= np.tile(feat_mean, (data.shape[0], 1)) pc = self.pca.fit_transform(data) pc = pc.reshape((-1,)) pc = pc[:, np.newaxis, np.newaxis] return pc class StackPCD(object): def __init__(self, n_comp=(32, 8)): self.primary_pca = PCA(n_components=n_comp[0]) self.secondary_pca = PCA(n_components=n_comp[1]) def __call__(self, data): data = np.transpose(data, (0, 2, 1)) primary_pc = [] for sample in data: feat_mean = sample.mean(axis=0) sample -= np.tile(feat_mean, (sample.shape[0], 1)) primary_pc.append(self.primary_pca.fit_transform(sample)) primary_pc = np.array(primary_pc) data = primary_pc.reshape((data.shape[0], -1)) feat_mean = data.mean(axis=0) data -= np.tile(feat_mean, (data.shape[0], 1)) secondary_pc = self.secondary_pca.fit_transform(data) secondary_pc = secondary_pc.reshape((-1,)) secondary_pc = pc[:, np.newaxis, np.newaxis] return secondary_pc class LogTransform(object): def __init__(self, k=1, c=0): self.k = k self.c = c def __call__(self, data): return log_transform(data, k=self.k, c=self.c) class ToTensor(object): """Convert ndarrays in sample to Tensors.""" # def __init__(self, device): # self.device = device def __call__(self, sample): return torch.from_numpy(sample) ================================================ FILE: utils.py ================================================ # © 2022. Triad National Security, LLC. All rights reserved. # This program was produced under U.S. Government contract 89233218CNA000001 for Los Alamos # National Laboratory (LANL), which is operated by Triad National Security, LLC for the U.S. # Department of Energy/National Nuclear Security Administration. All rights in the program are # reserved by Triad National Security, LLC, and the U.S. Department of Energy/National Nuclear # Security Administration. The Government is granted for itself and others acting on its behalf a # nonexclusive, paid-up, irrevocable worldwide license in this material to reproduce, prepare # derivative works, distribute copies to the public, perform publicly and display publicly, and to permit # others to do so. from collections import defaultdict, deque import datetime import time import torch import torch.distributed as dist import torch.autograd as autograd from torch.autograd import Variable import torch.nn as nn import errno import os import itertools from torchvision.models import vgg16 import numpy as np class SmoothedValue(object): """Track a series of values and provide access to smoothed values over a window or the global series average. """ def __init__(self, window_size=20, fmt=None): if fmt is None: fmt = "{median:.4f} ({global_avg:.4f})" self.deque = deque(maxlen=window_size) self.total = 0.0 self.count = 0 self.fmt = fmt def update(self, value, n=1): self.deque.append(value) self.count += n self.total += value * n def synchronize_between_processes(self): """ Warning: does not synchronize the deque! """ if not is_dist_avail_and_initialized(): return t = torch.tensor([self.count, self.total], dtype=torch.float64, device='cuda') dist.barrier() dist.all_reduce(t) t = t.tolist() self.count = int(t[0]) self.total = t[1] @property def median(self): d = torch.tensor(list(self.deque)) return d.median().item() @property def avg(self): d = torch.tensor(list(self.deque), dtype=torch.float32) return d.mean().item() @property def global_avg(self): return self.total / self.count @property def max(self): return max(self.deque) @property def value(self): return self.deque[-1] def __str__(self): return self.fmt.format( median=self.median, avg=self.avg, global_avg=self.global_avg, max=self.max, value=self.value) class MetricLogger(object): def __init__(self, delimiter="\t"): self.meters = defaultdict(SmoothedValue) self.delimiter = delimiter def update(self, **kwargs): for k, v in kwargs.items(): if isinstance(v, torch.Tensor): v = v.item() assert isinstance(v, (float, int)) self.meters[k].update(v) def __getattr__(self, attr): if attr in self.meters: return self.meters[attr] if attr in self.__dict__: return self.__dict__[attr] raise AttributeError("'{}' object has no attribute '{}'".format( type(self).__name__, attr)) def __str__(self): loss_str = [] for name, meter in self.meters.items(): loss_str.append( "{}: {}".format(name, str(meter)) ) return self.delimiter.join(loss_str) def synchronize_between_processes(self): for meter in self.meters.values(): meter.synchronize_between_processes() def add_meter(self, name, meter): self.meters[name] = meter def log_every(self, iterable, print_freq, header=None): if isinstance(iterable, list): length = max(len(x) for x in iterable) iterable = [x if len(x) == length else itertools.cycle(x) for x in iterable] iterable = zip(*iterable) else: length = len(iterable) i = 0 if not header: header = '' start_time = time.time() end = time.time() iter_time = SmoothedValue(fmt='{avg:.4f}') data_time = SmoothedValue(fmt='{avg:.4f}') space_fmt = ':' + str(len(str(length))) + 'd' if torch.cuda.is_available(): log_msg = self.delimiter.join([ header, '[{0' + space_fmt + '}/{1}]', 'eta: {eta}', '{meters}', 'time: {time}', 'data: {data}', 'max mem: {memory:.0f}' ]) else: log_msg = self.delimiter.join([ header, '[{0' + space_fmt + '}/{1}]', 'eta: {eta}', '{meters}', 'time: {time}', 'data: {data}' ]) MB = 1024.0 * 1024.0 for obj in iterable: data_time.update(time.time() - end) yield obj # <-- yield the batch in for loop iter_time.update(time.time() - end) if i % print_freq == 0: eta_seconds = iter_time.global_avg * (length - i) eta_string = str(datetime.timedelta(seconds=int(eta_seconds))) if torch.cuda.is_available(): print(log_msg.format( i, length, eta=eta_string, meters=str(self), time=str(iter_time), data=str(data_time), memory=torch.cuda.max_memory_allocated() / MB)) else: print(log_msg.format( i, length, eta=eta_string, meters=str(self), time=str(iter_time), data=str(data_time))) i += 1 end = time.time() total_time = time.time() - start_time total_time_str = str(datetime.timedelta(seconds=int(total_time))) print('{} Total time: {}'.format(header, total_time_str)) # Legacy code class ContentLoss(nn.Module): def __init__(self, args): super(ContentLoss, self).__init__() names = ['l1', 'l2'] self.loss_names = ['loss_' + n for n in names] for key in ['lambda_' + n for n in names]: setattr(self, key, getattr(args, key)) self.l1loss = nn.L1Loss() self.l2loss = nn.MSELoss() def forward(self, model, input, target): pred = model(input) loss_l1 = self.l1loss(target, pred) loss_l2 = self.l2loss(target, pred) loss = loss_l1 * self.lambda_l1 + loss_l2 * self.lambda_l2 scope = locals() return loss, { k: eval(k, scope) for k in self.loss_names } # Legacy code class IdenticalLoss(nn.Module): def __init__(self, args): super(IdenticalLoss, self).__init__() names = ['id1s', 'id2s'] self.loss_names = ['loss_' + n for n in names] for key in ['lambda_' + n for n in names]: setattr(self, key, getattr(args, key)) self.l1loss = nn.L1Loss() self.l2loss = nn.MSELoss() def forward(self, model_s2v, model_v2s, input): mid = model_s2v(input) pred = model_v2s(mid) cal_loss = lambda x, y: (self.l1loss(x, y), self.l2loss(x, y)) loss_id1s, loss_id2s = cal_loss(input, pred) loss = loss_id1s * self.lambda_id1s + loss_id2s * self.lambda_id2s scope = locals() return loss, { k: eval(k, scope) for k in self.loss_names } # Implemented according to H-PGNN, not useful class NMSELoss(nn.Module): def __init__(self): super(NMSELoss, self).__init__() def forward(self, pred, gt): return torch.mean(((pred - gt) / (torch.amax(gt, (-2, -1), keepdim=True) + 1e-5)) ** 2) class CycleLoss(nn.Module): def __init__(self, args): super(CycleLoss, self).__init__() names = ['g1v', 'g2v', 'g1s', 'g2s', 'c1v', 'c2v', 'c1s', 'c2s'] self.loss_names = ['loss_' + n for n in names] for key in ['lambda_' + n for n in names]: setattr(self, key, getattr(args, key)) self.l1loss = nn.L1Loss() self.l2loss = nn.MSELoss() def forward(self, data, label, pred_s=None, pred_v=None, recon_s=None, recon_v=None): cal_loss = lambda x, y: (self.l1loss(x, y), self.l2loss(x, y)) loss_g1v, loss_g2v, loss_g1s, loss_g2s = [0] * 4 if pred_v is not None: loss_g1v, loss_g2v = cal_loss(pred_v, label) if pred_s is not None: loss_g1s, loss_g2s = cal_loss(pred_s, data) loss_c1v, loss_c2v, loss_c1s , loss_c2s = [0] * 4 if recon_v is not None: loss_c1v, loss_c2v = cal_loss(recon_v, label) if recon_s is not None: loss_c1s, loss_c2s = cal_loss(recon_s, data) loss = loss_g1v * self.lambda_g1v + loss_g2v * self.lambda_g2v + \ loss_g1s * self.lambda_g1s + loss_g2s * self.lambda_g2s + \ loss_c1v * self.lambda_c1v + loss_c2v * self.lambda_c2v + \ loss_c1s * self.lambda_c1s + loss_c2s * self.lambda_c2s scope = locals() return loss, { k: eval(k, scope) for k in self.loss_names } # Legacy code class _CycleLoss(nn.Module): def __init__(self, args): super(_CycleLoss, self).__init__() names = ['g1v', 'g2v', 'g1s', 'g2s', 'c1v', 'c2v', 'c1s', 'c2s'] self.loss_names = ['loss_' + n for n in names] for key in ['lambda_' + n for n in names]: setattr(self, key, getattr(args, key)) self.l1loss = nn.L1Loss() self.l2loss = nn.MSELoss() def forward(self, data, label, pred_s=None, pred_v=None, recon_s=None, recon_v=None): cal_loss = lambda x, y: (self.l1loss(x, y), self.l2loss(x, y)) loss_g1v, loss_g2v, loss_g1s, loss_g2s = [0] * 4 if pred_v is not None and (self.lambda_g1v != 0 or self.lambda_g2v != 0): loss_g1v, loss_g2v = cal_loss(pred_v, label) if pred_s is not None and (self.lambda_g1s != 0 or self.lambda_g2s != 0): loss_g1s, loss_g2s = cal_loss(pred_s, data) loss_c1v, loss_c2v, loss_c1s , loss_c2s = [0] * 4 if recon_v is not None and (self.lambda_c1v != 0 or self.lambda_c2v != 0): loss_c1v, loss_c2v = cal_loss(recon_v, label) if recon_s is not None and (self.lambda_c1s != 0 or self.lambda_c2s != 0): loss_c1s, loss_c2s = cal_loss(recon_s, data) loss = loss_g1v * self.lambda_g1v + loss_g2v * self.lambda_g2v + \ loss_g1s * self.lambda_g1s + loss_g2s * self.lambda_g2s + \ loss_c1v * self.lambda_c1v + loss_c2v * self.lambda_c2v + \ loss_c1s * self.lambda_c1s + loss_c2s * self.lambda_c2s scope = locals() return loss, { k: eval(k, scope) for k in self.loss_names } def accuracy(output, target, topk=(1,)): """Computes the accuracy over the k top predictions for the specified values of k""" with torch.no_grad(): maxk = max(topk) batch_size = target.size(0) _, pred = output.topk(maxk, 1, True, True) pred = pred.t() correct = pred.eq(target[None]) res = [] for k in topk: correct_k = correct[:k].flatten().sum(dtype=torch.float32) res.append(correct_k * (100.0 / batch_size)) return res def mkdir(path): try: os.makedirs(path) except OSError as e: if e.errno != errno.EEXIST: raise def setup_for_distributed(is_master): """ This function disables printing when not in master process """ import builtins as __builtin__ builtin_print = __builtin__.print def print(*args, **kwargs): force = kwargs.pop('force', False) if is_master or force: builtin_print(*args, **kwargs) __builtin__.print = print def is_dist_avail_and_initialized(): if not dist.is_available(): return False if not dist.is_initialized(): return False return True def get_world_size(): if not is_dist_avail_and_initialized(): return 1 return dist.get_world_size() def get_rank(): if not is_dist_avail_and_initialized(): return 0 return dist.get_rank() def is_main_process(): return get_rank() == 0 def save_on_master(*args, **kwargs): if is_main_process(): torch.save(*args, **kwargs) def init_distributed_mode(args): if 'RANK' in os.environ and 'WORLD_SIZE' in os.environ: args.rank = int(os.environ["RANK"]) args.world_size = int(os.environ['WORLD_SIZE']) args.local_rank = int(os.environ['LOCAL_RANK']) elif 'SLURM_PROCID' in os.environ and args.world_size > 1: args.rank = int(os.environ['SLURM_PROCID']) args.local_rank = args.rank % torch.cuda.device_count() elif hasattr(args, "rank"): pass else: print('Not using distributed mode') args.distributed = False return args.distributed = True torch.cuda.set_device(args.local_rank) args.dist_backend = 'nccl' print('| distributed init (rank {}): {}'.format( args.rank, args.dist_url), flush=True) torch.distributed.init_process_group(backend=args.dist_backend, init_method=args.dist_url, world_size=args.world_size, rank=args.rank) setup_for_distributed(args.rank == 0) class Wasserstein_GP(nn.Module): def __init__(self, device, lambda_gp): super(Wasserstein_GP, self).__init__() self.device = device self.lambda_gp = lambda_gp def forward(self, real, fake, model): gradient_penalty = self.compute_gradient_penalty(model, real, fake) loss_real = torch.mean(model(real)) loss_fake = torch.mean(model(fake)) loss = -loss_real + loss_fake + gradient_penalty * self.lambda_gp return loss, loss_real-loss_fake, gradient_penalty def compute_gradient_penalty(self, model, real_samples, fake_samples): alpha = torch.rand(real_samples.size(0), 1, 1, 1, device=self.device) interpolates = (alpha * real_samples + ((1 - alpha) * fake_samples)).requires_grad_(True) d_interpolates = model(interpolates) gradients = autograd.grad( outputs=d_interpolates, inputs=interpolates, grad_outputs=torch.ones(real_samples.size(0), d_interpolates.size(1)).to(self.device), create_graph=True, retain_graph=True, only_inputs=True, )[0] gradients = gradients.view(gradients.size(0), -1) gradient_penalty = ((gradients.norm(2, dim=1) - 1) ** 2).mean() return gradient_penalty # Modified from https://gist.github.com/alper111/8233cdb0414b4cb5853f2f730ab95a49 class VGGPerceptualLoss(nn.Module): def __init__(self, resize=True): super(VGGPerceptualLoss, self).__init__() blocks = [] blocks.append(vgg16(pretrained=True).features[:4].eval()) # relu1_2 blocks.append(vgg16(pretrained=True).features[4:9].eval()) # relu2_2 blocks.append(vgg16(pretrained=True).features[9:16].eval()) # relu3_3 blocks.append(vgg16(pretrained=True).features[16:23].eval()) # relu4_3 for bl in blocks: for p in bl: p.requires_grad = False self.blocks = nn.ModuleList(blocks) self.transform = nn.functional.interpolate self.resize = resize self.register_buffer("mean", torch.tensor([0.485, 0.456, 0.406]).view(1, 3, 1, 1)) self.register_buffer("std", torch.tensor([0.229, 0.224, 0.225]).view(1, 3, 1, 1)) self.l1loss = nn.L1Loss() self.l2loss = nn.MSELoss() def forward(self, input, target, rescale=True, feature_layers=[1]): input = input.view(-1, 1, input.shape[-2], input.shape[-1]).repeat(1, 3, 1, 1) target = target.view(-1, 1, target.shape[-2], target.shape[-1]).repeat(1, 3, 1, 1) if rescale: # from [-1, 1] to [0, 1] input = input / 2 + 0.5 target = target / 2 + 0.5 input = (input-self.mean) / self.std target = (target-self.mean) / self.std if self.resize: input = self.transform(input, mode='bilinear', size=(224, 224), align_corners=False) target = self.transform(target, mode='bilinear', size=(224, 224), align_corners=False) loss_l1, loss_l2 = 0.0, 0.0 x = input y = target for i, block in enumerate(self.blocks): x = block(x) y = block(y) if i in feature_layers: loss_l1 += self.l1loss(x, y) loss_l2 += self.l2loss(x, y) return loss_l1, loss_l2 def cal_psnr(gt, data, max_value): mse = np.mean((gt - data) ** 2) if (mse == 0): return 100 return 20 * np.log10(max_value / np.sqrt(mse)) ================================================ FILE: vis.py ================================================ import os import torch import matplotlib matplotlib.use('Agg') import matplotlib.pyplot as plt import numpy as np from matplotlib.colors import ListedColormap # Load colormap for velocity map visualization rainbow_cmap = ListedColormap(np.load('rainbow256.npy')) def plot_velocity(output, target, path, vmin=None, vmax=None): fig, ax = plt.subplots(1, 2, figsize=(11, 5)) if vmin is None or vmax is None: vmax, vmin = np.max(target), np.min(target) im = ax[0].matshow(output, cmap=rainbow_cmap, vmin=vmin, vmax=vmax) ax[0].set_title('Prediction', y=1.08) ax[1].matshow(target, cmap=rainbow_cmap, vmin=vmin, vmax=vmax) ax[1].set_title('Ground Truth', y=1.08) for axis in ax: # axis.set_xticks(range(0, 70, 10)) # axis.set_xticklabels(range(0, 1050, 150)) # axis.set_yticks(range(0, 70, 10)) # axis.set_yticklabels(range(0, 1050, 150)) axis.set_xticks(range(0, 70, 10)) axis.set_xticklabels(range(0, 700, 100)) axis.set_yticks(range(0, 70, 10)) axis.set_yticklabels(range(0, 700, 100)) axis.set_ylabel('Depth (m)', fontsize=12) axis.set_xlabel('Offset (m)', fontsize=12) fig.colorbar(im, ax=ax, shrink=0.75, label='Velocity(m/s)') plt.savefig(path) plt.close('all') def plot_single_velocity(label, path): plt.rcParams.update({'font.size': 16}) fig, ax = plt.subplots(1, 1, figsize=(8, 6)) vmax, vmin = np.max(label), np.min(label) im = ax.matshow(label, cmap=rainbow_cmap, vmin=vmin, vmax=vmax) # im = ax.matshow(label, cmap="gist_rainbow", vmin=vmin, vmax=vmax) # nx = label.shape[0] # ax.set_aspect(aspect=1) # ax.set_xticks(range(0, nx, int(150//(1050/nx)))[:7]) # ax.set_xticklabels(range(0, 1050, 150)) # ax.set_yticks(range(0, nx, int(150//(1050/nx)))[:7]) # ax.set_yticklabels(range(0, 1050, 150)) # ax.set_title('Offset (m)', y=1.08) # ax.set_ylabel('Depth (m)', fontsize=18) fig.colorbar(im, ax=ax, shrink=1.0, label='Velocity(m/s)') plt.savefig(path) plt.close('all') # def plot_seismic(output, target, path, vmin=-1e-5, vmax=1e-5): # fig, ax = plt.subplots(1, 3, figsize=(15, 6)) # im = ax[0].matshow(output, aspect='auto', cmap='gray', vmin=vmin, vmax=vmax) # ax[0].set_title('Prediction') # ax[1].matshow(target, aspect='auto', cmap='gray', vmin=vmin, vmax=vmax) # ax[1].set_title('Ground Truth') # ax[2].matshow(output - target, aspect='auto', cmap='gray', vmin=vmin, vmax=vmax) # ax[2].set_title('Difference') # fig.colorbar(im, ax=ax, format='%.1e') # plt.savefig(path) # plt.close('all') def plot_seismic(output, target, path, vmin=-1e-5, vmax=1e-5): fig, ax = plt.subplots(1, 3, figsize=(20, 5)) # fig, ax = plt.subplots(1, 2, figsize=(11, 5)) aspect = output.shape[1]/output.shape[0] im = ax[0].matshow(target, aspect=aspect, cmap='gray', vmin=vmin, vmax=vmax) ax[0].set_title('Ground Truth') ax[1].matshow(output, aspect=aspect, cmap='gray', vmin=vmin, vmax=vmax) ax[1].set_title('Prediction') ax[2].matshow(output - target, aspect='auto', cmap='gray', vmin=vmin, vmax=vmax) ax[2].set_title('Difference') # for axis in ax: # axis.set_xticks(range(0, 70, 10)) # axis.set_xticklabels(range(0, 1050, 150)) # axis.set_title('Offset (m)', y=1.1) # axis.set_ylabel('Time (ms)', fontsize=12) # fig.colorbar(im, ax=ax, shrink=1.0, pad=0.01, label='Amplitude') fig.colorbar(im, ax=ax, shrink=0.75, label='Amplitude') plt.savefig(path) plt.close('all') def plot_single_seismic(data, path): nz, nx = data.shape plt.rcParams.update({'font.size': 18}) vmin, vmax = np.min(data), np.max(data) fig, ax = plt.subplots(1, 1, figsize=(8, 6)) im = ax.matshow(data, aspect='auto', cmap='gray', vmin=vmin * 0.01, vmax=vmax * 0.01) ax.set_aspect(aspect=nx/nz) ax.set_xticks(range(0, nx, int(300//(1050/nx)))[:5]) ax.set_xticklabels(range(0, 1050, 300)) ax.set_title('Offset (m)', y=1.08) ax.set_yticks(range(0, nz, int(200//(1000/nz)))[:5]) ax.set_yticklabels(range(0, 1000, 200)) ax.set_ylabel('Time (ms)', fontsize=18) fig.colorbar(im, ax=ax, shrink=1.0, pad=0.01, label='Amplitude') plt.savefig(path) plt.close('all')