始める無料で始める

判別器(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
        ____
コードを編集して実行