开始使用免费开始使用

生成器

GAN 的生成器以随机噪声向量为输入并生成图像。为提高其结构的复用性,您将把输入和输出的形状作为参数传入模型。这样,您就能在不同大小的输入噪声和不同形状的图像上复用同一个模型。

torch.nn 已为您导入为 nn。您还可以使用自定义的 gen_block() 函数,它会返回由线性层、批量归一化和 ReLU 激活组成的一个模块。您将把它作为生成器的构建单元。

def gen_block(in_dim, out_dim):
    return nn.Sequential(
        nn.Linear(in_dim, out_dim),
        nn.BatchNorm1d(out_dim),
        nn.ReLU(inplace=True)
    )

本练习是课程的一部分

使用 PyTorch 进行图像深度学习

查看课程

练习说明

  • self.generator 定义为一个顺序模型。
  • 在最后一个 gen_block 之后,添加一个线性层,其输入尺寸应匹配前一层的输出,输出尺寸为 out_dim
  • 在线性层之后添加一个 sigmoid 激活函数。
  • forward() 方法中,将模型的输入传入 self.generator

交互式实操练习

通过完成这段示例代码来试试这个练习。

class Generator(nn.Module):
    def __init__(self, in_dim, out_dim):
        super(Generator, self).__init__()
        # Define generator block
        self.generator = ____(
            gen_block(in_dim, 256),
            gen_block(256, 512),
            gen_block(512, 1024),
          	# Add linear layer
            ____
            # Add activation
            ____
        )

    def forward(self, x):
      	# Pass input through generator
        return ____
编辑并运行代码