0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DCGAN

Posted at

DCGANのメモ.

メモ

transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
-> (x-μ)/σ で正規化.このときは (x-0.5)/0.5 = 2x-1 となるので,[-1, 1] にスケーリングできている.
ちなみに上は3チャンネル(RGB)の場合であり,1チャンネル(白黒)のときは
transforms.Normalize((0.5, ), (0.5, ))
  • Transposed Convolution(転置畳み込み)の計算

    • out_size = (in_size-1) * stride -2*padding + kernel_size + output_padding
  • 識別器のreturnでsqueeze()をかますのはなぜか?

    • squeeze(): 余計に1が入っているshapeを削除する
      • (A×1×B×1) -> (A×B)
  • 識別器の損失関数をマイナスにするのはなぜか?

    • 損失関数は,識別器が最大化,生成器が最小化する.すなわち,識別器の損失関数をマイナスにすれば,識別器を最小化することと同義.
  • 生成器の損失関数を,log(1-D(G(z)))から-log(D(G(z)))とするのはなぜか?

    • そのままだと,1.0付近で勾配が急になり,0付近では緩やかになる.つまり,学習初期の更新幅が小さく学習が進まない.
    • 結局,D(G(z))が1に近いほど値が小さくなってくれればよいので,-log(D(G(z)))と書き換えてしまう.このとき,0付近で勾配が急になり,識別器をうまく騙せない学習初期ほど更新幅が大きくなってくれる.
  • detach(): 変数から定数を作る

  • GANの損失関数はJSダイバージェンスと同じ.

    • 損失関数を最小化することはJSダイバージェンスを最小化することと同じ.
    • よって,モデル分布とデータ分布を可能な限り近づけようとしていることと同じ.
    • 理論的な説明はちょっと記事にするには重すぎるので割愛.
  • torchsummary: モデルのshapeを確認できる.

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?