---
# System prepended metadata

title: 2020_CCU_Machine_Learning_hw3

---

# 2020_CCU_Machine_Learning_hw3


## Q1 : 請用參考程式以及CelebA 資料集訓練生成對抗網路，比較step 0, 50, 100, 200 的生成結果。

* 生成結果如下

    * step 1
![](https://i.imgur.com/KDwEAvA.png)
    * step 50
![](https://i.imgur.com/UWt01sf.png)
    * step 100
![](https://i.imgur.com/sDh3Dg5.png)
    * step 200
![](https://i.imgur.com/iy3DHh6.png)
    * 整個過程如下
![](https://media.giphy.com/media/MYCVr6ADp7S5BuCHkn/giphy.gif)
    * Generator & Discriminator loss
![](https://i.imgur.com/N2GPnCr.png)
:::info
* 結果
    * 因為要比較 `step` 間的差異所以用 `Fixed_result` 來觀察。
    * 可以發現隨著 `step` 數的增加，五官、輪廓等的人臉特徵也變得更明顯。
    * `Generator` 的 `loss` 隨著 `step` 增加而減少，`Discriminator loss` 比較不穩定。
:::

---
## Q2 : 觀察模型訓練過程Model Loss vs. Epoch 的圖，與CNN模型訓練時Loss曲線的差異。

* CNN Loss 曲線
    * 此為愛文芒果比賽的數據
![](https://i.imgur.com/Hce4Ik2.png)

* GAN Loss 曲線
    * 此為Q1的 Loss 曲線
![](https://i.imgur.com/N2GPnCr.png)
:::info
* 結果
    * 這 2 種的 `Loss` 曲線差異蠻大的，`CNN Loss` 曲線是 `training loss` 跟 `validation loss` 隨著 step 數增加而下降。
    * `GAN Loss`曲線則是 `Generator Loss` 隨著step數增加而上升，`Discriminator Loss` 隨著step數增加而下降。
:::


---
## Q3 : 使用Normal Distribution Generating Fake Images using N(0, 1)、N(-10, 1) 與Uniform Distribution U(0,1)，比較生成結果的差異並討論原因。


* `N(0,1)`
    * 即 Q1 ，變化過程如下
    ![](https://media.giphy.com/media/MYCVr6ADp7S5BuCHkn/giphy.gif)
    * Generator & Discriminator loss
![](https://i.imgur.com/N2GPnCr.png)

* `N(-10,1)`
    * step 1 
![](https://i.imgur.com/PRwuHZG.png)
    * step 20
![](https://i.imgur.com/zMsWgo2.png)
    * step 40
![](https://i.imgur.com/eZnXaNo.png)
    * step 60
![](https://i.imgur.com/PDd4MyQ.png)
    * 後段 loss
![](https://i.imgur.com/Xfgj0CR.jpg)
    * 整體 loss
![](https://i.imgur.com/1ySTEdu.png)
:::info
* 結果
    * 因為後段的 `Discriminator loss` 歸零所以中斷訓練。
    * 無法成功的訓練出模型。
:::

* `U(0,1)`

    * 過程如圖
![](https://media.giphy.com/media/jtzpGpOP6upF6HoGBy/giphy.gif)
    * Loss 曲線
![](https://i.imgur.com/TAfJ8kM.png)
:::info
* 結果
    * 無法成功的訓練出模型。
:::



:::success
* Q3 討論
    * N(-10,1) 因為雜訊太高所以無法成功訓練模型。
    * U(0,1) 也無法成功訓練出模型。
:::



---
## Q4 : 使用其他外部的人臉dataset，比較是否能增進人臉生成的Quality。

* 30000 張照片( 原始 )
    * 過程 
![](https://media.giphy.com/media/MYCVr6ADp7S5BuCHkn/giphy.gif)
     * Generator & Discriminator loss
![](https://i.imgur.com/N2GPnCr.png)

* 41000 張照片
    * 過程
![](https://media.giphy.com/media/KHoV5bAzH7U3mmXCJK/giphy.gif)
    * Loss 曲線
    ![](https://i.imgur.com/vhbYYAn.png)

---

* 其他跑到一半掛掉的 Loss 曲線
    * 41000 張照片跑到 epoch 157 :cry:
    ![](https://i.imgur.com/KeujVCF.png)
    * 載錯圖片，載成 jpg 檔的 46000 張 :cry:
    ![](https://i.imgur.com/1YWmjnZ.png)

:::info
* 結果
    * 這個部分訓練了4次，不知道為什麼 kaggle server 有時候會無法讀取 output 。:cry: 
    * 雖然資料比數沒差很多，但是可以發現 41000 張照片的模型產生出來的人臉品質高了一些，礙於 kaggle server quota 不足所以只跑個 41000 張做比較。
:::

