對抗生成網路gan變體集合 keras版本
一.acgan(auxiliary classifier gan)
依舊有generator,discriminator,可使用mnsit訓練生成。
和dcgan的不同:
1.增加了class類別標籤參與訓練,可以生成指定類別的
**引用的《web安全之強化學習與gan》,位置:
生成器g**:
def
build_generator
(latent_size)
: cnn = sequential(
) cnn.add(dense(
1024
, input_dim=latent_size, activation=
'relu'))
cnn.add(dense(
128*7*
7, activation=
'relu'))
cnn.add(reshape(
(128,7
,7))
) cnn.add(upsampling2d(size=(2
,2))
) cnn.add(conv2d(
256,(5
,5), padding=
"same"
, kernel_initializer=
"glorot_normal"
, activation=
"relu"))
cnn.add(upsampling2d(size=(2
,2))
) cnn.add(conv2d(
128,(5
,5), padding=
"same"
, kernel_initializer=
"glorot_normal"
, activation=
"relu"))
cnn.add(conv2d(1,
(2,2
), padding=
"same"
, kernel_initializer=
"glorot_normal"
, activation=
"tanh"))
latent = input(shape=
(latent_size,))
image_class = input(shape=(1
,), dtype=
'int32'
) cls = flatten(
)(embedding(10,
100, embeddings_initializer=
"glorot_normal"
)(image_class)
)#h = merge([latent, cls], mode='mul')
h=add(
[latent, cls]
) fake_image = cnn(h)
return model(inputs=
[latent, image_class]
, outputs=
[fake_image]
)
判別器d**:
def
build_discriminator()
: cnn = sequential(
) cnn.add(conv2d(32,
(3,3
), padding=
"same"
, strides=(2
,2), input_shape=(1
,28,28
))) cnn.add(leakyrelu())
cnn.add(dropout(
0.3)
) cnn.add(conv2d(64,
(3,3
), padding=
"same"
, strides=(1
,1))
) cnn.add(leakyrelu())
cnn.add(dropout(
0.3)
) cnn.add(conv2d(
128,(3
,3), padding=
"same"
, strides=(2
,2))
) cnn.add(leakyrelu())
cnn.add(dropout(
0.3)
) cnn.add(conv2d(
256,(3
,3), padding=
"same"
, strides=(1
,1))
) cnn.add(leakyrelu())
cnn.add(dropout(
0.3)
) cnn.add(flatten())
image = input(shape=(1
,28,28
))features = cnn(image)
fake = dense(
1, activation=
'sigmoid'
, name=
'generation'
)(features)
aux = dense(
10, activation=
'softmax'
, name=
'auxiliary'
)(features)
return model(inputs=
[image]
, outputs=
[fake, aux]
)
訓練圖:
深度學習英文縮寫 小KE帶你認識機器學習和深度學習
這一次,小ke帶你了解幾個火爆的 人工智慧 名詞兒,這樣在擼串炸雞啤酒時,可以跟小夥伴吹噓吹噓,提高提高自己的人格檔次。機器學習 和 深度學習 這幾個名詞,經常會和人工智慧一同出現在不同場合,他們都是什麼意思呢?人工智慧 先來看看人工智慧。在1956年達特矛斯會議上,約翰 麥卡錫提出了 人工智慧 這...
深度學習學習筆記
神經網路的隱含層越多 模型引數越多,模型擬合能力更強,同時訓練的難度也會增加。減少模型引數的方法有兩種 逐層訓練和權重共享。權重共享思路是現有深度學習的基礎,它大大減少了模型的引數。深度學習並不需要很多的人工特徵工程,利用其強大的建模能力來代替,整個訓練的過程是端到端的過程 end to end 其...
深度學習筆記
在深度神經網路中,通常使用一種叫修正線性單元 rectified linear unit,relu 作為神經元的啟用函式。relu函式其實是分段線性函式,把所有的負值都變為0,而正值不變,這種操作被成為單側抑制。可別小看這個簡單的操作,正因為有了這單側抑制,才使得神經網路中的神經元也具有了稀疏啟用性...