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

时间:2018-04-18 02:16:05

标签: python deep-learning keras

我现在正在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以低分辨率生成非常好的图像,然后在网络的开头和结尾逐步添加更多层,并用新层训练整个网络。 / LI>

    这有意义吗?如果我能澄清任何内容,请告诉我,我觉得这是非常具体的问题,很难一次性解释文本。

    谢谢!

0 个答案:

没有答案