相信大家都有聽過GAN的名子,
原理就好像同時有一名創作家及一名鑑定員,
創作家進行創造,而鑑定員進行鑑定,
兩者有各自跟原始作品的損失函數,
利用損失資訊的大小,以優化器來修正創作家創作的方向以及鑑定員鑑定的依據。
參考攻略:
https://www.tensorflow.org/tutorials/generative/dcgan?hl=zh_tw
安裝及載入:
imageio套件是為了讓訓練過程以動畫的方式來呈現。
載入手寫數字資料集:
將圖片轉成28×28像素,每一個像素正規化成-1到1之間的數值:
調整batch大小,並且改變訓練資料的排序:
建立生成器:
輸入為100維的矩陣,我們可以先查看未訓練的生成結果:
搭建判別器:
輸出結果為正數代表認定為真品,負數認定生成作品為假的,
不過目前還沒訓練,所以結果不具有意義:
創立生成器及判別器各自的損失函數:
設定各自的優化器:
載入過去別人訓練好的儲存點,降低訓練時間,
自己重新訓練也可以:
設定初始生成畫作的隨機數值,並且一次生成16張圖片:
設定生成對抗的過程,優化器依據生成器及判別器各自的損失資訊來修正生成及判別方向:
搭建function,依據epochs來進行生成對抗的訓練:
將每一個epochs的訓練結果保存起來:
開始訓練:
那可以將訓練過程以動畫的方式來呈現:
假設哪一天需要依靠販賣藝術品維生,
但是又沒有藝術天份,
這個時候就可以請GAN來幫我們創作藝術作品了。
下面的攻略有對浪漫時期的作品進行創作:
https://www.kaggle.com/amyjang/creating-romantic-period-art-w-tensorflow-dcgan
該資料集還有表現主義及立體主義的作品可以參考。
那這個攻略是對於彩色圖片CIFAR10資料集進行創作:
https://machinelearningmastery.com/how-to-develop-a-generative-adversarial-network-for-a-cifar-10-small-object-photographs-from-scratch/