问题描述
我有一个维度为 (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 (将#修改为@)