日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python开源库生成式对抗网络_Python:使用Tensorflow开发一维生成对抗网络

發布時間:2023/12/10 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python开源库生成式对抗网络_Python:使用Tensorflow开发一维生成对抗网络 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

生成式對抗網絡是一種用于訓練生成器模型的深度學習體系結構。GAN由兩個模型組成,一個稱為生成器(Generator),另一個稱為判別器(Discriminator)。顧名思義,生成器生成新樣本,判別器負責對生成的樣本進行真偽分類。

GAN實際如何運作的?

判別器模型的性能用于更新生成器和判別器本身的網絡權重。生成器實際上從未看到過數據,而是根據判別器的性能不斷地進行調整,更具體地說,是根據從判別器傳回來的誤差梯度進行調整。生成器逐漸學會通過產生與真實樣本完全相同的樣本來欺騙判別器。

在這篇文章中,我們將選擇一個簡單的一維函數來直觀地理解GAN。本文分為5個部分:

選擇一個一維函數實現判別器模型實現生成器模型訓練GAN模型性能評估1.一維函數

我們需要選擇一個一維函數來制作模型。一維函數的形式為

y = f(x),其中x是輸入,y是對應的輸出

為簡單起見,我將使用函數y = x。您可以自由選擇任何函數。我們將保持輸入在-0.5和+0.5之間。下面給出了一個計算輸入的簡單函數 :

該函數簡單地接受N個隨機值,并將每個值減去0.5,以便將輸入范圍保持在-0.5和+0.5之間。當為real時y=1,當為fake時y=0。

2.判別器模型

判別器只是一個簡單的分類模型,它可以預測樣本是real還是fake。判別器將兩個實數值的樣本作為輸入,并輸出樣本是real還是fake。我們處理的問題非常簡單,所以我們不需要非常復雜的神經網絡,我們將只采用一個隱藏層,其中有25個節點。您可以自由地試驗節點數或層數,以提高生成器的準確性。我們將對隱藏層使用ReLu激活,對輸出層使用sigmoid激活。Python實現如下:

3.生成器模型

對于生成器,我們將噪聲輸入提供給生成器,此噪聲輸入也稱為潛在變量。

潛在變量是潛在空間中的隱藏變量或未觀察到的變量,潛在空間是這些變量的多維空間。

直到我們的生成器受到訓練并賦予這些點意義,該潛在空間才有意義,這些點被映射到判別器的輸入。我們將定義一個3維的潛在空間(可以更改維數),并實驗生成器的行為和準確度如何變化。我們將對潛在空間中的每個變量使用高斯分布。生成器使用一個隱藏層,該隱藏層將由15個具有ReLu激活函數的神經元組成。輸出層將由兩個神經元組成,這兩個神經元將連接到判別器層的輸入。

4.訓練GAN模型

訓練GAN模型的方法有很多,最簡單的方法是創建一個新的模型,該模型由生成器和判別器兩部分組成。我們只是在邏輯上封裝了生成器和判別器網絡。我們將把GAN模型作為一個整體進行訓練,這樣來自判別器的反向傳播誤差也會更新生成器的權重。如果判別器能夠很好地進行分類,那么生成器的權重將更新得更多;如果判別器不能很好地進行分類,那么生成器的權重將更新得少一些。這樣,在生成器和判別器之間就形成了一種對抗關系。Python實現代碼如下:

判別器模型的可訓練屬性被設置為false,這樣就可以僅對standalone模型進行訓練。

現在我們只剩下對GAN模型進行整體訓練了。我們將編寫一個函數來做這個的事情。該函數將運行10000個epochs,每運行2000個epochs,它將評估判別器和生成器的性能。Python實現的代碼如下:

5.評估性能

在每隔一定的epochs之后,我們將調用show_performance函數,該函數將從生成器中獲取真實樣本和虛假樣本并預測結果。我們還將在散點圖上繪制結果,以便我們可以查看GAN的性能。Python實現的代碼如下:

在epoch = 2000之后,我們得到了散點圖如下,您的圖可能會有所不同。

紅點表示real點,藍點表示生成器生成的點。我們可以看到,藍點已開始呈y =x的形狀。

如果我們繼續進行10000個epochs,您將得到類似下面的圖像。您可以嘗試使用更多個epochs(例如15000或20000個epochs)來獲得更好的準確性。

現在我們可以看到,我們已經從生成器中得到了一個更確定的樣本,我們可以說生成器已經學習并擬合了這個函數。也就是說,僅僅通過誤差梯度,生成器就學會了這個函數。

總結

以上是生活随笔為你收集整理的python开源库生成式对抗网络_Python:使用Tensorflow开发一维生成对抗网络的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。