vegans.models.unconditional 包

子模块

vegans.models.unconditional.AAE 模块

AAE

实现了对抗自编码器 [1]。

与其使用 Kullback Leibler 散度来改进潜在空间分布,我们使用判别器来确定潜在向量的“真实性”。

损失
  • 编码器:二元交叉熵 + 均方误差

  • 生成器:均方误差

  • 对抗网络:二元交叉熵

默认优化器
  • torch.optim.Adam

自定义参数
  • lambda_z:用于计算潜在 z 维度真实性的判别器损失权重。

参考文献

1

https://arxiv.org/pdf/1511.05644.pdf

class vegans.models.unconditional.AAE.AAE(generator, adversary, encoder, x_dim, z_dim, optim=None, optim_kwargs=None, lambda_z=10, adv_type='Discriminator', feature_layer=None, fixed_noise_size=32, device=None, ngpu=0, folder='./veganModels/AAE', secure=True)[source]

基类:vegans.models.unconditional.AbstractGenerativeModel.AbstractGenerativeModel

参数
  • generator (nn.Module) – 生成器架构。在真实空间生成输出。

  • adversary (nn.Module) – 对抗网络架构。对真实样本和虚假样本生成预测以区分它们。

  • encoder (nn.Module) – 编码器架构。在潜在空间生成预测。

  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • lambda_z (float) – 用于计算潜在 z 维度真实性的判别器损失权重。

  • adv_type ("Discriminator", "Critic" or "Autoencoder") – 指示将使用哪种对抗网络架构。

  • feature_layer (torch.nn.*) – 用于计算特征损失的输出层。应来自判别器或评论器。如果 feature_layer 不为 None,则原始生成器损失将替换为特征损失,该特征损失介绍于 此处

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

calculate_losses(X_batch, Z_batch, who=None)[source]
encode(x)[source]

vegans.models.unconditional.AbstractGAN1v1 模块

class vegans.models.unconditional.AbstractGAN1v1.AbstractGAN1v1(generator, adversary, x_dim, z_dim, adv_type, optim=None, optim_kwargs=None, feature_layer=None, fixed_noise_size=32, device=None, folder=None, ngpu=0, secure=True, _called_from_conditional=False)[source]

基类:vegans.models.unconditional.AbstractGenerativeModel.AbstractGenerativeModel

具有一个生成器和一个判别器/评论器结构的 GAN 抽象类。示例包括原始的 VanillaGANWassersteinGANWassersteinGANGP

参数
  • generator (nn.Module) – 生成器架构。在真实空间生成输出。

  • adversary (nn.Module) – 对抗网络架构。对真实样本和虚假样本生成预测以区分它们。

  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • feature_layer (torch.nn.*) – 用于计算特征损失的输出层。应来自判别器或评论器。如果 feature_layer 不为 None,则原始生成器损失将替换为特征损失,该特征损失介绍于 此处

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • lambda_grad (float) – 梯度重建损失的权重。将梯度范数推向 1。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

calculate_losses(X_batch, Z_batch, who=None)[source]

使用 1v1 架构计算 GAN 的损失。

此方法在 AbstractGenerativeModelfit() 循环中调用。

参数
  • X_batch (torch.Tensor) – 当前的 x 批次。

  • Z_batch (torch.Tensor) – 当前的 z 批次。

  • who (None, optional) – 应训练的网络的名称。

vegans.models.unconditional.AbstractGANGAE 模块

class vegans.models.unconditional.AbstractGANGAE.AbstractGANGAE(generator, adversary, encoder, x_dim, z_dim, optim=None, optim_kwargs=None, adv_type='Discriminator', feature_layer=None, fixed_noise_size=32, device=None, folder=None, ngpu=0, secure=True, _called_from_conditional=False)[source]

基类:vegans.models.unconditional.AbstractGenerativeModel.AbstractGenerativeModel

具有一个生成器、一个判别器/评论器和一个编码器结构的 GAN 抽象类。示例包括 LRGANVAEGANBicycleGAN

参数
  • generator (nn.Module) – 生成器架构。在真实空间生成输出。

  • adversary (nn.Module) – 对抗网络架构。对真实样本和虚假样本生成预测以区分它们。

  • encoder (nn.Module) – 编码器架构。在潜在空间生成预测。

  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • feature_layer (torch.nn.*) – 用于计算特征损失的输出层。应来自判别器或评论器。如果 feature_layer 不为 None,则原始生成器损失将替换为特征损失,该特征损失介绍于 此处

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • lambda_grad (float) – 梯度重建损失的权重。将梯度范数推向 1。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

calculate_losses(X_batch, Z_batch, who=None)[source]

使用 1v1 架构计算 GAN 的损失。

此方法在 AbstractGenerativeModelfit() 循环中调用。

参数
  • X_batch (torch.Tensor) – 当前的 x 批次。

  • Z_batch (torch.Tensor) – 当前的 z 批次。

  • who (None, optional) – 应训练的网络的名称。

encode(x)[source]

vegans.models.unconditional.AbstractGenerativeModel 模块

class vegans.models.unconditional.AbstractGenerativeModel.AbstractGenerativeModel(x_dim, z_dim, optim, optim_kwargs, feature_layer, fixed_noise_size, device, ngpu, folder, secure)[source]

基类:abc.ABC

AbstractGenerativeModel 是 vegans 最基本的构建块。所有 GAN 实现都应至少继承此类。如果实现了条件版本,请参阅 AbstractConditionalGenerativeModel

参数
  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • feature_layer (torch.nn.*) – 用于计算特征损失的输出层。应来自判别器或评论器。如果 feature_layer 不为 None,则原始生成器损失将替换为特征损失,该特征损失介绍于 此处

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

_build_images(images, labels=None)[source]

构建包含所有图像的 matplotlib 图。

参数

images (torch.Tensor()) – 包含要由 matplotlib 绘制的图像的 torch Tensor。

返回值

fig, axs – 包含图以及所有独立轴对象的对象。

返回类型

plt.Figure, np.array

_calculate_feature_loss(X_real, X_fake)[source]

如果 self.feature_layer 不为 None,则计算特征损失。

每个网络的构造函数都接受 feature_layer 参数。如果不为 None,则应指定判别器/评论器的一个层。将计算特征损失,该损失是指定 self.feature_layer 对真实样本和虚假样本输出之间的均方误差。

参数
  • X_real (torch.Tensor) – 真实样本。

  • X_fake (torch.Tensor) – 虚假样本。

_check_dict_keys(param_dict, where)[source]

检查 param_dict 是否具有正确的形式。

正确的形式是每个网络都具有 {“Network1”: value1, “Network2”: value2, …}。此工具函数检查 self.neural_nets 中的每个网络是否在 param_dict 中有条目,以及 param_dict 中的每个条目是否在 self.neural_nets 中存在。

参数
  • param_dict (TYPE) – 参数字典

  • where (TYPE) – 指定调用函数的 位置,以便产生有意义的 KeyError

引发

KeyError – 如果 param_dict 不是指定的形式。

_create_steps(steps)[source]

创建 self.steps 字典。

创建的字典必须是 {“Network1”: steps1, “Network2”: steps2, …} 的形式。训练期间,“Network1”将训练 steps1 步,以此类推。功能类似于 self_define_optimizers()

参数

steps (None, dict) – 如果不为 None,则期望一个 {“Network1”: steps1, “Network2”: steps2, …} 形式的字典。此字典也可能被部分填充。

_define_optimizers(optim, optim_kwargs)[source]

定义优化器字典。

在此步骤后,self.optimizers 必须存在并具有 {“Network1”: optimizer1, “Network2”: optimizer2, …} 的形式。

参数
  • optim (torch.optim or dict) – 如果是 dict,则必须是 {“Network1”: torch.optim1, “Network2”: torch.optim2, …} 的形式。如果字典中没有指定某个网络作为键,则将获取默认优化器 (self._default_optimizer())。

  • optim_kwargs (dict) – 如果是 dict,则必须是 {“Network1”: optim_kwargs1, “Network2”: optim_kwargs1, …} 的形式。如果字典中没有指定某个网络作为键,则不传递参数(即 {})。

_get_batch(X_train, y_train, X_test, y_test, batch_size)[source]

返回训练和测试数据的第一批次用于一致性检查。

_log_scalars(step, writer)[source]

使用 tensorboard 记录所有标量。

_save_losses_plot()[source]

self.folder 路径中创建 losses.png 图。

_set_up_data(X_train, y_train, X_test, y_test, batch_size)[source]

如果 X_train / X_test 不是数据加载器,则创建它们。

同时断言其输入形状以保持一致性。

_set_up_saver(print_every, save_model_every, save_images_every, save_losses_every, nr_batches)[source]

如果传递字符串,则计算保存指示器。同时在 self.folder 中创建相应的文件夹。

返回值

返回类型

将所有保存指示器作为整数返回。

_set_up_training(X_train, y_train, X_test, y_test, epochs, batch_size, steps, print_every, save_model_every, save_images_every, save_losses_every, enable_tensorboard)[source]

创建数据加载器、用于 tensorboard 的 SummaryWriters 并转换保存指示器。

此函数创建训练期间所需的所有数据,例如数据加载器和保存步骤。它还创建超参数字典和 steps 字典。

_string_to_batchnr(log_string, nr_batches, name)[source]

将“0.2e”形式的字符串转换为 0.2 并执行基本的健全性检查。

_summarise_batch(batch, max_batches, epoch, max_epochs, print_every)[source]

在指定数量的批次后打印摘要统计信息。

参数
  • batch (int) – 当前批次。

  • max_batches (int) – 总批次的最大数量。

  • epoch (int) – 当前周期。

  • max_epochs (int) – 总周期的最大数量。

  • print_every (int) – 每多少批次后应打印摘要。

abstract calculate_losses(X_batch, Z_batch, who=None)[source]
eval()[source]

将所有网络设置为评估模式。

fit(X_train, X_test=None, epochs=5, batch_size=32, steps=None, print_every='1e', save_model_every=None, save_images_every=None, save_losses_every='1e', enable_tensorboard=False)[source]

训练模型,迭代所有包含的网络。

参数
  • X_train (np.array or torch.utils.data.DataLoader) – 生成网络的训练数据。通常是图像。

  • X_test (np.array, optional) – 生成网络的测试数据。必须与 X_train 具有相同的形状。

  • epochs (int, optional) – 训练期间执行的周期数(遍历训练数据集的次数)。

  • batch_size (int, optional) – 从 X_train 创建数据加载器时使用的批次大小。如果为 X_train 传递了 torch.utils.data.DataLoader,则忽略此参数。

  • steps (dict, optional) – 包含网络名称的字典,用于指示它们应该训练多少次,例如 {“Generator”: 5} 表示生成器训练 5 次,而所有其他网络训练一次。

  • print_every (int, string, optional) – 指示训练数据损失应该每多少批次打印到控制台。也可以是“0.25e”(每周期 4 次)、“1e”(每周期 1 次)或“3e”(每第三周期)等形式的字符串。

  • save_model_every (int, string, optional) – 指示模型应该每多少批次保存一次。也可以是“0.25e”(每周期 4 次)、“1e”(每周期 1 次)或“3e”(每第三周期)等形式的字符串。

  • save_images_every (int, string, optional) – 指示损失和 fixed_noise 的图像应该每多少批次保存一次。也可以是“0.25e”(每周期 4 次)、“1e”(每周期 1 次)或“3e”(每第三周期)等形式的字符串。

  • save_losses_every (int, string, optional) – 指示训练和测试数据的损失应该每多少批次计算一次。也可以是“0.25e”(每周期 4 次)、“1e”(每周期 1 次)或“3e”(每第三周期)等形式的字符串。

  • enable_tensorboard (bool, optional) – 标志,指示是否应创建子目录 folder/tensorboard 来记录损失和图像。

generate(z=None, n=None)[source]

使用生成器/解码器生成输出。

参数
  • z (None, optional) – 用于生成输出的潜在输入向量。

  • n (None, optional) – 要生成的输出数量。

返回值

生成器/解码器生成的输出。

返回类型

np.array

get_hyperparameters()[source]

返回包含所有相关超参数的字典。

返回值

包含所有相关超参数的字典。

返回类型

dict

get_losses(by_epoch=False, agg=None)[source]

获取训练期间记录的损失

参数
  • by_epoch (bool, optional) – 如果为 true,则每个 logged_loss 返回每个周期一个损失值。否则,频率由 fitsave_losses_every 参数给出,即 save_losses_every=10 每 10 个批次保存一次损失,save_losses_every=”0.25e 每周期保存 4 次损失。

  • agg (None, optional) – 如果 by_epoch 为 true,则使用的聚合函数,否则忽略。默认值是 np.mean,用于计算一个周期中所有批次的平均值。

返回值

losses_dict – 包含训练期间记录的所有损失类型的字典。

返回类型

dict

get_number_params()[source]

返回模型中的参数数量。

返回值

包含每个网络参数数量的字典。

返回类型

dict

get_training_results(by_epoch=False, agg=None)[source]

训练后调用此函数以获取 fixed_noise 样本和损失。

参数
  • by_epoch (bool, optional) – 如果为 true,则每个 logged_loss 返回每个周期一个损失值。否则,频率由 fitsave_losses_every 参数给出,即 save_losses_every=10 每 10 个批次保存一次损失,save_losses_every=”0.25e 每周期保存 4 次损失。

  • agg (None, optional) – 如果 by_epoch 为 true,则使用的聚合函数,否则忽略。默认值是 np.mean,用于计算一个周期中所有批次的平均值。

返回值

  • samples (np.array) – 使用最终模型为 fixed_noise 生成的图像。

  • losses_dict (dict) – 包含训练期间记录的所有损失类型的字典。

static load(path)[source]

加载已训练的模型。

参数

path (TYPE) – 保存文件的路径。

返回值

已训练的模型

返回类型

AbstractGenerativeModel

predict(x)[source]

使用评论器/判别器预测输入是真实的还是虚假的。

参数

x (np.array) – 要预测的图像或样本。

返回值

数组,其中每个 x 对应一个输出,指示输入的真实性。

返回类型

np.array

sample(n)[source]

从潜在分布中采样。

参数

n (int) – 从潜在分布中抽取的样本数量。

返回值

形状为 [n, *z_dim] 的随机数

返回类型

torch.tensor

save(name=None)[source]

将模型作为 torch / pickle 对象保存在模型文件夹中。

参数

name (str, optional) – 保存文件的名称。构造函数中指定的文件夹用于绝对路径。

summary(save=False)[source]

以 Keras 风格的方式打印模型摘要。

参数

save (bool, optional) – 如果为 true,则摘要保存到模型文件夹中,否则打印到控制台。

to(device)[source]

将所有网络映射到设备。

train()[source]

将所有网络设置为训练模式。

vegans.models.unconditional.BicycleGAN 模块

BicycleGAN

实现了 BicycleGAN [1],它是 VAEGAN 和 LRGAN 的组合。

它利用了变分自编码器 (Variational Autoencoder) 的两个步骤(Kullback-Leibler 损失),并使用相同的编码器架构对生成的图像进行潜在回归。

损失
  • 生成器:二元交叉熵 + L1-潜在损失 + L1-重建损失

  • 判别器:二元交叉熵

  • 编码器:Kullback-Leibler 损失 + L1-潜在损失 + L1-重建损失

默认优化器
  • torch.optim.Adam

自定义参数
  • lambda_KL:用于计算潜在空间中 Kullback-Leibler 散度的编码器损失权重。

  • lambda_x:真实 x 维度重建损失的权重。

  • lambda_z:潜在 z 维度重建损失的权重。

参考文献

1

https://arxiv.org/pdf/1711.11586.pdf

class vegans.models.unconditional.BicycleGAN.BicycleGAN(generator, adversary, encoder, x_dim, z_dim, optim=None, optim_kwargs=None, lambda_KL=10, lambda_x=10, lambda_z=10, adv_type='Discriminator', feature_layer=None, fixed_noise_size=32, device=None, ngpu=0, folder='./veganModels/BicycleGAN', secure=True)[source]

基类:vegans.models.unconditional.AbstractGANGAE.AbstractGANGAE

参数
  • generator (nn.Module) – 生成器架构。在真实空间生成输出。

  • adversary (nn.Module) – 对抗网络架构。对真实样本和虚假样本生成预测以区分它们。

  • encoder (nn.Module) – 编码器架构。在潜在空间生成预测。

  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • lambda_KL (float) – 用于计算潜在空间中 Kullback-Leibler 散度的编码器损失权重。

  • lambda_x (float) – 真实 x 维度重建损失的权重。

  • lambda_z (float) – 潜在 z 维度重建损失的权重。

  • adv_type ("Discriminator", "Critic" or "Autoencoder") – 指示将使用哪种对抗网络架构。

  • feature_layer (torch.nn.*) – 用于计算特征损失的输出层。应来自判别器或评论器。如果 feature_layer 不为 None,则原始生成器损失将替换为特征损失,该特征损失介绍于 此处

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

vegans.models.unconditional.EBGAN 模块

EBGAN

实现了基于能量的 GAN [1]。

使用自编码器作为对抗网络结构。

损失
  • 生成器:L2(均方误差)

  • 自编码器:L2(均方误差)

默认优化器
  • torch.optim.Adam

自定义参数
  • m:铰链损失的截断值。请参阅参考文献以获取更多信息。

参考文献

1

https://arxiv.org/pdf/1609.03126.pdf

class vegans.models.unconditional.EBGAN.EBGAN(generator, adversary, x_dim, z_dim, optim=None, optim_kwargs=None, m=None, feature_layer=None, fixed_noise_size=32, device=None, ngpu=None, folder='./veganModels/EBGAN', secure=True)[source]

基类:vegans.models.unconditional.AbstractGAN1v1.AbstractGAN1v1

参数
  • generator (nn.Module) – 生成器架构。在真实空间生成输出。

  • adversary (nn.Module) – 对抗网络架构。对真实样本和虚假样本生成预测以区分它们。

  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • m (float) – 铰链损失的截断值。请参阅参考文献以获取更多信息。

  • feature_layer (torch.nn.*) – 用于计算特征损失的输出层。应来自判别器或评论器。如果 feature_layer 不为 None,则原始生成器损失将替换为特征损失,该特征损失介绍于 此处

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

vegans.models.unconditional.InfoGAN 模块

InfoGAN

实现了 InfoGAN [1]。

它引入了一个编码器网络,将生成器输出映射回潜在输入空间。这应该有助于防止模式崩溃并提高图像多样性。

损失
  • 生成器:二元交叉熵 + 正态对数似然 + 多项式对数似然

  • 判别器:二元交叉熵

  • 编码器:正态对数似然 + 多项式对数似然

默认优化器
  • torch.optim.Adam

自定义参数
  • c_dim_discrete:离散多项式维度数量(可能是独立多项式空间的列表)。

  • c_dim_continuous:连续正态维度数量。

  • lambda_z:潜在 z 维度重建损失的权重。

参考文献

1

https://dl.acm.org/doi/10.5555/3157096.3157340

class vegans.models.unconditional.InfoGAN.InfoGAN(generator, adversary, encoder, x_dim, z_dim, c_dim_discrete, c_dim_continuous, optim=None, optim_kwargs=None, lambda_z=10, feature_layer=None, fixed_noise_size=32, device=None, ngpu=0, folder='./veganModels/InfoGAN', secure=True)[source]

基类:vegans.models.unconditional.AbstractGenerativeModel.AbstractGenerativeModel

参数
  • generator (nn.Module) – 生成器架构。在真实空间生成输出。

  • adversary (nn.Module) – 对抗网络架构。对真实样本和虚假样本生成预测以区分它们。

  • encoder (nn.Module) – 编码器架构。在潜在空间生成预测。

  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • c_dim_discrete (int, list) – 离散多项式维度数量(可能是独立多项式空间的列表)。

  • c_dim_continuous (int) – 连续正态维度数量。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • lambda_z (float) – 潜在 z 维度重建损失的权重。

  • feature_layer (torch.nn.*) – 用于计算特征损失的输出层。应来自判别器或评论器。如果 feature_layer 不为 None,则原始生成器损失将替换为特征损失,该特征损失介绍于 此处

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

calculate_losses(X_batch, Z_batch, who=None)[source]
encode(x)[source]
generate(c=None, z=None, n=None)[source]

使用生成器/解码器生成输出。

参数
  • z (None, optional) – 用于生成输出的潜在输入向量。

  • n (None, optional) – 要生成的输出数量。

返回值

生成器/解码器生成的输出。

返回类型

np.array

sample_c(n)[source]

采样条件向量。

参数

n (int) – 要生成的输出数量。

vegans.models.unconditional.KLGAN module

KLGAN

实现了 Kullback Leibler GAN。

生成器使用 Kullback Leibler 损失。

损失
  • 生成器:Kullback-Leibler

  • 自编码器:二元交叉熵

默认优化器
  • torch.optim.Adam

自定义参数
  • eps:一个防止计算 Kullback-Leibler 散度时发生溢出和 NaN 的小值。

参考文献

1

https://www.inference.vc/an-alternative-update-rule-for-generative-adversarial-networks/

class vegans.models.unconditional.KLGAN.KLGAN(generator, adversary, x_dim, z_dim, optim=None, optim_kwargs=None, eps=1e-05, feature_layer=None, fixed_noise_size=32, device=None, ngpu=None, folder='./veganModels/KLGAN', secure=True)[source]

