90天學(xué)會GAN--Day3--從MNIST數(shù)據(jù)集開始

4. 模型訓(xùn)練
4.1 損失函數(shù)
GAN的訓(xùn)練優(yōu)化目標(biāo)其實就是如下函數(shù):

可以看到,這里有兩個loss:一個是訓(xùn)練鑒別器時使用的 D_loss, 另一個是訓(xùn)練生成器時使用的 G_loss。
而這個模型的目標(biāo)是要最小化 G_loss, 以及最大化 D_loss。?
這里我們使用了Adam優(yōu)化策略和BCE loss 來優(yōu)化這兩個。 于是可以寫出:

4.2 模型迭代?
在模型迭代的過程中,我們會做如下步驟:?
我們會讀取圖像和標(biāo)簽(暫時沒用)
然后生成一個隨機(jī)的噪聲z 并放入生成器生成一張假的圖片,稱為fake_img
之后將fake _ image 放入鑒別器得出 fake _ image 的評分
將這個評分與 1 比較得到 G_loss
再將輸入的圖像和fake_image 加上真假標(biāo)簽后放入鑒別器中得到D _ loss
循環(huán)以上過程 opt.epoch 次
由此,我們可以得到這部分的代碼:

至此,模型已經(jīng)訓(xùn)練完畢。
5.保存圖片以及模型?
這里我們使用 torchvision.utils 庫中的 save_image函數(shù)來存儲圖片,用法如下:

我們使用torch.save來保存模型即其中的參數(shù),實際上需要保存的其實就是 generator 和 discriminator 這兩個東西,用法如下:?

然后使用的時候就只需要load一下就行了:

之后就像之前一樣使用generator和discriminator就可以了。
這樣做的好處是:validate的時候就不需要重新跑一次所有的程序了,只需要把之前的模型 load 出來用就行了
標(biāo)簽: