【问题标题】:tensorflow 2.0, when calling the function two variables given, but, when defining the function, there is no variablestensorflow 2.0,调用函数时给出了两个变量,但是,定义函数时,没有变量
【发布时间】:2019-09-04 21:35:23
【问题描述】:

我正在学习tensorflow-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) 

这是张量流网站的官方教程。

【问题讨论】:

  • 确切的错误是什么?
  • 没有报错,就是奇怪为什么可以给生成器两个变量。
  • 最好包含整个generator_model功能代码(自己编辑并包含在内)。

标签: python tensorflow deep-learning tf.keras tensorflow2.0


【解决方案1】:

def generator_model() 创建并返回模型对象。然后您可以将数据输入生成器对象以生成图像。没有矛盾。 def generator_model() 只创建稍后使用的生成器对象。

如你所见https://www.tensorflow.org/api_docs/python/tf/keras/models/Sequential#call

tf.keras.Sequential() 对象具有__call__ 函数,这意味着您可以调用实例。(Python __call__ special method practical example) 它只是包装了另一个调用函数。

【讨论】:

  • @Kit。不太清楚你的意思或暗示在这里
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-21
  • 2011-09-02
  • 2017-08-26
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
相关资源
最近更新 更多