Deep Learningã§ããããã¨ã風人éç»åçæã¢ãã«ããä½ã£ã話ï¼DCGANãWasserstein GANï¼
ããªã¼ç´ æãµã¤ãããããã¨ããã«åºã¦ãã人é風ã®ç»åãèªåçæããã¢ãã«ãDeep Learningã§ä½ãã¾ãããå®è£ ã«ã¯Google製ã®ã©ã¤ãã©ãªãTensorFlowãã¨æ©æ¢°å¦ç¿ã¢ã«ã´ãªãºã ã®ãDCGANããWasserstein GANããç¨ãã¦ãã¾ãã
以ä¸ã¯çæããã人éç»åã®ãã¡ãããªãã«ããããªãã®ã®ä¸ä¾ã§ããé ¬ã®ã¨ããã赤ããªã£ã¦ãã¦ä½ã¨ãªãæ¬å®¶ãããã¨ãã®ç¹å¾´ãæãããã¦ããã¨æãã¾ãã

- ããããã¨ããã¨ã¯ï¼
- å®è£ ããææ³ã®æ¦è¦
- å¦ç¿ãå®è£ ã®è©³ç´°
- å¦ç¿çµé
- ã¢ãã«ãæ¤è¨¼ãã
- å ¥åã«ãã¤ã¢ã¹ãæãã¦ããç»åãåºããããã
- ã¾ã¨ã
- åèæç®ï¼ãµã¤ãï¼
ããããã¨ããã¨ã¯ï¼
ããããã¨ããã¯15,000種é¡ä»¥ä¸ã®ããããã¤ã©ã¹ããæä¾ããããªã¼ç´ æãµã¤ãã§ããçãããããããä¸åº¦ã¯ã©ããã®Webãã¼ã¸ã§ãããã¨ãã®ç»åã使ããã¦ããã®ãè¦ããã¨ãããã®ã§ã¯ãªãã§ããããã

å®è£ ããææ³ã®æ¦è¦
DCGANãWasserstein GANã«ã¤ãã¦
人éç»åçæã¢ãã«ã®å¦ç¿ã«ã¯DCGANã¨Wasserstein GANãç¨ãã¦ãã¾ããåã¢ã«ã´ãªãºã ã®è©³ç´°ã«ã¤ãã¦ã¯æ¢ã«ä»ã®æ¹ã ãåãããããè¨äºãæ¸ãã¦ãã¾ãã®ã§ãã¡ããåèã«ãã¦ãã ãããããã§ã¯ç°¡åãªèª¬æã«çãã¾ãã
ã¾ããGANã¯Generative Adversarial Networkã®ç¥ã§ãæ©æ¢°å¦ç¿ã®ã¢ã«ã´ãªãºã ã®ä¸ç¨®ã§ãããè¨ç·´ãã¼ã¿ã¨Generatorãçæãããã¼ã¿ãè¦åããDiscriminatorããDiscriminatorãé¨ãããããªãã¼ã¿ãåºåããGeneratorãã交äºã«ç«¶ãããããã«å¦ç¿ãã¦ãããæçµçã«è¨ç·´ãã¼ã¿ã«ä¼¼ããã¼ã¿ãçæã§ããGeneratorãä½ãä¸ãããã¨ãã§ãã¾ãã
DCGANã¯Deep Convolutional GANã®ç¥ã§ãGANã使ãConvolutional Neural Networkï¼CNNï¼ãå¦ç¿ãã¦ããææ³ã§ããCNNã使ãã®ã§ç»åçæã«é©ç¨ããäºä¾ãå¤ãããã§ããè«æã§ã¯Batch NormalizationãLeakyReLUã¨ãã£ã工夫ãç¨ãããã¨ã§GANã«ããCNNã®å¦ç¿ãå®å®ããã¨ããã¦ãã¾ãã
Wasserstein GANã¯GANã®å¦ç¿æ¹æ³ãæ¹è¯ãããã®ã§ãDiscriminator*1ãç®ç颿°ã工夫ãããã¨ã«ãããGANã®å¦ç¿ã®åæãã«ãããmode corruptionã¨ãã£ãåé¡ã軽æ¸ã§ããã¨ããã¦ãã¾ããè«æã®èè æ¬äººãGithubä¸ã§PyTorchã®å®è£ ãå ¬éãã¦ãã¾ãã
Generator
Generatorã¯ãDiscriminatorãé¨ãããããªãããã¨ã風人éç»åãåºåããCNNãã¼ã¹ã®ã¢ãã«ãã§ããGeneratorã¸ã®å ¥åã¯æ¨æºæ£è¦åå¸*2ãããµã³ãã«ããã40次å ã®å®ãã¯ãã«ã§ãã²ã¨ã¤ã®å ¥åãã¯ãã«ãã¨ã«å¯¾å¿ããã²ã¨ã¤ã®ç»åãã¢ãã«ããåºåããã¾ããåºåç»åãµã¤ãºã¯64x64ã§ãåãã¯ã»ã«ã®RãGãBã®å¤ã¯ãããã[-1, 1]ã®ç¯å²ã§è¡¨ããã¾ãããã®ãã¯ã»ã«å¤ã[0, 255]ã®ç¯å²ã«ãªã¹ã±ã¼ã«ãããã¨ã§æçµçãªåºåç»åãå¾ããã¨ãã§ãã¾ãã

