vegans.models.unconditional 包¶
子模块¶
vegans.models.unconditional.AAE 模块¶
AAE¶
实现了对抗自编码器 [1]。
与其使用 Kullback Leibler 散度来改进潜在空间分布,我们使用判别器来确定潜在向量的“真实性”。
- 损失
编码器:二元交叉熵 + 均方误差
生成器:均方误差
对抗网络:二元交叉熵
- 默认优化器
torch.optim.Adam
- 自定义参数
lambda_z:用于计算潜在 z 维度真实性的判别器损失权重。
参考文献
-
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 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。
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 抽象类。示例包括原始的 VanillaGAN、WassersteinGAN 和 WassersteinGANGP。
- 参数
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 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。
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 抽象类。示例包括 LRGAN、VAEGAN 和 BicycleGAN。
- 参数
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 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。
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, …} 的形式。如果字典中没有指定某个网络作为键,则不传递参数(即 {})。
-
_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 字典。
-
_summarise_batch
(batch, max_batches, epoch, max_epochs, print_every)[source]¶ 在指定数量的批次后打印摘要统计信息。
- 参数
batch (int) – 当前批次。
max_batches (int) – 总批次的最大数量。
epoch (int) – 当前周期。
max_epochs (int) – 总周期的最大数量。
print_every (int) – 每多少批次后应打印摘要。
-
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_losses
(by_epoch=False, agg=None)[source]¶ 获取训练期间记录的损失
- 参数
by_epoch (bool, optional) – 如果为 true,则每个 logged_loss 返回每个周期一个损失值。否则,频率由 fit 的 save_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_training_results
(by_epoch=False, agg=None)[source]¶ 训练后调用此函数以获取 fixed_noise 样本和损失。
- 参数
by_epoch (bool, optional) – 如果为 true,则每个 logged_loss 返回每个周期一个损失值。否则,频率由 fit 的 save_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) – 包含训练期间记录的所有损失类型的字典。
-
predict
(x)[source]¶ 使用评论器/判别器预测输入是真实的还是虚假的。
- 参数
x (np.array) – 要预测的图像或样本。
- 返回值
数组,其中每个 x 对应一个输出,指示输入的真实性。
- 返回类型
np.array
-
save
(name=None)[source]¶ 将模型作为 torch / pickle 对象保存在模型文件夹中。
- 参数
name (str, optional) – 保存文件的名称。构造函数中指定的文件夹用于绝对路径。
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 维度重建损失的权重。
参考文献
-
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:铰链损失的截断值。请参阅参考文献以获取更多信息。
参考文献
-
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 维度重建损失的权重。
参考文献
-
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 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。
vegans.models.unconditional.KLGAN module¶
KLGAN¶
实现了 Kullback Leibler GAN。
生成器使用 Kullback Leibler 损失。
- 损失
生成器:Kullback-Leibler
自编码器:二元交叉熵
- 默认优化器
torch.optim.Adam
- 自定义参数
eps:一个防止计算 Kullback-Leibler 散度时发生溢出和 NaN 的小值。
参考文献
-
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 维度重建损失的权重。
参考文献
-
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
参考文献
-
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 维度重建损失的权重。
参考文献
-
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
参考文献
-
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 散度的编码器损失权重。
参考文献
-
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 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。
vegans.models.unconditional.WassersteinGAN module¶
WassersteinGAN¶
实现了 Wasserstein GAN[1]。
使用 Wasserstein 损失确定真实图像和虚假图像的真实度。Wasserstein 损失比原始 GAN 最小化的 Jensen-Shanon 散度具有一些理论优势。在这种架构中,评论家(判别器)通常在生成器每训练一步时训练多次。Lipschitz 连续性通过权重裁剪“强制执行”。
- 损失
生成器:Wasserstein
评论家:Wasserstein
- 默认优化器
torch.optim.RMSprop
- 自定义参数
clip_val:用于评论家以保持 Lipschitz 连续性的裁剪值。
参考文献
-
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。
参考文献
-
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 输出)都将写入其中。现有文件夹永远不会被覆盖或删除。如果同名文件夹已存在,则会附加时间戳以使其唯一。