GAN 生成对抗网络实现
GAN 通过生成器和判别器的对抗训练实现数据生成,是最早成功的深度生成模型。
DCGAN 实现
python
class Generator(nn.Module):
def __init__(self, latent_dim=100, img_channels=3):
super().__init__()
self.net = nn.Sequential(
nn.ConvTranspose2d(latent_dim, 512, 4, 1, 0, bias=False),
nn.BatchNorm2d(512), nn.ReLU(True),
nn.ConvTranspose2d(512, 256, 4, 2, 1, bias=False),
nn.BatchNorm2d(256), nn.ReLU(True),
nn.ConvTranspose2d(256, 128, 4, 2, 1, bias=False),
nn.BatchNorm2d(128), nn.ReLU(True),
nn.ConvTranspose2d(128, img_channels, 4, 2, 1, bias=False),
nn.Tanh()
)
class Discriminator(nn.Module):
def __init__(self, img_channels=3):
super().__init__()
self.net = nn.Sequential(
nn.Conv2d(img_channels, 128, 4, 2, 1), nn.LeakyReLU(0.2),
nn.Conv2d(128, 256, 4, 2, 1, bias=False),
nn.BatchNorm2d(256), nn.LeakyReLU(0.2),
nn.Conv2d(256, 1, 4, 1, 0), nn.Sigmoid()
)模式崩塌
GAN 的经典问题是模式崩塌——生成器只产生少数几种输出。WGAN、StyleGAN 等变体通过改进损失函数和架构缓解了这个问题。