156156# - ``ngf`` - ์์ฑ์๋ฅผ ํต๊ณผํ ๋ ๋ง๋ค์ด์ง ํน์ง ๋ฐ์ดํฐ์ ์ฑ๋ ์์
๋๋ค.
157157# - ``ndf`` - ๊ตฌ๋ถ์๋ฅผ ํต๊ณผํ ๋ ๋ง๋ค์ด์ง ํน์ง ๋ฐ์ดํฐ์ ์ฑ๋ ์์
๋๋ค.
158158# - ``num_epochs`` - ํ์ต์ํฌ ์ํญ(epoch) ์์
๋๋ค. ํ์ต์
159- # ๊ธธ๊ฒํ๋ ๊ฒฝ์ฐ ๋๋ถ๋ถ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ด์ง๋ง, ์ด๋ฌํ ๊ฒฝ์ฐ ์๊ฐ ๋ํ
159+ # ๊ธธ๊ฒ ํ๋ ๊ฒฝ์ฐ ๋๋ถ๋ถ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ด์ง๋ง, ์ด๋ฌํ ๊ฒฝ์ฐ ์๊ฐ ๋ํ
160160# ์ค๋ ๊ฑธ๋ฆฝ๋๋ค.
161161# - ``lr`` - ๋ชจ๋ธ์ ํ์ต๋ฅ (learning rate)์
๋๋ค. DCGAN ๋
ผ๋ฌธ์์์ ๊ฐ์ด 0.0002๋ก
162162# ์ค์ ํฉ๋๋ค.
211211# ๋ณธ ํํ ๋ฆฌ์ผ์์ ์ฌ์ฉํ ๋ฐ์ดํฐ๋ `Celeb-A Faces
212212# dataset <http://mmlab.ie.cuhk.edu.hk/projects/CelebA.html>`__ ๋ก, ํด๋น ๋งํฌ๋ฅผ ์ด์ฉํ๊ฑฐ๋ `Google
213213# Drive <https://drive.google.com/drive/folders/0B7EVK8r0v71pTUZsaXdaSnZBZzg>`__ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ์์ต๋๋ค.
214- # ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ผ๋ฉด ``img_align_celeba.zip`` ๋ผ๋ ํ์ผ์ ๋ณด๊ฒ๋ ๊ฒ๋๋ค. ๋ค์ด๋ก๋๊ฐ ๋๋๋ฉด
214+ # ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ผ๋ฉด ``img_align_celeba.zip`` ๋ผ๋ ํ์ผ์ ๋ณด๊ฒ ๋ ๊ฒ๋๋ค. ๋ค์ด๋ก๋๊ฐ ๋๋๋ฉด
215215# ``celeba`` ์ด๋ผ๋ ํด๋๋ฅผ ์๋ก ๋ง๋ค๊ณ , ํด๋น ํด๋์ ํด๋น zip ํ์ผ์ ์์ถํด์ ํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
216216# ์์ถ ํด์ ํ, ์์์ ์ ์ํ ``dataroot`` ๋ณ์์ ๋ฐฉ๊ธ ๋ง๋ ``celeba`` ํด๋์ ๊ฒฝ๋ก๋ฅผ ๋ฃ์ด์ฃผ์ธ์.
217217# ์์ ์์
์ด ๋๋๋ฉด ``celeba`` ํด๋์ ๊ตฌ์กฐ๋ ๋ค์๊ณผ ๊ฐ์์ผ ํฉ๋๋ค:
270270# ~~~~~~~~~~~~~~~~
271271#
272272# DCGAN ๋
ผ๋ฌธ์์๋, ํ๊ท ์ด 0( ``mean=0`` )์ด๊ณ ๋ถ์ฐ์ด 0.02( ``stdev=0.02`` )์ธ
273- # ์ ๊ท๋ถํฌ์ ์์ฉํด , ๊ตฌ๋ถ์์ ์์ฑ์ ๋ชจ๋ ๋ฌด์์ ์ด๊ธฐํ๋ฅผ ์งํํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํฉ๋๋ค.
273+ # ์ ๊ท๋ถํฌ๋ฅผ ์ฌ์ฉํด , ๊ตฌ๋ถ์์ ์์ฑ์ ๋ชจ๋ ๋ฌด์์ ์ด๊ธฐํ๋ฅผ ์งํํ๋ ๊ฒ์ด ์ข๋ค๊ณ ํฉ๋๋ค.
274274# ``weights_init`` ํจ์๋ ๋งค๊ฐ๋ณ์๋ก ๋ชจ๋ธ์ ์
๋ ฅ๋ฐ์,
275275# ๋ชจ๋ ํฉ์ฑ๊ณฑ ๊ณ์ธต, ์ ์น ํฉ์ฑ๊ณฑ ๊ณ์ธต, ๋ฐฐ์น ์ ๊ทํ ๊ณ์ธต์, ์์์ ๋งํ ์กฐ๊ฑด๋๋ก
276276# ๊ฐ์ค์น๋ค์ ๋ค์ ์ด๊ธฐํ ์ํต๋๋ค. ์ด ํจ์๋ ๋ชจ๋ธ์ด ๋ง๋ค์ด์ง์ ๋ง์ ๋ฐ๋ก ์ ์ฉ์
@@ -293,7 +293,7 @@ def weights_init(m):
293293# ์์ฑ์ :math:`G` ๋ ์ ์ฌ ๊ณต๊ฐ ๋ฒกํฐ :math:`z` ๋ฅผ, ๋ฐ์ดํฐ ๊ณต๊ฐ์ผ๋ก
294294# ๋ณํ์ํค๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์ฐ๋ฆฌ์๊ฒ ๋ฐ์ดํฐ๋ผ ํจ์ ์ด๋ฏธ์ง์ด๊ธฐ ๋๋ฌธ์,
295295# :math:`z` ๋ฅผ ๋ฐ์ดํฐ๊ณต๊ฐ์ผ๋ก ๋ณํํ๋ค๋ ๋ป์, ํ์ต์ด๋ฏธ์ง์ ๊ฐ์ ์ฌ์ด์ฆ๋ฅผ ๊ฐ์ง
296- # RGB ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋๊ฒ๊ณผ ๊ฐ์ต๋๋ค (์.ย 3x64x64).
296+ # RGB ์ด๋ฏธ์ง๋ฅผ ์์ฑํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค (์.ย 3x64x64).
297297# ์ค์ ๋ชจ๋ธ์์๋ ์คํธ๋ผ์ด๋(stride) 2๋ฅผ ๊ฐ์ง ์ ์น ํฉ์ฑ๊ณฑ ๊ณ์ธต๋ค์ ์ด์ด์ ๊ตฌ์ฑํ๋๋ฐ,
298298# ๊ฐ ์ ์น ํฉ์ฑ๊ณฑ ๊ณ์ธต ํ๋๋น 2์ฐจ์ ๋ฐฐ์น ์ ๊ทํ ๊ณ์ธต๊ณผ relu ํ์ฑํจ์๋ฅผ ํ ์์ผ๋ก ๋ฌถ์ด์ ์ฌ์ฉํฉ๋๋ค.
299299# ์์ฑ์์ ๋ง์ง๋ง ์ถ๋ ฅ ๊ณ์ธต์์๋ ๋ฐ์ดํฐ๋ฅผ tanh ํจ์์ ํต๊ณผ์ํค๋๋ฐ,
@@ -454,7 +454,7 @@ def forward(self, input):
454454# ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์์๋ค๋ง ๊ณจ๋ผ๋ผ ์ ์๋์ง ์ดํดํ๋ ๊ฒ์ด ๋จผ์ ์
๋๋ค (์.ย GT labels).
455455#
456456# ์ข์ต๋๋ค. ๋ค์์ผ๋ก ๋์ด๊ฐ๊ฒ ์ต๋๋ค. ์ฐธ ๋ผ๋ฒจ (ํน์ ์ ๋ต)์ 1๋ก ๋๊ณ , ๊ฑฐ์ง ๋ผ๋ฒจ (ํน์ ์ค๋ต)์ 0์ผ๋ก
457- # ๋๊ฒ ์ต๋๋ค. ๊ฐ ๋ผ๋ฒจ์ ๊ฐ์ ์ ํ๊ฑด GAN ๋
ผ๋ฌธ์์ ์ฌ์ฉ๋ ๊ฐ๋ค๋ก, GAN์ ๊ตฌ์ฑํ ๋์ ๊ด๋ก๋ผ ํ
457+ # ๋๊ฒ ์ต๋๋ค. ๊ฐ ๋ผ๋ฒจ์ ๊ฐ์ ์ ํ ๊ฑด GAN ๋
ผ๋ฌธ์์ ์ฌ์ฉ๋ ๊ฐ๋ค๋ก, GAN์ ๊ตฌ์ฑํ ๋์ ๊ด๋ก๋ผ ํ
458458# ์ ์์ต๋๋ค. ๋ฐฉ๊ธ ์ ํ ๋ผ๋ฒจ ๊ฐ๋ค์ ์ถํ์ ์์ค๊ฐ์ ๊ณ์ฐํ๋ ๊ณผ์ ์์ ์ฌ์ฉ๋ ๊ฒ๋๋ค.
459459# ๋ง์ง๋ง์ผ๋ก, ์๋ก ๊ตฌ๋ถ๋๋ ๋ ์ตํฐ๋ง์ด์ ๋ฅผ ๊ตฌ์ฑํ๊ฒ ์ต๋๋ค. ํ๋๋ :math:`D` ๋ฅผ ์ํ ๊ฒ,
460460# ๋ค๋ฅธ ํ๋๋ :math:`G` ๋ฅผ ์ํ ๊ฒ์
๋๋ค. DCGAN์ ์์ ๋ ๋๋ก, ๋ ์ตํฐ๋ง์ด์ ๋ ๋ชจ๋ Adam์ ์ฌ์ฉํ๊ณ ,
@@ -490,7 +490,7 @@ def forward(self, input):
490490# ๊ทธ๋ฌํ ์ด์ ๋ก, ๋ณธ ํํ ๋ฆฌ์ผ์์๋ `Goodfellowโs paper <https://papers.nips.cc/paper/5423-generative-adversarial-nets.pdf>`__
491491# ์์ ์์ ๋ Algorithm 1์ ๊ธฐ๋ฐ์ผ๋ก, `ganhacks <https://github.com/soumith/ganhacks>`__ ์์ ์ฌ์ฉ๋ ๋ช๊ฐ์ง ๊ด์ฐฎ์ ํ
ํฌ๋๋ค์
492492# ๋ํ ๊ฒ์
๋๋ค. ์์ ๋ช๋ฒ ์ค๋ช
ํ์ง๋ง, ์ฐ๋ฆฌ์ ์๋๋ โ์ง์ง ํน์ ๊ฐ์ง ์ด๋ฏธ์ง๋ฅผ ๊ตฌ์ฑโํ๊ณ ,
493- # :math:`log(D(G(z)))` ๋ฅผ ์ต๋ํํ๋ G์ ๋ชฉ์ ํจ์๋ฅผ ์ต์ ํ ์ํค๋ ๊ฒ๋๋ค. ํ์ต๊ณผ์ ์ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋๋๋๋ค.
493+ # :math:`log(D(G(z)))` ๋ฅผ ์ต๋ํํ๋ G์ ๋ชฉ์ ํจ์๋ฅผ ์ต์ ํ ์ํค๋ ๊ฒ๋๋ค. ํ์ต๊ณผ์ ์ ํฌ๊ฒ ๋ ๊ฐ์ง๋ก ๋๋๋๋ค.
494494# Part 1์ ๊ตฌ๋ถ์๋ฅผ, Part 2๋ ์์ฑ์๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ณผ์ ์
๋๋ค.
495495#
496496# **Part 1 - ๊ตฌ๋ถ์์ ํ์ต**
@@ -499,11 +499,11 @@ def forward(self, input):
499499# Goodfellow์ ๋ง์ ๋น๋ฆฌ์๋ฉด, ๊ตฌ๋ถ์๋ โ๋ณํ๋(gradient)๋ฅผ ์์น(ascending)์ํค๋ฉฐ ํ๋ จโํ๊ฒ ๋ฉ๋๋ค.
500500# ์ค์ ์ ์ผ๋ก ์๊ธฐํ๋ฉด, :math:`log(D(x)) + log(1-D(G(z)))` ๋ฅผ ์ต๋ํ์ํค๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
501501# `ganhacks <https://github.com/soumith/ganhacks>`__ ์์ ๋ฏธ๋ ๋ฐฐ์น(mini-batch)๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ฌ์ฉํ ๊ฐ๋
์ ๊ฐ์ ธ์์,
502- # ์ฐ๋ฆฌ ์ญ์ ๋๊ฐ์ง ์คํ
์ผ๋ก ๋ถ๋ฆฌํด ๊ณ์ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ ,
502+ # ์ฐ๋ฆฌ ์ญ์ ๋ ๊ฐ์ง ์คํ
์ผ๋ก ๋ถ๋ฆฌํด ๊ณ์ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค. ๋จผ์ ,
503503# ์ง์ง ๋ฐ์ดํฐ๋ค๋ก๋ง ์ด๋ฃจ์ด์ง ๋ฐฐ์น๋ฅผ ๋ง๋ค์ด :math:`D` ์ ํต๊ณผ์ํต๋๋ค. ๊ทธ ์ถ๋ ฅ๊ฐ์ผ๋ก (:math:`log(D(x))`) ์ ์์ค๊ฐ์ ๊ณ์ฐํ๊ณ ,
504504# ์ญ์ ํ ๊ณผ์ ์์์ ๋ณํ๋๋ค์ ๊ณ์ฐํฉ๋๋ค. ์ฌ๊ธฐ๊น์ง๊ฐ ์ฒซ๋ฒ์งธ ์คํ
์
๋๋ค. ๋๋ฒ์งธ ์คํ
์์๋, ์ค๋ก์ง ๊ฐ์ง ๋ฐ์ดํฐ๋ค๋ก๋ง
505505# ์ด๋ฃจ์ด์ง ๋ฐฐ์น๋ฅผ ๋ง๋ค์ด :math:`D` ์ ํต๊ณผ์ํค๊ณ , ๊ทธ ์ถ๋ ฅ๊ฐ์ผ๋ก (:math:`log(1-D(G(z)))`) ์ ์์ค๊ฐ์ ๊ณ์ฐํด
506- # ์ญ์ ํ ๋ณํ๋๋ฅผ ๊ตฌํ๋ฉด ๋ฉ๋๋ค. ์ด๋ ๋๊ฐ์ง ์คํ
์์ ๋์ค๋ ๋ณํ๋๋ค์ *์ถ์ (accumulate)* ์์ผ์ผ ํฉ๋๋ค.
506+ # ์ญ์ ํ ๋ณํ๋๋ฅผ ๊ตฌํ๋ฉด ๋ฉ๋๋ค. ์ด๋ ๋ ๊ฐ์ง ์คํ
์์ ๋์ค๋ ๋ณํ๋๋ค์ *์ถ์ (accumulate)* ์์ผ์ผ ํฉ๋๋ค.
507507# ๋ณํ๋๊น์ง ๊ตฌํ์ผ๋, ์ด์ ์ตํฐ๋ง์ด์ ๋ฅผ ์ฌ์ฉํด์ผ๊ฒ ์ฃ . ํ์ดํ ์น์ ํจ์๋ฅผ ํธ์ถํด์ฃผ๋ฉด ์์์ ๋ณํ๋๊ฐ ์ ์ฉ๋ ๊ฒ๋๋ค.
508508#
509509# **Part 2 - ์์ฑ์์ ํ์ต**
0 commit comments