Discriminator
Discriminatorã¯ãæ¬ç©ã®ãããã¨ãã®ç»åã¨Generatorãçæããç»åãè¦åãããã¨ãã§ããCNNãã¼ã¹ã®ã¢ãã«ãã§ããDiscriminatorã¸ã®å ¥åã¯64x64ã®RGBç»åãã¼ã¿ã§ããåãã¯ã»ã«ã®RãGãBã®å¤ã¯ãããã[-1, 1]ã®ç¯å²ã«æ£è¦åãã¦å ¥åãã¾ããåºåã¯ã¹ã«ã©ã¼å¤ã§ãDiscriminatorãå ¥åç»åãæ¬ç©ã®ãããã¨ãã®ç»åã ã¨å¤å®ããå ´åã¯å¤§ããªå¤ããGeneratorãçæããç»åã ã¨å¤å®ããå ´åã¯å°ããªå¤ãåºãããã«å¦ç¿ããã¾ãã

Generatorã¨Discriminatorã®å¦ç¿
DCGANã»Wasserstein GANã§ã¯ãGeneratorã¨Discriminatorã交äºã«å¦ç¿ããã¦ããã¾ãã
Generatorã®å¦ç¿ã®éã«ã¯Discriminatorã®ãã©ã¡ã¼ã¿ã¼ãåºå®ãã以ä¸ã®å¦ç¿ãè¡ãã¾ãã
- ãã¯ãã«
ããµã³ãã«ãã¦Generatorã«ä¸ããç»åãåºåãã
- Generatorã®ç»åãDiscriminatorã«ä¸ããã¹ã«ã©ã¼å¤
ãåºåãã
ã大ããªå¤ã¨ãªãç»åãåºåã§ããããã«Generatorã®ãã©ã¡ã¼ã¿ã¼ãæ´æ°ãã
å¦ç¿ãç¶ãã¦ããã¨ãçæ³çã«ã¯ã©ããªå
¥åãã¯ãã«ãä¸ãã¦ãDiscriminatorãé¨ãããããæ¬ç©ã£ã½ãç»åãåºã¦ããããã«ãªãã¾ãï¼ãããå®éã¯ãããªã«çããªãï¼ã

Discriminatorã®å¦ç¿æã¯Generatorã®ãã©ã¡ã¼ã¿ã¼ãåºå®ãã以ä¸ã®å¦ç¿ãè¡ãã¾ãã
- è¨ç·´ãã¼ã¿ãããµã³ãã«ããæ¬ç©ã®ãããã¨ãã®ç»åãDiscriminatorã«ä¸ããã¹ã«ã©ã¼å¤
ãåºåãã
- ãã¯ãã«
ããµã³ãã«ãã¦Generatorã«ä¸ããç»åãåºåãã
- Generatorã®ç»åãDiscriminatorã«ä¸ãã
ãåºåãã
*3ã大ããªå¤ã¨ãªãããã«Discriminatorã®ãã©ã¡ã¼ã¿ã¼ãæ´æ°ãã
å¦ç¿ãç¶ãã¦ããã¨ãçæ³çã«ã¯Generatorãã©ããªã«æ¬ç©ã®ãããã¨ãã£ã½ãç»åãåºåããããã«ãªã£ã¦ããDiscriminatorã¯æ¬ç©ã¨å½ç©ãè¦åãããã¨ãã§ããããã«ãªãã¾ãï¼ãããå®éã¯ãããªnï¼ã

