【问题标题】:How to decide how many convolutions e deconvolutions apply to a GAN?如何决定有多少卷积和反卷积应用于 GAN?
【发布时间】:2019-10-16 22:38:00
【问题描述】:

我试图了解对抗性生成网络是如何工作的:我在 François Chollet(使用 Python 进行深度学习)的书中找到了一个示例,其中有一个 GAN 示例,他使用 CIFAR10 数据集,使用“frog” ' 包含 32x32 RGB 图像的类。

我不明白为什么:

  • 在 (1) 中,输入被转换为 16 × 16 128 通道(为什么是 128 通道?)特征图
  • 在 (2) 中,当进行卷积时,使用哪个滤波器?未指定

接下来,运行另一个 Conv2DTranspose,然后运行另一个 3 Conv2d。为什么?!

最后,我有一个 32 × 32 的 1 通道特征图。

from keras import layers
import numpy as np
latent_dim = 32
height = 32
width = 32
channels = 3

generator_input = keras.Input(shape=(latent_dim,))

(1)
x = layers.Dense(128 * 16 * 16)(generator_input)
x = layers.LeakyReLU()(x)
x = layers.Reshape((16, 16, 128))(x)

(2)
x = layers.Conv2D(256, 5, padding='same')(x)
x = layers.LeakyReLU()(x)

x = layers.Conv2DTranspose(256, 4, strides=2, padding='same')(x)
x = layers.LeakyReLU()(x)

x = layers.Conv2D(256, 5, padding='same')(x)
x = layers.LeakyReLU()(x)
x = layers.Conv2D(256, 5, padding='same')(x)
x = layers.LeakyReLU()(x)

x = layers.Conv2D(channels, 7, activation='tanh', padding='same')(x)
generator = keras.models.Model(generator_input, x)
generator.summary()

【问题讨论】:

    标签: machine-learning deep-learning artificial-intelligence generative-adversarial-network


    【解决方案1】:

    1) 这是一个任意选择,您可以为 Dense 层选择任意数量的通道。

    选择 16x16,因为步幅为 2 设置为 Conv2DTranspose,并且您希望对宽度和高度进行上采样以获得 32x32 的输出。

    步幅用于影响卷积层的输出大小。在普通卷积中,输出按与步幅相同的因子进行下采样,而在转置卷积中,它们按与步幅相同的因子进行上采样。

    例如,您可以将第一层输出更改为 8x8x128,然后在您的 Conv2DTranspose 中使用 4 的步幅,这样您将在维度方面得到相同的结果。

    还请记住,正如 François Chollet 在他的书中所述,当使用跨步转置卷积时,为了避免因像素空间覆盖不均而导致的棋盘伪影,内核大小应能被其跨步数整除。

    2) 您在Conv2DConv2DTranspose 中设置的第一个参数是卷积层生成的过滤器数量。

    如前所述,跨步 Conv2DTranspose 精确用于将宽度和高度上采样等于步幅数的因子。

    另外 3 个Conv2D 也是任意的,你应该通过实验和微调你的模型来确定它们。

    【讨论】:

      【解决方案2】:

      对于 1) 我不认为使用密集节点的数量 (128x16x16) 是有原因的,但是设置了 16x16 是因为您只有 1 层可以将 16x16 采样到 32x32。

      对于2)用于实例化Conv2D的第一个参数256定义了过滤器的数量。

      关于您的最后一个问题Next, run another Conv2DTranspose and then another 3 Conv2d. Why?!,我建议您尝试增加/减少层数,以了解模型在这些变化中的表现(表现更好与否),这是“@987654322”的一部分@" 构建神经网络时的过程。

      希望以上内容有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-07
        • 2013-06-08
        • 2016-11-11
        • 1970-01-01
        • 1970-01-01
        • 2012-11-06
        相关资源
        最近更新 更多