vegans.utils 包

子模块

vegans.utils.layers 模块

class vegans.utils.layers.LayerInception(in_channels, out_channels)[source]

基类: torch.nn.modules.module.Module

Inception 层架构的实现。

使用网络中的网络(NIN)架构,使网络更宽更深。

forward(x)[source]

定义了每次调用时执行的计算。

应被所有子类覆盖。

注意

尽管前向传播的逻辑需要在该函数内定义,但之后应该调用 Module 实例而非此函数,因为前者会负责运行已注册的钩子,而后者会默默忽略它们。

training: bool
class vegans.utils.layers.LayerPrintSize[source]

基类: torch.nn.modules.module.Module

打印层的大小,不执行任何操作。

主要用于调试,以查找网络某个深度处的层形状。

forward(x)[source]

定义了每次调用时执行的计算。

应被所有子类覆盖。

注意

尽管前向传播的逻辑需要在该函数内定义,但之后应该调用 Module 实例而非此函数,因为前者会负责运行已注册的钩子,而后者会默默忽略它们。

training: bool
class vegans.utils.layers.LayerReshape(shape)[source]

基类: torch.nn.modules.module.Module

重塑(Reshape)张量。

可能用于全连接网络的最后一层,以生成图像输出。

forward(x)[source]

定义了每次调用时执行的计算。

应被所有子类覆盖。

注意

尽管前向传播的逻辑需要在该函数内定义,但之后应该调用 Module 实例而非此函数,因为前者会负责运行已注册的钩子,而后者会默默忽略它们。

training: bool
class vegans.utils.layers.LayerResidualConvBlock(in_channels, out_channels, skip_layers, kernel_size)[source]

基类: torch.nn.modules.module.Module

Inception 层架构的实现。

使用网络中的网络(NIN)架构,使网络更宽更深。

forward(x)[source]

定义了每次调用时执行的计算。

应被所有子类覆盖。

注意

尽管前向传播的逻辑需要在该函数内定义,但之后应该调用 Module 实例而非此函数,因为前者会负责运行已注册的钩子,而后者会默默忽略它们。

training: bool

vegans.utils.networks 模块

class vegans.utils.networks.Adversary(network, input_size, adv_type, device, ngpu, secure=True)[source]

基类: vegans.utils.networks.NeuralNetwork

实现对抗网络架构。

可以是判别器(输出 [0, 1])或评论家(输出 [-Inf, Inf])。

predict(x)[source]
training: bool
class vegans.utils.networks.Autoencoder(encoder, decoder)[source]

基类: torch.nn.modules.module.Module

forward(x)[source]

定义了每次调用时执行的计算。

应被所有子类覆盖。

注意

尽管前向传播的逻辑需要在该函数内定义,但之后应该调用 Module 实例而非此函数,因为前者会负责运行已注册的钩子,而后者会默默忽略它们。

get_number_params()[source]

返回模型中的参数数量。

返回

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

返回类型

dict

summary()[source]
training: bool
class vegans.utils.networks.Decoder(network, input_size, device, ngpu, secure=True)[source]

基类: vegans.utils.networks.NeuralNetwork

training: bool
class vegans.utils.networks.Encoder(network, input_size, device, ngpu, secure=True)[source]

基类: vegans.utils.networks.NeuralNetwork

training: bool
class vegans.utils.networks.Generator(network, input_size, device, ngpu, secure=True)[source]

基类: vegans.utils.networks.NeuralNetwork

training: bool
class vegans.utils.networks.NeuralNetwork(network, name, input_size, device, ngpu, secure)[source]

基类: torch.nn.modules.module.Module

单一网络的基本抽象。

这些网络构成生成对抗网络的基本构建块。主要负责一致性检查。

forward(x)[source]

定义了每次调用时执行的计算。

应被所有子类覆盖。

注意

尽管前向传播的逻辑需要在该函数内定义,但之后应该调用 Module 实例而非此函数,因为前者会负责运行已注册的钩子,而后者会默默忽略它们。

get_number_params()[source]
summary()[source]
training: bool

vegans.utils.plot2DModel 模块

vegans.utils.plot2DModel.onclick(event)[source]
vegans.utils.plot2DModel.plot_2d_grid(model, nr_images=10, show=True)[source]
vegans.utils.plot2DModel.plot_on_click(model)[source]

vegans.utils.torchsummary 模块

此模块的所有功劳归于 GitHub 用户 sksq96 (Shubham Chandel) 和 pytorch-summary 包的其他作者。

请在 GitHub 上查看他们的实现:https://github.com/sksq96/pytorch-summary

不幸的是,该包目前(2021-05-04)已不再开发,且不存在 conda 版本。这将阻止我们创建 conda 分发包。他们的包根据 MIT 许可证发布,因此我们 fork 了他们的代码(2021-05-04)并在本模块中使用。

vegans.utils.torchsummary.summary(model, input_size, batch_size=- 1, device=device(type='cuda', index=0), dtypes=None)[source]
vegans.utils.torchsummary.summary_string(model, input_size, batch_size=- 1, device=device(type='cuda', index=0), dtypes=None)[source]

vegans.utils.utils 模块

class vegans.utils.utils.DataSet(X, y=None)[source]

基类: Generic[torch.utils.data.dataset.T_co]

class vegans.utils.utils.KLLoss(eps)[source]

基类: object

__call__(input, target)[source]

计算用于 GAN 的 Kullback-Leibler 损失。

参数

input (torch.Tensor) – 输入张量。评论家的输出。

返回

KL 散度

返回类型

torch.Tensor

class vegans.utils.utils.NormalNegativeLogLikelihood[source]

基类: object

class vegans.utils.utils.WassersteinLoss[source]

基类: object

__call__(input, target)[source]

计算 Wasserstein 损失 / 散度。

也称为推土机距离 (earthmover distance)。

参数
  • input (torch.Tensor) – 输入张量。评论家的输出。

  • target (torch.Tensor) – 标签,1 或 -1。零被转换为 -1。

返回

Wasserstein 散度

返回类型

torch.Tensor

vegans.utils.utils.concatenate(tensor1, tensor2)[source]

连接两个 2D 或 4D 张量。

参数
  • tensor1 (torch.Tensor) – 2D 或 4D 张量。

  • tensor2 (torch.Tensor) – 2D 或 4D 张量。

返回

tensor1 和 tensor2 的连接。

返回类型

torch.Tensor

引发

NotImplementedError – 如果张量不是 2 维或 4 维。

vegans.utils.utils.create_gif(source_path, target_path=None)[source]

从源路径包含的图像创建 GIF。

参数
  • source_path (string) – 指向包含 .png 文件的源目录的路径。

  • target_path (string, optional) – 创建的 GIF 的名称。

vegans.utils.utils.get_input_dim(dim1, dim2)[source]

从两个输入获取输入维度数量。

张量通常需要以不同的方式连接,特别是对于利用标签信息的条件算法。此函数返回两个 2D 张量(两个向量)、两个 4D 张量(两张图像)或一个 2D 张量与另一个 4D 张量(向量与图像)连接后张量的输出维度。对于两个张量,第一个维度是样本数量,此函数不考虑它。因此,dim1dim2 都是 1D 或 3D 张量,表示向量或图像维度(通道数、高度、宽度)。通常情况下,dim1 是潜在的 z 维度(通常是向量)或样本空间中的一个样本(可能是图像)。dim2 通常代表条件 y 维度,它在传递给神经网络之前与噪声或样本连接。

此函数可用于在条件用例中获取生成器、对抗网络、编码器或解码器的输入维度。

参数
  • dim1 (int, iterable) – 输入 1 的维度。

  • dim2 (int, iterable) – 输入 2 的维度。

返回

连接后的输出维度。

返回类型

list

vegans.utils.utils.invert_channel_order(images)[source]
vegans.utils.utils.plot_images(images, labels=None, show=True, n=None)[source]

绘制一些输入图像(可选带标签)

参数
  • images (np.array) – 形状必须是 [nr_samples, height, width] 或 [nr_samples, height, width, 3]。

  • labels (np.array, optional) – 用于标题的标签数组。

  • show (bool, optional) – 如果为 True,调用 plt.show 直接显示图像。

  • n (None, optional) – 要绘制的图像数量,最多 36 张。

返回

创建的图和轴对象。

返回类型

plt.figure, plt.axis

vegans.utils.utils.plot_losses(losses, show=True, share=False)[source]

在公共图上绘制生成器和判别器的损失。

参数
  • losses (dict) –

    包含某些网络损失的字典。字典的结构为:``` {

    mode1: {loss_type1_1: losses1_1, loss_type1_2: losses1_2, …}, mode2: {loss_type2_1: losses2_1, loss_type2_2: losses2_2, …}, …

    其中 mode 可能是“Train”或“Test”之一,loss_type 可能是“Generator”、“Adversary”、“Encoder”等,而 losses 是训练期间收集的损失值列表。

  • show (bool, optional) – 如果为 True,调用 plt.show 直接显示图像。

  • share (bool, optional) – 如果为 true,则在图之间共享轴刻度。

返回

创建的图和轴对象。

返回类型

plt.figure, plt.axis

模块内容