å¦ç¿ãå®è£ ã®è©³ç´°
ãããã¯ã¼ã¯æ§æãåãã©ã¡ã¼ã¿ã¼ã¯ä¸»ã«DCGANã¨Wasserstein GANã®è«æãåèã«ãã¦ãã¦ããã¾ãå¤ãã£ããã¨ã¯ãã¦ããªãã¨æãã¾ããã³ã¼ããä»ã®æ¹ã ãGithubçã§å ¬éãã¦ãããã®ã¨åããããªæãã§å®è£ ãã¦ãã¾ãã
GeneratorãDiscriminatorã®ãããã¯ã¼ã¯æ§æããã©ã¡ã¼ã¿ã¼
Generatorã®ãããã¯ã¼ã¯æ§æã¯ä»¥ä¸ã®ããã«ãªã£ã¦ãã¾ãã

- 転置ç³ã¿è¾¼ã¿å±¤ï¼conv2d_transposeï¼*4ã®ã«ã¼ãã«ãµã¤ãºã¯4ãã¹ãã©ã¤ãã¯2ã§ãã
- Batch Normalizationã¯æåã®å ¨çµå層ã¨å3ã¤ã®è»¢ç½®ç³ã¿è¾¼ã¿å±¤ã§é©ç¨ãã¦ãã¾ããæå¾ã®è»¢ç½®ç³ã¿è¾¼ã¿å±¤ã§ã¯é©ç¨ãã¦ãã¾ããã
- æ´»æ§å颿°ã¯ãæåã®å ¨çµå層ã¨å3ã¤ã®è»¢ç½®ç³ã¿è¾¼ã¿å±¤ã§ã¯ReLUãé©ç¨ãã¦ãã¾ããæå¾ã®è»¢ç½®ç³ã¿è¾¼ã¿å±¤ã§ã¯åºåã[-1, 1]ã«ããããã«tanhãé©ç¨ãã¦ãã¾ãã
- dropoutã¯ä½¿ã£ã¦ãã¾ããã
Discriminatorã®ãããã¯ã¼ã¯æ§æã¯ä»¥ä¸ã®ããã«ãªã£ã¦ãã¾ãã

- ç³ã¿è¾¼ã¿å±¤ã®ã«ã¼ãã«ãµã¤ãºã¯4ãã¹ãã©ã¤ãã¯2ã§ãã
- Batch Normalizationã¯å¾ã3ã¤ã®ç³ã¿è¾¼ã¿å±¤ã§é©ç¨ãã¦ãã¾ããæåã®ç³ã¿è¾¼ã¿å±¤ã¨æå¾ã®å ¨çµå層ã§ã¯é©ç¨ãã¦ãã¾ããã
- æ´»æ§å颿°ã¯ãå¾ã3ã¤ã®ç³ã¿è¾¼ã¿å±¤ã§ã¯LeakyReLUãé©ç¨ãã¦ãã¾ããæåã®ç³ã¿è¾¼ã¿å±¤ã¨æå¾ã®å ¨çµå層ã§ã¯é©ç¨ãã¦ãã¾ããã
- ãã¼ãªã³ã°å±¤ãdropoutã¯ä½¿ã£ã¦ãã¾ããã
è¨ç·´ãã¼ã¿
è¨ç·´ãã¼ã¿ã¯ç´15,000æã®ãããã¨ãç»åãã¯ãã¼ã«ãããã²ã¨ãã®äººéãè¼ã£ã¦ãã¦èæ¯è²ãªã©ããã¾ãè¤éã§ãªãç»åãç´4000æãæåãã£ã«ã¿ã¼ãã¦ä½¿ã£ã¦ãã¾ããè¨ç·´ãã¼ã¿æ°ãé常ã«å°ãªãã®ã§ãè«æã«ãªã£ã¦ãããããªDCGANã®é©ç¨äºä¾ã¨æ¯ã¹ãã¨é£æåº¦ãé«ãã¿ã¹ã¯ã§ã¯ãªããã¨æãã¾ãã
ãã®ä»
å¦ç¿æã®batch sizeã¯64ãæçµçãªtraining stepæ°ã¯149,560ã§ããã50,000 stepsãããããããç¨ç²¾åº¦ã®å¤åãè¦ããã¾ããã§ãããã¾ããWasserstein GANã®è«æã«å£ããå¾é æ³ã¯RMSPropãå¦ç¿çã¯0.00005ãweight clippingãã©ã¡ã¼ã¿ã¼ã¯0.01ã使ãã¾ããã
ã¡ãªã¿ã«æå ã®MacBook Pro Late 2016ã ã¨å¦ç¿ã«æéããããéããã®ã§ãGoogle Cloud Platformã®ç¡ææ $300ã使ããCloud ML Engineã®CPUx1+GPUx1ã®ãã·ã³ã§å¦ç¿ãããã¨ãããå¦ç¿é度ã5å以ä¸ã«ãªãã¾ããï¼ããã§ã100k stepså¦ç¿ããã®ã«1ã2æ¥ç¨åº¦ï¼ããã¤ãã¼ãã©ã¡ã¼ã¿ã¼ã調æ´ãã¦è¤æ°ã®å¦ç¿ãèµ°ããããã¨ãèããã¨ããã¯ãæ©æ¢°å¦ç¿ãããä¸ã§GPUçã®ããç¨åº¦ã®è¨ç®è³æºã¯å¿ é ã ã¨æãã¾ãã
å¦ç¿çµé
æåã®ãã¡ã¯ã©ããªå ¥åã«å¯¾ãã¦ãã©ã³ãã ãªã¢ã¶ã¤ã¯ã®ãããªç»åãåºåããã¾ãã

