如何在先前定义的层之前插入Keras层?

2024-06-23 19:42:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Keras训练一个自动编码器,下面是网络结构。在

input_img = Input(shape=(target_size[0], target_size[1], 3))
x = Conv2D(8, (3, 3), activation = 'relu', padding = 'same')(input_img)
x = MaxPooling2D((2, 2), padding = 'same')(x)
x = Conv2D(16, (3, 3), activation = 'relu', padding = 'same')(x)
x = MaxPooling2D((2, 2), padding = 'same')(x)
x = Conv2D(32, (3, 3), activation = 'relu', padding = 'same')(x)
encoded = MaxPooling2D((2, 2), padding = 'same')(x)

x = Conv2D(32, (3, 3), padding = 'same')(encoded)
x = UpSampling2D((2, 2))(x)
x = Conv2D(16, (3, 3), activation = 'relu', padding = 'same')(x)
x = UpSampling2D((2, 2))(x)
x = Conv2D(8, (3, 3), activation = 'relu', padding = 'same')(x)
x = UpSampling2D((2, 2))(x)
decoded = Conv2D(3, (3, 3), activation = 'sigmoid', padding = 'same')(x)

我很难想出一个办法:

  1. 在定义“encoded”的地方和Conv2D层之间插入一个输入层-目的是获得两个不同图像的编码,在它们的编码之间创建一组迭代的“步骤”,然后将这些编码输入这个网络的“解码器”半部分,为每一步生成一个图像。我想制作一个gif输出“变形”从一个图像到另一个图像。在
  2. 我想在输入层后面插入另一个Conv2D(…)和MaxPooling2D(…)对,并在末尾插入相应的UpSampling2D(…)和Conv2D(…)。我从NVidia's "Progressive Growing of GANs for Improved Quality, Stability, and Variation"论文中得到了这个想法,他们训练他们的GAN以低分辨率生成非常好的图像,然后逐步在网络的开始和结尾添加更多层,并用新层训练整个网络。在

这有道理吗?请让我知道,如果我可以澄清什么,我觉得这是一个非常具体的问题,很难解释所有的文字。在

谢谢!在


Tags: 图像网络target编码imginputsizeactivation

热门问题