тензор потока 2.0, при вызове функции задаются две переменные, но при определении функции переменные отсутствуют - PullRequest
3 голосов
/ 15 апреля 2019

Я следовал учебному пособию в tenorflow-2.0 . При определении генератора не было задано никаких переменных, но при вызове функции указываются две переменные.

def generator_model():
    model = tf.keras.Sequential()
    model.add(layers.Dense(7*7*256, use_bias=False, input_shape=(100,)))
    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


generator = generator_model()
noise = tf.random.normal([1, 100])
generated_image = generator(noise, training=False) 

Это официальный учебник на сайте tenorflow.

1 Ответ

4 голосов
/ 15 апреля 2019

def generator_model() создает и возвращает объект модели.И тогда вы можете передать данные в объект генератора для создания изображения.Здесь нет противоречия.def generator_model() только создает объект генератора, который будет использоваться позже.

Как вы можете видеть здесь https://www.tensorflow.org/api_docs/python/tf/keras/models/Sequential#call

tf.keras.Sequential() объект имеет функцию __call__, что означает, что вы можетевызовите экземпляр. ( Специальный метод Python __call__ практический пример ) И он просто оборачивает другую функцию вызова, как указано.

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