ããããã ãã ãåºåç»åãç½ããªã£ã¦ããã1,000ã¹ããããããã§é«ªã®æ¯ã人ã®èã£ã½ãè²ãç®ç«ã¡å§ãã¦ãã¾ãããããå½¢ã¯äººéããã¯ç¨é ãã§ãã

1,500ã¹ããããããã«ãªãã¨ãã髪ã®è²ãèã£ã½ãè²ãå¼·ããªã£ã¦ãã¾ãã

4,000ã¹ããããããã§ä½ãããã®å½¢ãè¦ãå§ãã¾ãã

7,000ã¹ããããããã«ãªãã¨äººã®é¡ãé«ªã®æ¯ã®ãããªå½¢ãèªèã§ããã±ã¼ã¹ãå¢ãã¦ãã¾ãã

ãããããã°ããã¯ç®ãå£ã¿ãããªãã®ãé¡ã¿ãããªãã®ã®ä¸ã«ç¾ããããæ¬å½ã«ãªãã¨ãè¨ããªããã¡ããã¡ããªãã®ãåºåããããã¨è¨ã£ãç¶æ³ãç¹°ãè¿ãã¾ãã50,000ã¹ããããããã«ãªãã¨ç»åã®ç²ããæ¸ãããã¾ã«ããæãã®äººéã£ã½ãç»åãåºåããã¾ãã

ã ããããã®æç¹ã§å ¥å次第ã§ã¢ãã«ãããç»åãåºåã§ããããã«ãªã£ã¦ããããã§ããããããå ã¯ãã¾ã大ããªå¤åã¯è¦ããã¾ããã§ããã
ã¢ãã«ãæ¤è¨¼ãã
å¦ç¿ããã¢ãã«ãæè»½ã«ç¢ºèªãã¦ã¿ãããã«ããTensorFlowによるDCGANでアイドルの顔画像生成 その後の実験など - すぎゃーんメモãã§ç´¹ä»ããã¦ãããããªWeb UIï¼ã¤ã³ã¹ãã¯ã¿ã¼ï¼ãå®è£ ããæ§ã ãªå ¥åãã¯ãã«ã«å¯¾å¿ããåºåç»åãç°¡åã«æ¤è¨¼ã§ããããã«ãã¦ã¿ã¾ããã以ä¸ã¯ã¤ã³ã¹ãã¯ã¿ã¼ã§ã¢ãã«ãæ¤è¨¼ãã¦ããæã®åç»ã§ãã
DCGANã§å¦ç¿ããããããã¨ã風人éç»åçæã¢ãã«ãã®ãããã¬ã¼ãä½ã£ããå ¥åã¯40次å å®ãã¯ãã«ã§ãã¹ã©ã¤ãã¼ãåããã¨åè¦ç´ ã®å¤ãå¤ãããããã«å¯¾å¿ããåºåç»åãããããã¨å¤åãã¦ããã®ãåããï¼ç·æ§â女æ§ã黿â赤æçï¼ãã©ã®æ¬¡å ãã©ã®ç¹å¾´ã«å¯¾å¿ããã®ã調ã¹ãã¨é¢ç½ããã pic.twitter.com/WgqM0Dsh1J
— CP24 (@mickey24) 2017å¹´6æ24æ¥
ãããå©ç¨ããã°ãå ¥åãã¯ãã«ã®ã©ã®æ¬¡å ã®å¤ãã©ã®ç»åã®ç¹å¾´ã表ãã¦ããã®ããåããâ¦ããããã¾ããã
ã¡ãªã¿ã«å¦ç¿æã®å ¥åãã¯ãã«ã¯æ¨æºæ£è¦åå¸ãããµã³ãã«ãã¦ããã®ã§ãã¼ããã¯ãã«ã«å¯¾å¿ããåºåç»åã¯å ¨ã¦ã®äººéç»åã®ä¸é表ç¾ã¿ããã«ãªãã®ããªã¨æã£ã¦è¦ã¦ã¿ãã以ä¸ã®ãããªçèã«å°½ããé£ãç»åãåºã¦ãã¾ããã

