簡體   English   中英

給出列表和圖像作為keras模型的輸入

[英]Give a list and an image as input to a keras model

我想為GAN的keras模型提供圖像和列表。 鑒別器將獲取圖像,並且某些列表的大小都是固定的,即128x128x3和384,並且生成器將生成光盤必須標記為假的128x128x3圖像。 所以問題是我無法弄清楚鑒別器的輸入形狀以及應如何初始化。 這是最相關的初始化程序簡單代碼,需要對其進行更改以獲取圖像和列表作為輸入,其中光盤僅獲取128x128x3圖像,並且一切正常:-

arr=embeddings   #384 length long list
self.generator = self.build_generator()
z = Input(shape=(100,))
img = self.generator(z)  #gen gets noise and generates 128x128x3
self.discriminator.trainable = False
valid = self.discriminator(img)  #should get 128x128x3 image and "arr" list
self.combined = Model(z, valid)
self.combined.compile(loss='binary_crossentropy', optimizer=optimizer)

培訓代碼就是這樣,應該相應地更改:-

d_loss_real = self.discriminator.train_on_batch(pics, valid)
d_loss_fake = self.discriminator.train_on_batch(gen_pics, fake)
d_loss = 0.5 * np.add(d_loss_real, d_loss_fake)
g_loss = self.combined.train_on_batch(latent_code, valid)

光盤架構是這樣的,它的輸入層也應該這樣改變,以便它可以同時包含映像列表:

model = Sequential()
model.add(Conv2D(32, kernel_size=5, strides=2, input_shape=(128,128,3), padding="same"))
model.add(LeakyReLU(alpha=0.2))
model.add(Dropout(0.25))
model.add(Conv2D(48, kernel_size=5, strides=2, padding="same"))
model.add(BatchNormalization(momentum=0.8))
model.add(LeakyReLU(alpha=0.2))
model.add(Dropout(0.25))
model.add(Conv2D(64, kernel_size=5, strides=2, padding="same"))
model.add(BatchNormalization(momentum=0.8))
model.add(LeakyReLU(alpha=0.2))
model.add(Dropout(0.25))
model.add(Conv2D(128, kernel_size=5, strides=2, padding="same"))
model.add(BatchNormalization(momentum=0.8))
model.add(LeakyReLU(alpha=0.2))
model.add(Dropout(0.25))
model.add(Conv2D(256, kernel_size=5, strides=2, padding="same"))
model.add(BatchNormalization(momentum=0.8))
model.add(LeakyReLU(alpha=0.2))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
model.summary()
img = Input(shape=self.img_shape)
validity = model(img)
return Model(img, validity)

我確實嘗試將嵌入與圖像一起添加,但是GEN必須同時與圖像一起生成嵌入,或者GEN生成圖像,並且嵌入將合並到由129x128x3組成的圖像中,並饋送到DISC,但是在此期間初始化“ g_loss = self”。出現“ combined.train_on_batch(latent_code,valid)”錯誤,因為我必須在129,128,3的開頭指定img的形狀,並且我可以在此問題中找到與同一問題相關的更多詳細信息:-

將嵌入添加到img時的問題

任何幫助都將是很大的,我已經為此努力了好幾天。

我能想到的一種可能的解決方法是,在將生成器輸出提供給鑒別器輸入和損耗計算之前,將其嵌入到生成器輸出中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM