如何在 DCGAN 中表示条件?

问题描述

我有一个维度为 (64,) 的编码向量,作为生成图像的条件。图像生成网络是一个卷积神经网络。我如何在生成器和鉴别器中表示这种维度 (64,) 的条件以成功生成图像? 我曾尝试将 (64,) 重塑为 (8 * 8 * 1) 并将其作为通道添加生成器中生成的噪声中。对于鉴别器,我将 (64,) 转换为 (256 * 256 * 1) 并将其作为通道添加到原始图像中,用于分类真假。这是一个正确的方法还是我错过了什么。请检查以下代码。我正在研究文本到图像的生成问题。 我使用的架构是:

生成器:

noise = Input(shape = (NOISE_DIM,))
label = Input(shape = (ENCODED_DIM,))

gen = Reshape((8,8,2))(noise)

li = Reshape((8,1))(label)    

inputs = Concatenate()([gen,li])    #Output_Shape = (8,3)


x = Conv2DTranspose(512,(5,5),strides=(2,2),padding='same')(inputs)
x = Activation("tanh")(x)                    #Output_Shape = (16,16,512)
x = Conv2DTranspose(256,strides=(4,4),padding='same')(x)
x = Activation("tanh")(x)                    #Output_Shape = (64,64,256)
x = Conv2DTranspose(128,padding='same')(x)
x = Activation("tanh")(x)                    #Output_Shape = (256,256,128)
features = Conv2D(3,(7,7),activation='sigmoid',padding='same')(x)
                                             #Output_Shape = (256,3)
model = Model([noise,label],features)
model.summary()

鉴别器:

label = Input(shape = (ENCODED_DIM,))
x = Dense(256 * 256 * 1,activation = "tanh")(label)
x = Reshape((256,1))(x)

features = Input(shape=(256,3))
inputs = Concatenate()([features,x])       #Output_shape = (256,4)

x = Conv2D(512,padding='same')(inputs)
x = Activation("relu")(x)
x = Conv2D(256,padding='same')(x)
x = Activation("relu")(x)
x = Conv2D(128,padding = 'same')(x)
x = Activation("relu")(x)
x = Flatten()(x)
x = Dropout(0.4)(x)
valid = Dense(1,activation='sigmoid')(x)

model = Model([features,valid)
model.compile(loss = 'binary_crossentropy',optimizer = "adam")
model.summary()

请架构师帮忙指出错误,因为生成的图像是随机垃圾

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)