ä¸é人éç»åãå¿ è¦ãªæ¹ã¯ãèªç±ã«ã使ããã ããã
å ¥åã«ãã¤ã¢ã¹ãæãã¦ããç»åãåºããããã
å¦ç¿ããã¢ãã«ã«é©å½ãªå ¥åãã¯ãã«ãä¸ãã¦ããå¿ ãããããããªç»åãåºã¦ããã¨ã¯éãã¾ããã

DCGANãªã©ã®è«æã§ã¯ããæ¬ç©ã®åçã¿ãããªç»åãçæãããä¾ãåºã¦ããã¨æãã¾ãããããããããç»åãåºã¦ããã¾ã§å ¥åãå¤ãã¦é å¼µãç¶ããçµæã ã¨æãã¾ãã
ããã§ããTensorFlowによるDCGANでアイドルの顔画像生成 その後の実験など - すぎゃーんメモãã§ç´¹ä»ããã¦ããããã«ãå ¥åãã¯ãã«ã«ãã¤ã¢ã¹ãæãã¦ã¢ãã«ãããç»åã ããåºåãããããªãããã«ã§ããã試ãã¦ã¿ã¾ãããã¾ããããç»åãåºãã¾ã§ã©ã³ãã ãªå ¥åãã¯ãã«ãã¢ãã«ã«ä¸ããç»åãçæãç¶ãã¾ããããã¦ã以ä¸ã®ãããªããããªç»åãåºãã¨ããã§â¦ã

ãã®ç»åã®å ¥åãã¯ãã«ãä¿æãã¦ããã¾ãã
[-1.0,-0.6,-0.8,-0.1,1.1,-0.7,-1.6,-1.1,0.8,0.1,-0.2,0.1,0.8,0.6,1.1,-0.9,-0.4,0.9,2.0,0.8,1.5,2.1,-2.5,1.4,-0.1,1.6,-1.0,0.2,-0.8,-0.6,-1.0,0.4,-0.6,-0.2,0.1,0.1,1.6,0.0,0.7,-0.4]
ããã¦ãããã«æ¨æºåå·®ãå°ããï¼Ï=0.5ãããï¼ã®æ£è¦åå¸ãããµã³ãã«ãããã¯ãã«ãå ãã¦äººéç»åçæã¢ãã«ã«ä¸ãã¾ããããã¨ã以ä¸ã®ããã«ãããã§ä½ã¨ãªãå ç»åã«ä¼¼ã¦ãããã®ãçæããã¾ãã

ãã®ããã«ãããç»åãçæãããæã®ãã¯ãã«å¨è¾ºã ããå ¥åã¨ãã¦ä¸ããããã«ããã°ããããªç»åã ããåºåããããããªãã¾ããããã®ä»£ããåºåç»åã¯å ç»åã«ä¼¼ããããªãã®ãå¤ããªãããªã¨ã¼ã·ã§ã³ã¯æ¸ã£ã¦ãã¾ãã¾ããé£ããã¨ããã§ãã
ã¡ãªã¿ã«Ï=0.7ã®æ£è¦åå¸ãããµã³ãã«ãããã¯ãã«ãå ããã¨ãããç»åã®å¤åã¯å¤§ãããªãã¾ããã人éã®é¦ãååããããå§ãã¾ããã

