在Keras中實現生成對抗網絡(GAN)通常需要定義兩個模型:生成器和判別器。以下是一個簡單的示例:
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam
# 定義生成器模型
def build_generator():
generator = Sequential()
generator.add(Dense(128, activation='relu', input_dim=100))
generator.add(Dense(784, activation='sigmoid'))
return generator
# 定義判別器模型
def build_discriminator():
discriminator = Sequential()
discriminator.add(Dense(128, activation='relu', input_dim=784))
discriminator.add(Dense(1, activation='sigmoid'))
discriminator.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.0002, beta_1=0.5))
return discriminator
# 構建整個GAN模型
def build_gan(generator, discriminator):
discriminator.trainable = False
gan = Sequential()
gan.add(generator)
gan.add(discriminator)
gan.compile(loss='binary_crossentropy', optimizer=Adam(lr=0.0002, beta_1=0.5))
return gan
# 實例化生成器和判別器
generator = build_generator()
discriminator = build_discriminator()
# 構建GAN模型
gan = build_gan(generator, discriminator)
接下來,您可以訓練GAN模型并生成新的圖像。您可以使用真實圖像訓練判別器,并使用生成器生成假圖像。然后,通過反向傳播更新生成器和判別器的權重,使生成器生成更逼真的圖像,同時判別器更好地區分真實和假圖像。
請注意,這只是一個簡單的示例,實際上的GAN模型可能更加復雜,并且可能需要使用更深層的神經網絡來生成更逼真的圖像。您可以根據實際情況調整模型結構和超參數來獲得更好的性能。