判别器
在已经定义生成器之后,构建 GAN 的下一步是实现判别器。它将生成器的输出作为输入,并给出一个二分类预测:该输入是生成的还是真实的?
torch.nn 已经为您导入为 nn。您还可以使用自定义的 disc_block() 函数,它返回一个由线性层和 LeakyReLU 激活组成的模块。您将把它作为判别器的基本构件。
def disc_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.LeakyReLU(0.2)
)
本练习是课程的一部分
使用 PyTorch 进行图像深度学习
练习说明
- 在模型中添加最后一个判别器块,使用合适的输入尺寸,输出为
256。 - 在最后一个判别器块之后,添加一个线性层,将输出映射到大小为
1。 - 定义
forward()方法,将输入图像传入在__init__()中定义的顺序块。
交互式实操练习
通过完成这段示例代码来试试这个练习。
class Discriminator(nn.Module):
def __init__(self, im_dim):
super(Discriminator, self).__init__()
self.disc = nn.Sequential(
disc_block(im_dim, 1024),
disc_block(1024, 512),
# Define last discriminator block
____,
# Add a linear layer
____,
)
def forward(self, x):
# Define the forward method
____