ã¾ã¨ã
æ©æ¢°å¦ç¿ã¢ã«ã´ãªãºã ãDCGANããWasserstein GANãã使ãããããã¨ã風人éç»åçæã¢ãã«ãå®è£ ãã¾ãããå ¥åæ¬¡ç¬¬ã§ã¯ããã£ã½ãç»åãçæã§ããããã«ãªã£ãã®ã§ãGoogle Cloud Platformã®ç¡ææ $300ããã¹ã¦ã¤ãè¾¼ãã§è²ã 試ããç²æããã£ãã®ã§ã¯ãªããã¨æãã¾ãã
æ¬å½ã¯åãããã¨ãã®ç»åã¿ã¤ãã«ã¨Conditional GANã使ããå ¥åãã¯ãã«ã¨ã©ãã«ï¼"èªçæ¥"ã"人工ç¥è½"ãªã©ï¼ãã¢ãã«ã«ä¸ããã¨ãã®ã©ãã«ã«å¯¾å¿ããç»åãåºåããã¢ãã«ãã¤ããããã£ãã®ã§ãããåã©ãã«ã«å¯¾ããè¨ç·´ãã¼ã¿ãå°ãªãããã®ã§ä¸æ¦æå¿µãã¾ãããæ©ä¼ãããã°è©¦ãã¦ã¿ããã¨ããã§ãã
ä»ååºæ¥ä¸ãã£ã人éç»åçæã¢ãã«ã«èå³ãããæ¹ã¯ãTwitterã§mickey24_botã«ã人éç»åãã ãããã¨è©±ããããã¨æè»½ã«è©¦ããã¨ãåºæ¥ã¾ãããã ããã¡ã®botã¯ã©ã³ãã ãªå ¥åãã¯ãã«ãåºã«ç»åãçæããã®ã§ãã»ã¨ãã©ã®å ´åããæ½°ããã人éã®ãããªç»åãåºã¦ãã¾ãããäºæ¿ãã ããã

åèæç®ï¼ãµã¤ãï¼
- arXiv:1511.06434 [cs.LG]: Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks
- arXiv:1701.07875 [stat.ML]: Wasserstein GAN
- Wasserstein GANèè ã«ããPyTorchå®è£ on Github
- TensorFlowによるDCGANでアイドルの顔画像生成 - すぎゃーんメモ
- TensorFlowによるDCGANでアイドルの顔画像生成 その後の実験など - すぎゃーんメモ
- Chainerで顔イラストの自動生成 - Qiita
- Chainerを使ってコンピュータにイラストを描かせる - Qiita
- ディープラーニングであり得そうな間取り画像を生成させてみる - LIFULL Creators Blog
*1:Wasserstein GANã®è«æã§ã¯DiscriminatorããCriticãã¨å¼ãã§ãã¾ãããGANã®ã³ã³ããã¹ãã§ã¯Discriminatorã¨è¨ã£ãæ¹ãéããããããªã®ã§ããã®è¨äºã§ã¯Discriminatorã§çµ±ä¸ãã¾ãã
*2:How to Train a GAN? Tips and tricks to make GANs workã¨ããè¨äºã«ããã¨ãGeneratorã®å ¥åã¯ä¸æ§åå¸ã§ã¯ãªãæ£è¦åå¸ãããµã³ãã«ããæ¹ããããã¨ãã£ãã®ã§ãã®ããã«ãã¦ã¿ã¾ãããã䏿§åå¸ã®å ´åã¨æ¯ã¹ã¦ã©ããããæ¹åããã£ãã®ãã¯ä¸æã§ãã
*3:Wasserstein GANã§ã¯é常ã®DCGANã¨ã¯ç°ãªãDiscriminatorã®åºåã®logã¯åãããã®ã¾ã¾ã®å¤ã使ãã¾ãã
*4:conv2d_transposeãDeconvolutionã¨å¼ã¶è§£èª¬ãµã¤ããããè¦ããã¾ãããDCGANã®è«æã«ããã¨ããã¯æ£ããå¼ã³æ¹ã§ã¯ãªãã¨ã®ãã¨ã§ããå½è©²è«æä¸ã§ã¯fractionally-strided convolutionã¨å¼ã°ãã¦ãã¾ããTensorFlowã®ããã¥ã¡ã³ãã§ã¯transpose of convolutionã¨å¼ã°ãã¦ãã¾ãã