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

2.2 將數(shù)據(jù)輸入模型
書接上回,我們將二進(jìn)制文件轉(zhuǎn)換為了 .png 圖片以及 label.txt, 現(xiàn)在我們要把這些圖片輸入到模型中。?
因此我們構(gòu)造了一個(gè) class customDataset 來導(dǎo)入數(shù)據(jù)(其實(shí)就是放到 label[] 和 img[] 里)。
首先是初始化,在初始化的部分會(huì)導(dǎo)入圖片的路徑和標(biāo)簽

其次是將圖片通過 CV2 導(dǎo)入

最后是后面的函數(shù)需要的 len 函數(shù)

3. 構(gòu)建模型?
3.1. 生成器 generator
此處使用的是 Multi-LayerPerception 的全連接層來鏈接不同的層。
由于圖片是 28×28 的格式,所以最后應(yīng)該是一個(gè)1×784 的層。
由此可以得出整個(gè)模型的形式 : latent?dim ->?1024 ->?784
?而對于每一層,形式是:nn.linear → normalize → 激活函數(shù)
(此處為Leaky ReLU)
于是可以寫出初始化的代碼:

之后就是 forward 函數(shù):

3.2. 鑒別器 discriminator?
鑒別器和生成器結(jié)構(gòu)非常相似,只是反過來而已。

至此,我們已經(jīng)完成了GAN的大部分內(nèi)容,包括數(shù)據(jù)輸入、生成器和鑒別器,下一步就是訓(xùn)練模型了。