Deepwave

A high-performance wave propagation module for PyTorch.

Deepwave enables wave propagation to be treated as a differentiable layer within deep learning pipelines. It combines the ease of use of PyTorch with the speed of custom C/CUDA kernels.

PyTorch CUDA C++ Differentiable Programming
View on GitHub Read Documentation
# Example: Differentiable FWI with Deepwave
import torch
import deepwave

# Forward pass (Auto-grad enabled)
out = deepwave.scalar(v, grid_spacing, dt,
source_amplitudes, source_locations,
receiver_locations)[-1]

# Backpropagate error
loss = criterion(out, observed_data)
loss.backward() # Gradients calc'd via C/CUDA

Selected Publications

Active Learning for Seismic Processing Parameterisation
ArXiv 2021

Applying active learning to optimally select samples for labelling in first break picking. An approach to assist labour-intensive processing tasks without resorting to black-box neural networks.

Read Article →
Seismic Data Denoising and Deblending Using Deep Learning
ArXiv 2019

A U-net constructed with a pretrained ResNet, incorporating information from neighbouring gathers, to denoise and deblend real datasets from diverse geological settings.

Read Article →
Generative Adversarial Networks for Model Order Reduction in FWI
ArXiv 2018

Integrating a GAN into seismic Full-Waveform Inversion to reduce model parameters and restrict inverted models to plausible geological structures.

Read Article →
Seismic Full-Waveform Inversion Using Deep Learning Tools
ArXiv 2018

Demonstrating that conventional FWI algorithms can be constructed as recurrent neural networks, enabling implementation via standard deep learning frameworks.

Read Article →