溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python中如何使用PyTorch實(shí)現(xiàn)WGAN

發(fā)布時(shí)間:2021-11-11 13:33:18 來(lái)源:億速云 閱讀:345 作者:小新 欄目:開發(fā)技術(shù)

這篇文章給大家分享的是有關(guān)Python中如何使用PyTorch實(shí)現(xiàn)WGAN的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

1.GAN簡(jiǎn)述

在GAN中,有兩個(gè)模型,一個(gè)是生成模型,用于生成樣本,一個(gè)是判別模型,用于判斷樣本是真還是假。但由于在GAN中,使用的JS散度去計(jì)算損失值,很容易導(dǎo)致梯度彌散的情況,從而無(wú)法進(jìn)行梯度下降更新參數(shù),于是在WGAN中,引入了Wasserstein Distance,使得訓(xùn)練變得穩(wěn)定。本文中我們以服從高斯分布的數(shù)據(jù)作為樣本。

2.生成器模塊

這里從2維數(shù)據(jù),最終生成2維,主要目的是為了可視化比較方便。也就是說(shuō),在生成模型中,我們輸入雜亂無(wú)章的2維的數(shù)據(jù),通過(guò)訓(xùn)練之后,可以生成一個(gè)贗品,這個(gè)贗品在模仿高斯分布。

Python中如何使用PyTorch實(shí)現(xiàn)WGAN

3.判別器模塊

判別器同樣輸入的是2維的數(shù)據(jù)。比如我們上面的生成器,生成了一個(gè)2維的贗品,輸入判別器之后,它能夠最終輸出一個(gè)sigmoid轉(zhuǎn)換后的結(jié)果,相當(dāng)于是一個(gè)概率,從而判別,這個(gè)贗品到底能不能達(dá)到以假亂真的程度。

Python中如何使用PyTorch實(shí)現(xiàn)WGAN

4.數(shù)據(jù)生成模塊

由于我們使用的是高斯模型,因此,直接生成我們需要的數(shù)據(jù)即可。我們?cè)谶@個(gè)模塊中,生成8個(gè)服從高斯分布的數(shù)據(jù)。

Python中如何使用PyTorch實(shí)現(xiàn)WGAN

5.判別器訓(xùn)練

由于使用JS散度去計(jì)算損失的時(shí)候,會(huì)很容易出現(xiàn)梯度極小,接近于0的情況,會(huì)使得梯度下降無(wú)法進(jìn)行,因此計(jì)算損失的時(shí)候,使用了Wasserstein Distance,去度量?jī)蓚€(gè)分布之間的差異。因此我們假如了梯度懲罰的因子。

Python中如何使用PyTorch實(shí)現(xiàn)WGAN

其中,梯度懲罰的模塊如下:

Python中如何使用PyTorch實(shí)現(xiàn)WGAN

6.生成器訓(xùn)練

這里的訓(xùn)練是緊接著判別器訓(xùn)練的。也就是說(shuō),在一個(gè)周期里面,先訓(xùn)練判別器,再訓(xùn)練生成器。

Python中如何使用PyTorch實(shí)現(xiàn)WGAN

7.結(jié)果可視化

通過(guò)visdom可視化損失值,通過(guò)matplotlib可視化分布的預(yù)測(cè)結(jié)果。

Python中如何使用PyTorch實(shí)現(xiàn)WGAN

感謝各位的閱讀!關(guān)于“Python中如何使用PyTorch實(shí)現(xiàn)WGAN”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI