生成器
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 ____