PyTorch 1D GAN library that provides you with modules, utilities, and metrics to create GAN models easily
Project description
repro-gan
repro-gan is an open-source PyTorch 1D GAN library that provides you with modules, utilities, and metrics to create GAN models easily. The main goal of this library is to improve the reproducibility of 1D GANs and make it easier for researchers and developers to experiment with GAN models.
Features
- Customizable modules for building discriminator and generator neural networks
- Utility functions such as tensorboard and loggers for plotting loss and probability values
- FID score calculation for evaluating the performance of GAN models
- Out-of-the-box GAN and WGAN-GP models for reproducible GANs
- Composible loss functions in variety
Usage
Example usage for building a simple WGAN-GP model
class Discriminator(WGANGPBaseDiscriminator):
def __init__(self, **kwargs):
super().__init__(channels=64)
self.block1 = DBlock(in_channels=64, out_channels=64, kernel_size=3, stride=1, padding=1, downsample=True)
self.block2 = DBlock(in_channels=64, out_channels=64, kernel_size=3, stride=1, padding=1, downsample=True)
self.block3 = DBlock(in_channels=64, out_channels=64, kernel_size=3, stride=1, padding=1, downsample=True)
self.conv = nn.Conv1d(in_channels=64, out_channels=64, kernel_size=1, stride=1, padding=0)
self.end = nn.Linear(394, 1)
nn.init.normal_(self.conv.weight.data, 0.0, 0.02)
nn.init.normal_(self.end.weight.data, 0.0, 0.02)
def forward(self, x):
x = x.float()
h = self.block1(x)
h = self.block2(h)
h = self.block3(h)
h = self.conv(h)
h = self.end(h)
return h.view(h.shape[0], 64)
class Generator(WGANGPBaseGenerator):
def __init__(self, **kwargs):
super().__init__(channels=64, nz=3152) # noise shape will start off as real_data.shape[0] x channels x nz
self.block1 = GBlock(in_channels=64, out_channels=64, kernel_size=3, stride=1, padding=1, upsample=False)
self.block2 = GBlock(in_channels=64, out_channels=64, kernel_size=3, stride=1, padding=1, upsample=False)
self.block3 = GBlock(in_channels=64, out_channels=64, kernel_size=3, stride=1, padding=1, upsample=False)
self.conv = nn.Conv1d(in_channels=64, out_channels=64, kernel_size=1, stride=1, padding=0)
nn.init.normal_(self.conv.weight.data, 0.0, 0.02)
def forward(self, x):
x = x.float()
h = self.block1(x)
h = self.block2(h)
h = self.block3(h)
h = self.conv(h)
return h
device = torch.device('cuda' if torch.cuda.is_available() else "cpu")
data = torch.tensor(np.load("./examples/test_data.npy")).detach() # torch.Size([2, 64, 3152])
dataloader = DataLoader(
TensorDataset(data),
batch_size=1,
shuffle=True
)
netD = Discriminator().to(device)
netG = Generator().to(device)
optD = optim.Adam(netD.parameters(), 0.0001, (0.5, 0.99))
optG = optim.Adam(netG.parameters(), 0.0001, (0.5, 0.99))
trainer = Trainer(
netD=netD, # netD=netD.module to use GPU
netG=netG, # netD=netD to use CPU
optD=optD,
optG=optG,
n_dis=1,
num_steps=3,
dataloader=dataloader,
save_steps=1,
print_steps=1,
log_steps=1,
log_dir='./examples/logs',
device=device)
trainer.train()
Tensorboard
Open terminal and use logdir to point to your model's checkpoints
tensorboard --logdir ./logs
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file repro_gan-0.0.1.tar.gz.
File metadata
- Download URL: repro_gan-0.0.1.tar.gz
- Upload date:
- Size: 15.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea18251bd86ceb9ece4e6455b1c1d9629800b08a5eceba9a408c5aaf8608fb30
|
|
| MD5 |
f85347bb261a7d486d7f7110627f7430
|
|
| BLAKE2b-256 |
0eebf337e190ca8df0f8fcb71d9f0c682c56e2a74feee4ef09e9bcce1f926877
|
File details
Details for the file repro_gan-0.0.1-py3-none-any.whl.
File metadata
- Download URL: repro_gan-0.0.1-py3-none-any.whl
- Upload date:
- Size: 17.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0cabdb3596a17bdb0d522827277d216d1eb9127fde0b4f3d77e61ab765ca895
|
|
| MD5 |
f60a55edd1b7fee6a98bd1156bcb8424
|
|
| BLAKE2b-256 |
ac64450a7ca7905372771873bb77e3e98f1854751f6d9d46cd60b68a794ba63a
|