生成式對抗網路GAN

2021-10-25 13:41:10 字數 3038 閱讀 6967

判別式模型和生成是模型的區別:

假設研究物件為變數為x,類別變數為y,則:

判別式模型:

只是對給定的樣本進行分類,不關心資料如何生成。

按照一定的判別準則,從資料中直接學習決策函式y=f(x)或者條件概率分布p(y|x;a)作為**的模型

典型的判別模型包括:k近鄰法,決策樹,最大熵模型,支援向量機等

生成式模型:

根據生成假設,哪個類別最有可能生成這個樣本

從資料中學習聯合概率分布p(x,y),其之後可以轉變為p(y|x)作為**模型,例如利用條件概率分布p(y|x)=p(x,y)/p(x)

生成對抗網路gan基本原理:

gan包括兩部分:生成器和判別器

生成器:從隨機雜訊中生成影象(隨機雜訊通常從均勻分布或高斯分布中獲取)

判別器:其輸入為生成器生成的影象和來自訓練集中的真實影象,並對其進行判別。得到輸出值為乙個0到1之間的數,表示影象為真實影象的概率,real為1,fake為0.

來自真實資料的概率越大越好,來自生成樣本的概率越小越好

盡量正確的判斷接受到的影象是生成的還是真實的影象

生成的讓判別器難以判別真假

盡量生成接近真實資料的

先更新判別器

固定生成器g,更新判別器d

固定判別器d,更新判別器g

更新要使梯度下降

gan在生成模型之外引入乙個判別模型,通過兩者之間的對抗訓練達到優化目的

生成器:

gan生成器網路

import tensorflow as tf

import keras

from keras import layers

import numpy as np

latent_dim=

32height=

32width=

32channels=

3generator_input=keras.input(shape=

(latent_dim,))

x=layers.dense(

128*16*

16)(generator_input)

#將輸入轉換為大小為16*16的128個通道的特徵圖

x=layers.leakyrelu(

)(x)

x=layers.reshape((16

,16,128))

(x)x=layers.conv2d(

256,

5,padding=

'same'

)(x)

x=layers.leakyrelu(

)(x)

x=layers.conv2dtranspose(

256,

4,strides=

2,padding=

'same'

)(x)

x=layers.leakyrelu(

)(x)

x=layers.conv2d(

256,

5,padding=

'same'

)(x)

x=layers.leakyrelu(

)(x)

x=layers.conv2d(

256,

5,padding=

'same'

)(x)

x=layers.leakyrelu(

)(x)

x=layers.conv2d(channels,

7,activation=

'tanh'

,padding=

'same'

)(x)

generator=keras.models.model(generator_input,x)

generator.summary(

)

gan判別器網路

discriminator_input=layers.input(shape=

(height,width,channels)

)x=layers.conv2d(

128,3)

(discriminator_input)

x=layers.leakyrelu(

)(x)

x=layers.conv2d(

128,

4,strides=2)

(x)x=layers.leakyrelu(

)(x)

x=layers.conv2d(

128,

4,strides=2)

(x)x=layers.leakyrelu(

)(x)

x=layers.conv2d(

128,

4,strides=2)

(x)x=layers.leakyrelu(

)(x)

x=layers.flatten(

)(x)

x=layers.dropout(

0.4)

(x)x=layers.dense(

1,activation=

'sigmoid'

)(x)

discriminator=keras.models.model(discriminator_input,x)

#將輸入轉換為乙個二進位制分類決策

discriminator.summary(

)discriminator_optimizer=keras.optimizers.rmsprop(

lr=0.0008

, clipvalue=

1.0,

#限制梯度值的範圍

decay=1e-

8#使用學習率衰減

)discriminator.

compile

(optimizer=discriminator_optimizer,loss=

'binary_crossentropy'

)

生成式對抗網路GAN

一 背景 gan的用途 影象超畫素 背景模糊 影象修復 二 生成式對抗網路gan 生成模型 乙個能夠生成我們想要的資料的模型 圖模型 函式 神經網路 gan 目的就是訓練乙個生成模型,生成我們想要的資料 生成器和判別器是對抗的 三 訓練演算法 隨機初始化生成器和判別器 交替訓練判別器d和生成器g直到...

生成對抗式網路 GAN

lan goodfellow 加拿大蒙特婁大學 neurips 基於對抗的新生成式模型,它由乙個生成器和乙個判別器組成 生成器的目標是學習樣本的資料分布,從而能生成樣本欺騙判別器 判別器的目標是判斷輸入樣本是生成 真實的概率 gan模型等同於博弈論中的二人零和博弈 對於任意生成器和判別器,都存在乙個...

深度學習 GAN生成式對抗網路

生成式對抗網路 gan,generative adversarial network 的簡單理解就是,想想一名偽造者試圖偽造一幅畢卡索的畫作。一開始,偽造者非常不擅長這項任務,他隨便畫了幅與畢卡索真跡放在一起,請鑑定商進行評估,鑑定商鑑定後,將結果反饋給偽造者,並告訴他怎樣可以讓 看起來更像畢卡索的...