基类:vegans.models.unconditional.AbstractGAN1v1.AbstractGAN1v1

参数
  • generator (nn.Module) – 生成器架构。在真实空间生成输出。

  • adversary (nn.Module) – 对抗网络架构。对真实样本和虚假样本生成预测以区分它们。

  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • eps (float) – 一个防止计算 Kullback-Leibler 散度时发生溢出和 NaN 的小值。

  • feature_layer (torch.nn.*) – 用于计算特征损失的输出层。应来自判别器或评论器。如果 feature_layer 不为 None,则原始生成器损失将替换为特征损失,该特征损失介绍于 此处

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

vegans.models.unconditional.LRGAN module

LRGAN

实现了在 BicycleGAN 论文[1]中详细描述的 latent regressor GAN。

它引入了一个编码器网络,将生成器输出映射回潜在输入空间。这应该有助于防止模式崩溃并提高图像多样性。

损失
  • 生成器:二元交叉熵 + L1-latent-loss (平均绝对误差)

  • 判别器:二元交叉熵

  • 编码器:L1-latent-loss (平均绝对误差)

默认优化器
  • torch.optim.Adam

自定义参数
  • lambda_z:潜在 z 维度重建损失的权重。

参考文献

1

https://arxiv.org/pdf/1711.11586.pdf

class vegans.models.unconditional.LRGAN.LRGAN(generator, adversary, encoder, x_dim, z_dim, optim=None, optim_kwargs=None, lambda_z=10, adv_type='Discriminator', feature_layer=None, fixed_noise_size=32, device=None, ngpu=0, folder='./veganModels/LRGAN', secure=True)[source]

基类:vegans.models.unconditional.AbstractGANGAE.AbstractGANGAE

参数
  • generator (nn.Module) – 生成器架构。在真实空间生成输出。

  • adversary (nn.Module) – 对抗网络架构。对真实样本和虚假样本生成预测以区分它们。

  • encoder (nn.Module) – 编码器架构。在潜在空间生成预测。

  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • lambda_z (float) – 潜在 z 维度重建损失的权重。

  • adv_type ("Discriminator", "Critic" or "Autoencoder") – 指示将使用哪种对抗网络架构。

  • feature_layer (torch.nn.*) – 用于计算特征损失的输出层。应来自判别器或评论器。如果 feature_layer 不为 None,则原始生成器损失将替换为特征损失,该特征损失介绍于 此处

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

vegans.models.unconditional.LSGAN module

LSGAN

实现了 Least-Squares GAN[1]。

使用 L2 范数评估真实图像和虚假图像的真实度。

损失
  • 生成器:L2(均方误差)

  • 判别器:L2 (均方误差)

默认优化器
  • torch.optim.Adam

参考文献

1

https://openaccess.thecvf.com/content_ICCV_2017/papers/Mao_Least_Squares_Generative_ICCV_2017_paper.pdf

class vegans.models.unconditional.LSGAN.LSGAN(generator, adversary, x_dim, z_dim, optim=None, optim_kwargs=None, feature_layer=None, fixed_noise_size=32, device=None, ngpu=None, folder='./veganModels/LSGAN', secure=True)[source]

基类:vegans.models.unconditional.AbstractGAN1v1.AbstractGAN1v1

参数
  • generator (nn.Module) – 生成器架构。在真实空间生成输出。

  • adversary (nn.Module) – 对抗网络架构。对真实样本和虚假样本生成预测以区分它们。

  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • feature_layer (torch.nn.*) – 用于计算特征损失的输出层。应来自判别器或评论器。如果 feature_layer 不为 None,则原始生成器损失将替换为特征损失,该特征损失介绍于 此处

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

vegans.models.unconditional.VAEGAN module

VAEGAN

实现了 Variational Autoencoder Generative Adversarial Network[1]。

在潜在空间上使用 Kullback-Leibler 损失进行训练,并附加一个对抗器以获得更好的输出质量。解码器充当生成器。

损失
  • 编码器:Kullback-Leibler

  • 生成器 / 解码器:二元交叉熵

  • 对抗网络:二元交叉熵

默认优化器
  • torch.optim.Adam

自定义参数
  • lambda_KL:用于计算潜在空间中 Kullback-Leibler 散度的编码器损失权重。

  • lambda_x:真实 x 维度重建损失的权重。

参考文献

1

https://arxiv.org/pdf/1512.09300.pdf

class vegans.models.unconditional.VAEGAN.VAEGAN(generator, adversary, encoder, x_dim, z_dim, optim=None, optim_kwargs=None, lambda_KL=10, lambda_x=10, adv_type='Discriminator', feature_layer=None, fixed_noise_size=32, device=None, ngpu=0, folder='./veganModels/VAEGAN', secure=True)[source]

基类:vegans.models.unconditional.AbstractGANGAE.AbstractGANGAE

参数
  • generator (nn.Module) – 生成器架构。在真实空间生成输出。

  • adversary (nn.Module) – 对抗网络架构。对真实样本和虚假样本生成预测以区分它们。

  • encoder (nn.Module) – 编码器架构。在潜在空间生成预测。

  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • lambda_KL (float) – 用于计算潜在空间中 Kullback-Leibler 散度的编码器损失权重。

  • lambda_x (float) – 真实 x 维度重建损失的权重。

  • adv_type ("Discriminator", "Critic" or "Autoencoder") – 指示将使用哪种对抗网络架构。

  • feature_layer (torch.nn.*) – 用于计算特征损失的输出层。应来自判别器或评论器。如果 feature_layer 不为 None,则原始生成器损失将替换为特征损失,该特征损失介绍于 此处

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

vegans.models.unconditional.VanillaGAN module

VanillaGAN

实现了原始的 Generative adversarial network[1]。

使用二元交叉熵评估真实图像和虚假图像的真实度。判别器试图对真实图像输出 1,对虚假图像输出 0,而生成器则试图强制判别器对虚假图像输出 1。

损失
  • 生成器:二元交叉熵

  • 判别器:二元交叉熵

默认优化器
  • torch.optim.Adam

参考文献

1

https://papers.nips.cc/paper/2014/file/5ca3e9b122f61f8f06494c97b1afccf3-Paper.pdf

class vegans.models.unconditional.VanillaGAN.VanillaGAN(generator, adversary, x_dim, z_dim, optim=None, optim_kwargs=None, feature_layer=None, fixed_noise_size=32, device=None, ngpu=None, folder='./veganModels/VanillaGAN', secure=True)[source]

基类:vegans.models.unconditional.AbstractGAN1v1.AbstractGAN1v1

参数
  • generator (nn.Module) – 生成器架构。在真实空间生成输出。

  • adversary (nn.Module) – 对抗网络架构。对真实样本和虚假样本生成预测以区分它们。

  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • feature_layer (torch.nn.*) – 用于计算特征损失的输出层。应来自判别器或评论器。如果 feature_layer 不为 None,则原始生成器损失将替换为特征损失,该特征损失介绍于 此处

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

vegans.models.unconditional.VanillaVAE module

VanillaVAE

实现了 Variational Autoencoder[1]。

在 Kullback-Leibler 损失和均方误差重构损失上进行训练。

损失
  • 编码器:Kullback-Leibler

  • 解码器:L2 (均方误差)

默认优化器
  • torch.optim.Adam

自定义参数
  • lambda_KL:用于计算潜在空间中 Kullback-Leibler 散度的编码器损失权重。

参考文献

1

https://arxiv.org/pdf/1906.02691.pdf

class vegans.models.unconditional.VanillaVAE.VanillaVAE(encoder, decoder, x_dim, z_dim, optim=None, optim_kwargs=None, lambda_KL=10, fixed_noise_size=32, device=None, ngpu=0, folder='./veganModels/VanillaVAE', secure=True)[source]

基类:vegans.models.unconditional.AbstractGenerativeModel.AbstractGenerativeModel

参数
  • encoder (nn.Module) – 编码器架构。在潜在空间生成预测。

  • decoder (nn.Module) – 解码器架构。在真实空间生成输出。

  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • lambda_KL (float) – 用于计算潜在空间中 Kullback-Leibler 散度的编码器损失权重。

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

calculate_losses(X_batch, Z_batch, who=None)[source]
encode(x)[source]

vegans.models.unconditional.WassersteinGAN module

WassersteinGAN

实现了 Wasserstein GAN[1]。

使用 Wasserstein 损失确定真实图像和虚假图像的真实度。Wasserstein 损失比原始 GAN 最小化的 Jensen-Shanon 散度具有一些理论优势。在这种架构中,评论家(判别器)通常在生成器每训练一步时训练多次。Lipschitz 连续性通过权重裁剪“强制执行”。

损失
  • 生成器:Wasserstein

  • 评论家:Wasserstein

默认优化器
  • torch.optim.RMSprop

自定义参数
  • clip_val:用于评论家以保持 Lipschitz 连续性的裁剪值。

参考文献

1

https://export.arxiv.org/pdf/1701.07875

class vegans.models.unconditional.WassersteinGAN.WassersteinGAN(generator, adversary, x_dim, z_dim, optim=None, optim_kwargs=None, clip_val=0.01, feature_layer=None, fixed_noise_size=32, device=None, ngpu=None, folder='./veganModels/WassersteinGAN', secure=True)[source]

基类:vegans.models.unconditional.AbstractGAN1v1.AbstractGAN1v1

参数
  • generator (nn.Module) – 生成器架构。在真实空间生成输出。

  • adversary (nn.Module) – 对抗网络架构。对真实样本和虚假样本生成预测以区分它们。

  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • clip_val (float) – 用于评论家以保持 Lipschitz 连续性的裁剪值。

  • feature_layer (torch.nn.*) – 用于计算特征损失的输出层。应来自判别器或评论器。如果 feature_layer 不为 None,则原始生成器损失将替换为特征损失,该特征损失介绍于 此处

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

vegans.models.unconditional.WassersteinGANGP module

WassersteinGANGP

实现了 Wasserstein GAN Gradient Penalized[1]。

使用 Wasserstein 损失确定真实图像和虚假图像的真实度。Wasserstein 损失比原始 GAN 最小化的 Jensen-Shanon 散度具有一些理论优势。在这种架构中,评论家(判别器)通常在生成器每训练一步时训练多次。Lipschitz 连续性通过梯度惩罚“强制执行”。

损失
  • 生成器:Wasserstein

  • 评论家:Wasserstein + 梯度惩罚

默认优化器
  • torch.optim.RMSprop

自定义参数
  • lambda_grad:梯度重构损失的权重。将梯度的范数推向 1。

参考文献

1

https://arxiv.org/abs/1704.00028

class vegans.models.unconditional.WassersteinGANGP.WassersteinGANGP(generator, adversary, x_dim, z_dim, optim=None, optim_kwargs=None, lmbda_grad=10, feature_layer=None, fixed_noise_size=32, device=None, ngpu=None, folder='./veganModels/WassersteinGANGP', secure=True)[source]

基类:vegans.models.unconditional.AbstractGAN1v1.AbstractGAN1v1

参数
  • generator (nn.Module) – 生成器架构。在真实空间生成输出。

  • adversary (nn.Module) – 对抗网络架构。对真实样本和虚假样本生成预测以区分它们。

  • x_dim (list, tuple) – 生成器输出维度以及判别器/评论器的输入维度数量。对于图像,这将是 [通道数, 像素高度, 像素宽度]。

  • z_dim (int, list, tuple) – 生成器输入的潜在维度数量。可能具有图像的维度。

  • optim (dict or torch.optim) – 用于每个网络的优化器。可以是 torch.optim 中的优化器,也可以是使用网络名称作为键、torch.optim 作为值的字典,例如 {“Generator”: torch.optim.Adam}。

  • optim_kwargs (dict) – 用于每个网络的优化器关键字参数。必须是使用网络名称作为键、包含关键字参数的字典作为值的字典,例如 {“Generator”: {“lr”: 0.0001}}。

  • lambda_grad (float) – 梯度重建损失的权重。将梯度范数推向 1。

  • feature_layer (torch.nn.*) – 用于计算特征损失的输出层。应来自判别器或评论器。如果 feature_layer 不为 None,则原始生成器损失将替换为特征损失,该特征损失介绍于 此处

  • fixed_noise_size (int) – 记录时显示的图像数量。固定噪声用于在 folder/images 子目录、tensorboard 图像选项卡以及 get_training_results() 中的样本中生成图像。

  • device (string) – 训练模型时使用的设备。可以是“cpu”或“cuda”。

  • ngpu (int) – 如果 device == “cuda”,训练期间使用的 GPU 数量。

  • folder (string) – 在当前工作目录中创建以此名称命名的文件夹。所有相关文件(如摘要、图像、模型和 tensorboard 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。

模块内容