判別器(Discriminator)
ジェネレータを定義したら、次はGANを構成するために判別器を作ります。判別器はジェネレータの出力を入力として受け取り、その入力が生成データか実データかを二値で予測します。
torch.nn はすでに nn としてインポート済みです。さらに、線形層とLeakyReLU活性化を順に並べたブロックを返すカスタム関数 disc_block() も利用できます。判別器の構築ブロックとしてこれを使います。
def disc_block(in_dim, out_dim):
return nn.Sequential(
nn.Linear(in_dim, out_dim),
nn.LeakyReLU(0.2)
)
この演習はコースの一部です
PyTorch で学ぶ画像向け Deep Learning
演習の手順
- 適切な入力サイズで最後の判別器ブロックをモデルに追加し、出力は
256にします。 - 最後の判別器ブロックの後に、出力をサイズ
1に写像する線形層を追加します。 __init__()で定義したSequentialブロックを通して入力画像を渡すように、forward()メソッドを定義してください。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
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
____