# Wasserstein Generative Adversarial Network

A burn implementation of an example WGAN model to generate MNIST digits inspired by
[the PyTorch implementation](https://bytepawn.com/training-a-pytorch-wasserstain-mnist-gan-on-google-colab.html).
Please note that better performance maybe gained by adopting a convolution layer in
[some other models](https://github.com/Lornatang/WassersteinGAN-PyTorch).

## Usage

## Training

```sh
# Cuda backend
cargo run --example wgan-mnist --release --features cuda

# Wgpu backend
cargo run --example wgan-mnist --release --features wgpu

# Tch GPU backend
export TORCH_CUDA_VERSION=cu128 # Set the cuda version
cargo run --example wgan-mnist --release --features tch-gpu

# Tch CPU backend
cargo run --example wgan-mnist --release --features tch-cpu

# Flex backend (CPU)
cargo run --example wgan-mnist --release --features flex                   # f32
```

### Generating

To generate a sample of images, you can use `wgan-generate`. The same feature flags are used to select a backend.

```sh
cargo run --example wgan-generate --release --features cuda
```
