Вопрос об увеличении размера генератора в DCGAN MNIST DEMO - PullRequest
0 голосов
/ 29 марта 2020

Я смотрю демоверсию DCGAN Mnist, но не могу понять, как принимаются решения по измерениям.

# train data has dimension of (60000, 28, 28) which each image of size 28 * 28 
BATCH_SIZE = 256
NOISE_DIMENSION = 100
...

def make_generator_model():
    model = tf.keras.Sequential()
    model.add(layers.Dense(7*7*256, use_bias=False, input_shape=(100,))) # <- 100 noise dimension
    model.add(layers.BatchNormalization())
    model.add(layers.LeakyReLU())

    model.add(layers.Reshape((7, 7, 256)))
    assert model.output_shape == (None, 7, 7, 256) # Note: None is the batch size

    model.add(layers.Conv2DTranspose(128, (5, 5), strides=(1, 1), padding='same', use_bias=False))
    assert model.output_shape == (None, 7, 7, 128)
    model.add(layers.BatchNormalization())
    model.add(layers.LeakyReLU())

    model.add(layers.Conv2DTranspose(64, (5, 5), strides=(2, 2), padding='same', use_bias=False))
    assert model.output_shape == (None, 14, 14, 64)
    model.add(layers.BatchNormalization())
    model.add(layers.LeakyReLU())

    model.add(layers.Conv2DTranspose(1, (5, 5), strides=(2, 2), padding='same', use_bias=False, activation='tanh'))
    assert model.output_shape == (None, 28, 28, 1)

    return model
  1. Почему первый Плотный слой имеет выходную форму 7,7256? Каждое изображение 28 * 28 = 7 * 7 * 4 * 4 = 7 * 7 * 16, если вход является одним изображением, было ли оно намеренно увеличено с 16 на 16x до 256? почему 16x, почему не 32x, 64x, ..et c

  2. Conv2DTranspose, я понимаю, что когда вход должен иметь ту же форму, что и выход при использовании того же заполнение с шагом 1. Если это так, то почему размерность снизилась с (None, 7, 7, 256) до (None, 7, 7, 128) с коэффициентом 2, а также это произошло в последний раз? измерение? Если это было потому, что это было число фильтров, указанное как 128, почему оно было применено к последнему измерению и почему они выбирают 128, в частности?

Следующие несколько слоев Conv2DTranspose имеют больше смысла для меня, когда я читаю его с ног на голову, и, возможно, я должен это сделать таким образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...